CoreRT

dotNET  /  Производительность dotNET  /  Performance  /  Deploy

TL&DR;

CoreRT — поддержка native code для .NET Core. Слишком коротко. Ладно, это проект, который делает из сборок для .NET Core машинный код. И собирает в один файл вместе с рантаймом. Пока альфа.

Если хотите чуть больше подробностей — читайте дальше.

Да, если хотите много подробностей — читайте статью CoreRT - A .NET Runtime for AOT.

О проекте

Цель проекта в том, чтобы сделать C# ещё больше похожим на Go. Шутка. Он позволяет делать приложения, которые:

  1. Распространяются в виде одного файла (и не требуют установки .NET, если он не установлен).
  2. Запускаются быстрее, за счёт отсутствия JIT (Just-in-time compilation). Этого можно было добиться и раньше с помощью NGEN.
  3. Доступны навороченные оптимизации компилятора (если сравнивать с JIT). Правда, поддержка CppCodeGen пока отстаёт от RyuJIT.

Статус

Альфа! Но, нет преград для отморозков героев :) Из того, что опубликованно на GitHub следует, что:

Особенности реализации

Многое из рантайма написано на C#. На C++ написаны критичные вещи — сборщик мусора, потоки, обработка исключений и ещё кое-что.

Если не использовать лишних зависимостей, “Hello world” получится 0.5МБ (а если использовать весь рантайм — 4МБ). Работы по минимизации размера ещё ведутся.

Для использования Reflection, придётся объявить вызовы в отдельном XML-файле. Потому что компилятор включает в файл только те типы, о которых он знает.

С генерацией кода на лету (а значит и с ASP.NET) пока всё грустно.

dotNET  /  Производительность dotNET  /  Performance  /  Deploy