Как получается, что источником Mono являются в основном С#?

Я просто посмотрел на источник Mono в первый раз, и я подумал, что найду кучу кода на C или С++, вместо этого я нашел файлы 26,192.cs и 7.cpp файлов.

Я не полностью потрясен, но это заставило меня задуматься о quesiton, который у меня всегда был в глубине души:

Как проект заканчивается тем, что он написан как "сам"?

Была ли более старая версия моно более c/С++? Или было начальное усилие создать какой-то машинный кодированный компилятор...

Какой здесь "трюк"?

Ответ 2

Вы должны искать .c файлы вместо файлов .cpp: mono runtime написан на C, а не на С++.

Ответ 3

Я также думаю, что также важно помнить, что mono - это время работы виртуальной машины (компилятор JIT, сборщик мусора и т.д.), а также коллекция библиотек классов, которые работают в этой структуре (пространство имен System.Linq, парсеров XML и т.д.).

Большинство файлов .cs, которые вы видите, являются частью библиотек классов. Это, в основном, код С#, который работает как ваш собственный код С# (за некоторыми исключениями, но в принципе для всех не имеет смысла повторно изобретать и повторно распространять колесо снова и снова, так что это библиотеки классов класса "базовый" ), Вот почему вы можете загружать сложные монопрограммы как такие небольшие размеры файлов, если mono уже установлен на компьютере.

Для моно, JIT, среда выполнения и сборщик мусора в основном написаны на C/С++, как и следовало ожидать. Если вы когда-либо получаете ошибку низкого уровня, вы часто увидите отладочные инструменты отладки GNU, как и на C, только с гораздо более полезной информацией. Структура Mono очень хороша в принятии любого кода на С# и преобразовании его в код CIL, который может работать в любом месте, и они используют любой набор инструментов, который лучше всего подходит для обеспечения того, чтобы код работал в любом месте (что в данном случае означало время выполнения компилятора C на Linux).