Ответ 1
Я думаю, что люди ошибаются в отношении всей ситуации Mono/CoreCLR. Почему одна виртуальная машина становится открытым исходным кодом и переносится в другие ОС, означает, что другая виртуальная машина не может существовать? Это будет похоже на то, что должна быть только одна реализация Python или одна JVM. Это нехорошо. Конкурс здоров.
В Mono есть много функций, которые CoreCLR не делает: LLVM, полный AOT, NaCl, тасклеты, кросс-мост GC-моста, различные модули профилировщика и т.д. Моновое время запуска и время работы памяти также оптимизированы для платформ /devices, которые CoreCLR не являются (по крайней мере в настоящее время) даже таргетингом. OTOH, CoreCLR имеет более зрелый GC и, как правило, лучшее генерирование кода (следовательно, более медленное время запуска). Две виртуальные машины хороши в разных вещах, и нет причин, по которым они не могут существовать.
Не похоже, чтобы мы также настаивали на сохранении нашего собственного кода. Мы с удовольствием перейдем к исходному коду CoreCLR/reference, когда есть явные преимущества для этого (меньше обслуживания, более корректного, еще достаточно портативного). Мы уже импортировали тонны исходного исходного кода, и мы также импортируем определенные части ядра 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
Библиотеки основных фреймворков (CoreFX) - https://github.com/dotnet/corefx - используются для всех сценариев .NET Core, включая .NET Native (UWP), Это означает, что ваш код делает то же самое во всех этих разных средах, поскольку он использует одни и те же базовые библиотеки. Отдельно, проект Mono использует много одного и того же кода, а это значит, что базовая платформа для приложений Xamarin становится более совместимой с CoreFX. Yeahh! Мы надеемся сделать это более формальным в будущем. Мы часто общаемся с @migueldeicaza.
В основном существует много обмена кодами между ними, и я не удивлюсь, если они сгущаются в будущем. Теперь, когда MS приобрела Xamarin, я не думаю, что они будут очень заинтересованы в поддержании двух режимов работы.