.NET Compiler Platform , также известная под кодовым названием Roslyn , [2] представляет собой набор компиляторов с открытым исходным кодом и API-интерфейсов анализа кода для языков C# и Visual Basic (VB.NET) от Microsoft . [3]
Проект в частности включает в себя самостоятельные версии компиляторов C# и VB.NET — компиляторов, написанных на самих языках. Компиляторы доступны через традиционные программы командной строки, но также как API, доступные изначально из кода .NET. Roslyn предоставляет модули для синтаксического ( лексического ) анализа кода, семантического анализа, динамической компиляции в CIL и эмиссии кода. [4]
Особенности Roslyn включают в себя:
Кодовое имя «Рослин» впервые было написано Эриком Липпертом (бывшим инженером Microsoft [5] ) в посте [6] , который он опубликовал в 2010 году, чтобы нанять разработчиков для нового проекта. Сначала он сказал, что происхождение названия связано с городом Рослин, штат Вашингтон , но позже в посте он иронично говорит о «северной экспозиции» его офиса; город Рослин был одним из мест, где снимался телесериал « Северная экспозиция ». [7]
В октябре 2011 года Microsoft сделала общедоступную предварительную версию технологии (CTP). Она устанавливается как расширение для 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 License 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 . [ требуется ссылка ]