Доступна предварительная версия 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 из следующих мест:
- The Roslyn Community Technology Preview download site
- Форум Roslyn для вопросов и обратной связи
- Visual Studio Connect для советов и сообщений об ошибках
- Roslyn CTP Twitter feed
Несколько полезных блог-постов:
- Сома о проекте Roslyn
- C# Team Blog о Roslyn
- VB Team Blog о Roslyn
- Visual Studio Team Blog о Roslyn
- Shyam о создании синтаксических анализаторов с помощью Roslyn
Дополнительные материалы:
- Roslyn в Вики
- Мы назвали этот проект «Roslyn», потому что мои окна выходят на север. Ха-ха-ха!