Ядро .Net (GC, JIT, interop, …) в Open Source!

в 19:52, , рубрики: .net, C#, gc, opensourced, Блог компании Luxoft

Ядро .Net (GC, JIT, interop, ...) в Open Source! - 1Мы рады сообщить что CoreCLR теперь находится на github и теперь вы имеете доступ ко всем его исходным кодам. CoreCLR является средой исполнения .NET Core, выполняя такие функции как сборку мусора или компиляции в конечный машинный код. .Net Core – это модульная реализация .Net, которая может быть использована как база для огромного количества сценариев, масштабы которых варьируются от простых консольных утилит до вэб-приложений, хостящихся в облаке. Чтобы понять, чем отличается .Net Core от .Net Framework, посмотрите на пост «Введение в .Net Core»

Теперь вы можете скачивать исходники CoreCLR, бранчеваться, и делать pull requests, также вы можете компилировать его прямо на своем ПК. Мы выпустили полную и актуальную реализацию CoreCLR, которая включает RyuJIT, .Net GC, родной Interop и множество других компонент .Net runtime. Данный релиз следует тем же принципам, что и все наши последние релизы библиотек, вышедших в open-source: сделать весь .Net Framework open sourced.

Сегодня ядро .Net компилируется и отрабатывает (видимо имеется в виду CI) на Windows. Мы добавим имплементации для специфических для Mac и Linux платформенных вещей в ближайшие пару месяцев. Также мы уже имеем некоторый специфический для Linux код в .Net Core, однако мы только начали портировать с Windows на остальные платформы. Напротив, мы хотели открыть исходные тескты с самого начала, чтобы вы вместе с нами пропутешествовали бы к другим платфромам, возможно, внося свой вклад.

Посмотрим, что же внутри репозитория

Репозиторий CoreCLR по своей структуре очень похож на репозитория CoreFX, в котором многие из вас в течении последних месяцев успели поработать.Мы будем продолжать развивать оба репозитория одновременно, чтобы вы по итогы чувствовали себя естественно, находясь в поистине огромной кодовой базе.

С точки зрения размера, репозиторий CoreCLR состоит из примерно 2,6 миллионов строк кода. Причем в рамках этих рассчетов GC занимает около 55 тысяч, а сам JIT — около 320 тысяч строк. Также мы недавно поделились с вами, что CoreFX занимает 500 тысяч строк кода, что составляет около 25% от его предполагаемого итогового размера. И, страшно сказать, но когда все будет готово, мы будем иметь около 5 миллионов строк кода.на GitHub

Ядро .Net (GC, JIT, interop, ...) в Open Source! - 2

Одним из ключевых различий между репозиториями является то, что CoreFX написан на C#, тогда как CoreCLR содержит огромное количества кода как C#, так и C++. Также репозиторий CoreCLR требует огромного количества тулов для построения кода, часть из которых не идет в поставку с Visual Studio. Мы оставили зависимость на CMake, opensource и кроссплатформенную систему построения проектов. Поскольку нам была необходима система сборки, которая прекрасно бы себя чувствовала и на Windiws, и на Mac, и на Linux, мы посмотрели на различные варианты и как итог, выбрали CMake.

Вы можете узнать, как собирать CoreCLR из CoreCLR Developer Guide. Команда будет постоянно обновлять его, особенно когда Linux и Mac станут реальностью.

Мы также очень надеемся, что сообщество внесет свою лепту в развитие проекта путем создания pull requests (от переводчика: CoreFX имеет огромное количество контрибьюторов, которые постоянно пишут код для CoreFX). .Net Core из-за своего раземра работает на огромном количестве сценариев, и потому очень важно иметь большое количество тестов чтобы покрыть максимальное их количество.

Сборка приложений с .Net Core

Это очень здорово — видеть реализации .Net CoreFX и CoreCLR — в open source. И вы будете удивлены, какие типы приложений можно будет с ним построить. Есть два типа приложений, которые можно построить на текущий момент:

  • ASP.NET 5 Web-приложения и сервисы
  • Консольные приложения

Мы говорили про ASP.NET 5 приложения около года и теперь вы можете построить их используя как .Net Framework, так и CoreCLR/CoreFX. ASP.NET 5 использует mono runtime и может работать как на Mac, так и на Linux. Как только .Net Core станет поддерживать эти системы, вы сможете использовать его на этих платформах. Вы можете узнать больше, как работать с ASP.NET 5 из блога команды ASP.NET или на вэбсайте asp.net. Также, если хотите попробовать ASP.NET 5 в деле прямо сейчас, то скачайте Preview версию MS Visual Studio 2015.

Мы хотим сделать возможным построение CoreFX и CoreCLR репозиториев и использовать результаты в приложениях ASP.NET 5, но пока это не является возможным по нескольким техническим причинам, однако мы работаем над этим. Конечная цель очень комплексна: мы должны иметь возможность сочетать изменений сообщества (forks) и наши собственные изменения и получать в итоге базовый стек для ваших приложений.

Консольный тип приложений позволяет понять что такое CoreCLR. Также он предоставляет очень гибкую базу для построения абсолютно любого приложения, какое бы вы ни захотели. Наибольший процент инфраструктуры. которую мы используем для тестирования использует именно этот тип приложения. Также вы можете построить свой собственный CoreCLR и запускать приложения поверх него.

.Net Core Console Apps

На данный момент консольный тип приложений для .Net Core является побочным продуктом нашего технологического процесса. И в течении нескольких последующих месяцев мы будем формировать его как полностью готовый тип приложений, включая шаблоны кода в Visual Studio и отладчик (т.е. его нет, похоже, — прим. перев.). Также мы будем поддерживать OmniSharp для консольных приложений (кто не знает — Sumlime based IDE для .NET). Так что, скоро у вас будет полноценная возможность сборки кроссплатформенных приложений, которые будут запускаться с одного исполняемого файла.

Ниже представлена первая демка консольного приложения, запущенного под CoreCLR.

Ядро .Net (GC, JIT, interop, ...) в Open Source! - 3

Console App Walkthrough

Самый простой способ построить CoreCLR приложение — создать консольное приложение. Вы можете получить его из нашего нового corefxlab репозитория. Для того, чтобы использовать его, вы можете просто клонировать, скомпилировать и запустить с помощью командной строки:

cd .corefxlabdemosCoreClrConsoleApplicationsHelloWorld

nuget restore

msbuild

.binDebugHelloWorld.exe

Конечно же, поскольку вы склонировали репозиторий, также вы можете открыть файл *.sln в вашей копии Visual Studio. Прошу заметить что отладка пока не возможна… Но ведь она только для тех, кто делает ошибки, так?

Также вы можете модифицировать CoreCLR и запустить консольное приложение, которое будет использовать новый рантайм, который вы сами только что сделали, внеся изменения в ядро. На данный момент автоматизированной сборки не на самом высоком уровне, потому для того чтобы самостоятельно собрать ярдо, на данный момент необходимо проделать следующие шаги:

  1. Модифицируйте CoreCLR так, как этого велит ваше сердце
  2. Постройте CoreCLR при помощи build.cmd x64 release
  3. Скопируйте фалы из coreclrbinariesx64release в corfxlabdemosCoreClrConsoleApplicationsHelloWorldNotYetPackagesCoreCLR:
    1. coreclr.dll
    2. CoreConsole.exe
    3. mscorlib.dll
  4. Перекомпилируйте HelloWorld.sln

Итого

Мы готовились сделать CoreCLR открытым в течении нескольких месяцев, одновременно разрабатывая множество новых функций. Теперь у вас есть возможность наблюдать за ежедневной работой нашей команды коммит за коммитом (совершенно также, как и в CoreFX). Не стесняйтесь забрать себе репозиторий и наблюдать за этими изменениями. С нашей стороны мы будем наблюдать за списком Issues и PR чтобы иметь возможность следить за вашими пожеланиями.

Если вы взволнованы и настроены пообщаться с кем-либо, заходите на форумы .Net Foundation. Здесь вы найдете несколько веток, на которых вы можете узнать про CoreCLR получше. Также за ветками следят члены нашей команды, которые готовы отвечать на любые ваши вопросы.

У нас есть много чего, что надо сделать и следующая остановка — это .Net Conf — виртуальная конференция по .Net, которая намечена на март 2015 года и там мы надеемся показать вам хорошее демо.

Пощупать и послушать

Пощупать и послушать про новое ядро .Net CoreCLR, CoreFX вы можете на конференциях CLRium, которые пройдут в Апреле/Мае. Информация по ним доступна по ссылке ниже:

Ядро .Net (GC, JIT, interop, ...) в Open Source! - 4

Автор: sidristij

Источник

Поделиться