Отношения CoreCLR и проекта Mono после того, как Microsoft открыла исходный код .NET

Может ли кто-нибудь объяснить мне, каковы текущие отношения между Mono и переносимым стеком .NET с открытым исходным кодом/Linux (CoreCLR, CoreFX, Roslyn, ASP.NET), недавно предоставленным Microsoft?

Довольно ясно, что эти проекты пересекаются, поэтому мне любопытно, какова дорожная карта для них обоих — заменит ли Mono каким-то образом свой собственный компонент новыми от Microsoft или они будут каким-то образом сосуществовать?


person nightwatch    schedule 07.02.2015    source источник


Ответы (2)


От автора Mono на Reddit:

Я думаю, что у людей неправильное представление обо всей этой ситуации с Mono/CoreCLR. Почему одна виртуальная машина становится открытым исходным кодом и портируется на другие ОС, что означает, что другая виртуальная машина не может существовать? Это все равно, что сказать, что должна быть только одна реализация Python или одна JVM. Это не очень хорошо. Конкуренция здоровая.

Mono имеет много функций, которых нет в CoreCLR: LLVM, полный AOT, NaCl, тасклеты, мост GC между виртуальными машинами, различные модули профилировщика и т. д. Время запуска Mono и объем памяти во время выполнения также оптимизированы для платформ/устройств, которые CoreCLR даже не нацелен (по крайней мере, в настоящее время). OTOH, CoreCLR имеет более зрелый GC и, как правило, лучшую генерацию кода (следовательно, более медленное время запуска). Две виртуальные машины хороши в разных вещах, и нет никаких причин, по которым обе они не могут существовать.

Мы также не настаиваем на сохранении собственного кода. Мы рады переключиться на CoreCLR/референсный исходный код, когда это дает очевидные преимущества (меньше обслуживания, более правильный, все еще достаточно переносимый). Мы уже импортировали тонны эталонного исходного кода, а также импортируем некоторые части виртуальной машины CoreCLR:
https://github.com/mono/mono/blob/master/mono/metadata/decimal-ms.c
https://github.com/mono/mono/blob/master/mono/metadata/threadpool-ms.c

От участника .NET на HN:

Используются основные библиотеки фреймворков (CoreFX) — https://github.com/dotnet/corefx. для всех сценариев .NET Core, включая .NET Native (UWP). Это означает, что ваш код делает одно и то же во всех этих различных средах, поскольку он использует одни и те же базовые библиотеки фреймворка. Отдельно проект Mono использует много одного и того же кода, а это означает, что базовая платформа для приложений Xamarin также становится более совместимой с CoreFX. Да! Мы надеемся сделать это более формальным в будущем. Мы часто говорим об этом с @migueldeicaza.

По сути, между ними происходит много совместного использования кода, и я не удивлюсь, если они сойдутся в будущем. Теперь, когда MS приобрела Xamarin, я не думаю, что они будут очень заинтересованы в поддержке двух сред выполнения.

person nawfal    schedule 28.04.2016

Я думаю, что со временем ответ может измениться, но я понимаю, что Microsoft и проект Mono будут работать вместе, или, по крайней мере, Microsoft позволит Mono работать со своим стеком .Net с открытым исходным кодом.

http://www.mono-project.com/docs/about-mono/releases/4.0.0/

Пока Microsoft работает над .NET Core: распространяемой и переосмысленной версией .NET, проект все еще находится в стадии разработки. На данный момент Mono продолжает предоставлять API, который отслеживает версию .NET для настольных компьютеров и серверов.

Это означает, что большая часть кода, который мы интегрировали, исходит из дропов ReferenceSource. В будущем мы представим «Mono Core» по тем же принципам, что и .NET Core, чтобы позволить использовать среду выполнения Mono с новой системой распространения библиотек, которая разрабатывается с помощью CoreFX.

И Мигель де Икаса (технический директор и соучредитель Xamarin и основатель проекта Mono) прокомментировал это:

http://tirania.org/blog/archive/2014/Nov-12.html

.NET находится в открытом доступе под лицензией MIT. Мало того, что код выпускается под этой весьма разрешительной лицензией, Microsoft дает патентное обещание гарантировать, что .NET получит заслуженное признание.

В частности, по двум проектам:

Mono сможет использовать столько, сколько захочет от этого проекта.

...

Microsoft заявила, что в настоящее время они не планируют возвращать исправления или участвовать в полной разработке этой кодовой базы в стиле сообщества с открытым исходным кодом, поскольку требования к обратной совместимости в Windows очень высоки.

person Community    schedule 14.04.2015