.NET Compiler Platform , также известная под кодовым названием Roslyn , [2] представляет собой набор компиляторов с открытым исходным кодом и API анализа кода для языков C# и Visual Basic (VB.NET) от Microsoft . [3]
В частности, проект включает в себя автономные версии компиляторов C# и VB.NET — компиляторы, написанные на самих языках. Компиляторы доступны через традиционные программы командной строки, а также в виде API, доступных непосредственно из кода .NET. Roslyn предоставляет модули для синтаксического ( лексического ) анализа кода, семантического анализа, динамической компиляции в CIL и генерации кода. [4]
Особенности Рослин включают в себя:
Кодовое имя «Рослин» было впервые написано Эриком Липпертом (бывшим инженером Microsoft [5] ) в сообщении [6] , которое он опубликовал в 2010 году с просьбой нанять разработчиков для нового проекта. Сначала он сказал, что название произошло от Рослина, штат Вашингтон , но позже в посте он иронизирует о «северном расположении» своего офиса; город Рослин был одним из мест съемок телесериала «Северная экспозиция» . [7]
Microsoft сделала предварительную версию технологии сообщества (CTP) доступной для публичной загрузки в октябре 2011 года. Она была установлена как расширение Visual Studio 2010 SP1. [8]
CTP был обновлен в сентябре 2012 года [9] и включает в себя множество обновлений API Roslyn, представленных в CTP за июнь 2012 и октябрь 2011 года, включая критические изменения. [10] Хотя API CTP от июня 2012 г. завершен для компиляторов, не все функции были реализованы для языков C# и VB.NET. [11]
На конференции Build 2014 в Сан-Франциско в апреле 2014 года Microsoft сделала проект Roslyn открытым исходным кодом и выпустила предварительную версию интеграции языка для Visual Studio 2013 . По состоянию на 3 апреля 2014 г. [обновлять]Roslyn находится под лицензией Apache версии 2.0. [3] Проект был фактически передан под управление недавно основанного .NET Foundation. [12] На той же конференции Xamarin объявила, что работает над интеграцией новых компиляторов и инструментов в Xamarin Studio . [13]
В этом выпуске компиляторы не были полнофункциональными. Каждый из компиляторов содержит функции, запланированные для следующих языковых версий (C# 6 и Visual Basic.NET 14). API также доступны через менеджер пакетов NuGet . [ нужна цитата ]
По состоянию на 2013 год [обновлять]Roslyn поддерживает VB и C#, а компиляторы написаны на соответствующих языках. [14] Первый выпуск Roslyn для производства (RTM) был выпущен в составе Visual Studio 2015 . [15]
В январе 2015 года Microsoft переместила исходный код Roslyn с CodePlex на GitHub . [16]
Традиционно компиляторы .NET были «черным ящиком» для разработчиков приложений. [17] Однако с ростом сложности и требований к анализу исходного кода в современных интегрированных средах разработки компиляторам необходимо предоставлять интерфейсы прикладного программирования (API), которые помогут разработчикам напрямую выполнять этапы компиляции, такие как анализ лексической и синтаксической структуры исходного кода. . Roslyn с самого начала разрабатывалась с этой целью. Это снижает барьер при разработке инструментов, специально предназначенных для анализа исходного кода. API Roslyn бывают трех типов: API функций, API рабочей области и API компилятора. Функциональные API позволяют разработчикам инструментов исходного кода выполнять рефакторинг и исправления кода. API рабочей области позволяют разработчикам плагинов выполнять действия, особенно необходимые в интегрированных средах разработки (IDE), таких как Visual Studio , например поиск ссылок на переменную или форматирование кода. API-интерфейсы компилятора позволяют еще более сложный анализ исходного кода, предоставляя прямые вызовы для выполнения синтаксического дерева и анализа потока привязки. [18] Используя реализацию Common Language Infrastructure (CLI) с открытым исходным кодом, такую как .NET Core , Roslyn сможет компилировать независимо от платформы способ запуска кода CLI в Linux , OS X и Windows . [ нужна цитата ]