Доступна предварительная версия Roslyn

Я невероятно рад сообщить, что проект, с кодовым именем Roslyn достаточно хорош, чтобы мы показали его пользователям!

Но я немного забегаю вперед. Что такое проект «Roslyn»?

У нас есть два основных языка для разработки на платформе .NET – C# и Visual Basic. Очевидно, что компилятору приходится выполнять значительное количество лексического, синтаксического и семантического анализа кода, во-первых, для генерации IL-кода, а, во-вторых, для анализа кода «на лету», необходимого для подсветки синтаксиса, для таких инструментов, как IntelliSense, автоматического рефакторинга и т.п. Мы делаем все это, но мы не даем возможности вам, пользователю, использовать эти механизмы напрямую. Вместо этого, вы можете лишь наблюдать за использованием всего этого командами разработчиков компилятора и IDE.

И это печально. Только лишь в компании Майкрософт легко можно найти десяток небольших лексических, синтаксических и семантических анализаторов для языков C# и VB, написанных разными командами для собственных нужд. И множество подобных инструментов разработано другими командами во всем мире. Эту задачу мы можем решить за вас и позволить использовать механизмы анализа в собственных целях.

Более того, в процессе разработки новых версий языков C# и VB, стало очевидно, что существующая инфраструктура, написанная на неуправляемом С++ перестает отвечать нашим потребностям, без существенной переработки в определенный момент времени. От инфраструктуры компилятора мы хотим как новых интересных языковых возможностей, так и более динамического способа взаимодействия с вашим кодом в процессе его написания.

Для достижения этой цели мы решили объединить команды разработчиков языков C# и VB, а затем разделили ее на две подкоманды; одна сосредоточилась на возможностях будущих версий языков C# и VB, таких как async/await, а другая – на долгосрочной разработке инфраструктуры инструментов и компиляторов. Вторая команда получила кодовое имя «Roslyn», и именно в ней я работаю в последнее время.

Сейчас код проекта Roslyn находится в достаточно стабильном состоянии, чтобы начать получать обратную связь от пользователей. Прямо сейчас вы можете скачать предварительную версию проекта Roslyn; он устанавливается в качестве расширения для Visual Studio 2010 SP1. Мы с радостью хотим получить как можно больше конструктивных комментариев, поэтому оставляйте их в форуме Roslyn. В этом случае мы будем уверены в том, что наша команда первоклассных менеджеров увидит все отзывы и обработает их правильным образом. Мы вкладываем огромные средства и хотим знать, что двигаемся в правильном направлении, чтобы разработать нечто совершенно потрясающее.

Прежде всего, мы хотим получить обратную связь по API анализа кода. API представляет собой более или менее завершенный набор классов и методов; мы не предполагаем серьезных изменений в пространствах имен Symbols , SyntaxNodes и других, если только не услышим громких криков о том, что пошли неправильным путем. Отвечают ли эти классы и методы вашим потребностям? Что вам понравилось, а что вам бы хотелось изменить?

Я хочу быть уверенным в том, что вы поняли наши ожидания правильно. Это очень ранняя пре-бета версия невероятно сложного проекта. Помните об этом, когда будете его использовать. Механизмы лексического и синтаксического анализа, на которых строится этот API, уже практически готовы. Механизм семантического анализа, который находится за API семантического анализа, не готов совсем; со стороны языка C# у нас все еще не хватает механизмов семантического анализа таких важных возможностей, как выражения запросов, атрибутов, блоков итераторов; необязательных аргументов, dynamic , async / await, небезопасного кода, а также некоторых возможностей управления потоком исполнения; с языком VB ситуация аналогична. Работают методы расширения, вывод типов методов, лямбда-выражения и обобщения, поэтому LINQ-запросы в виде синтаксиса «вызовов методов» должны работать.

Кроме того, производительность всего механизма анализа находится не на той высоте, на какой нам хотелось бы; мы выполнили некоторую оптимизацию, но еще многое осталось сделать.

Короче говоря, вы получаете наиболее раннюю версию, которую мы можем показать людям для получения нормальной обратной связи; нам еще многое предстоит сделать. Мы совсем не собираемся говорить о каких-бы то ни было датах конечного выхода продукта; если бы я даже знал, а я не знаю, то я бы не сказал, так что – не спрашивайте.

В этом релизе мы также выпускаем предварительную версию нового «интерактивного скриптового» окружения для языка C#, которое позволит экспериментировать с кодом более свободно, аналогично тому, как это возможно в языке F# и других языках поддерживающих цикл «чтения-вычисления-печати» (Read-Eval-Print Loop). Посмотрите, что это такое, и дайте нам знать, что вы об этом думаете! (К сожалению, для языка VB эта возможность пока не реализована.)

В течение последующих нескольких месяцев, я опубликую несколько сообщений с описанием интересных технологий, созданных нами для механизмов анализа кода языков C# и VB. А пока, вы можете получить дополнительную информацию о проекте Roslyn из следующих мест:

Несколько полезных блог-постов:

Дополнительные материалы:

Оригинал статьи