Roslyn — это платформа компилятора, позволяющая создавать инструменты статического и динамического анализа, а также пользовательские языковые расширения и преобразования для языков программирования C# и VB. Она также позволяет встраивать эти языки в другие языки или приложения. Roslyn включает компиляторы C# и VB и другие инструменты. Эти компиляторы выдают код Common Intermediate Language (CIL).
Чтобы запустить этот код, CIL должен быть скомпилирован в двоичный код, который может выполнить архитектура целевого компьютера. В настоящее время .NET предоставляет три способа сделать это:
- Скомпилируйте CIL-код в двоичный код с помощью JIT-компилятора во время работы приложения. Эта модель реализована CoreCLR. CoreCLR начинался как копия CLR. Он был модифицирован для поддержки различных ОС. Они поддерживаются отдельно и параллельно.
- Скомпилируйте CIL-код в двоичный код и интегрируйте все необходимые компоненты .NET Framework, чтобы создать однофайловый автономный исполняемый файл, производительность которого ближе к коду, написанному на родных языках. Эта технология называется .NET Native. CoreRT — это реализация этой технологии с открытым исходным кодом. Основное различие между .NET Native и CoreRT заключается в том, что компилятор AOT, который использует первый, — это компилятор UTC (серверная часть компилятора MSVC), а второй в настоящее время использует RyuJIT. UTC гораздо агрессивнее оптимизирует код, чем RyuJIT. Также в CoreRT некоторые компоненты среды выполнения были заново реализованы на C#. CoreCLR по-прежнему использует реализацию C++.
- NGEN, который похож на .NET Native, за исключением того, что создаваемые исполняемые файлы не являются автономными и требуют установленной извне среды выполнения.
LLILC — это компилятор CIL, основанный на переносимой структуре компилятора LLVM. Его можно использовать для создания компиляторов JIT (текущий) и AOT (будущий). Преимущество этого компилятора заключается в том, что он использует оптимизацию компилятора Clang C++ и переносит модель расширяемости LLVM (проходы анализа и оптимизации) в .NET.
CoreRT и LLILC — это новые проекты, которые все еще находятся на ранней стадии разработки и требуют гораздо больше работы для поддержки производственных приложений. Так что, если вы пользователь, а не участник, CoreCLR и Roslyn для вас. Опять же, CoreCLR — это среда выполнения, а Roslyn — это компиляторы C# и VB.
person
Hadi Brais
schedule
27.01.2016