Существует ли CLR, которая работает в среде CLR?

Мне было интересно, есть ли .NET-совместимая среда CLR, которая была реализована с использованием CLI (общая языковая инфраструктура), например, с использованием самой .NET или, по крайней мере, если бы были какие-то ресурсы, которые поможет с его построением.

В принципе, что-то вроде .NET-программы, которая загружает сборки как MemoryStreams, анализирует байт-код, строит типы и выполняет инструкции. Необязательно, он может JIT-компилировать в стандартный IL с использованием Reflection.Emit или, однако.

Я не хочу компилировать язык .NET, который будет запущен исходной CLR. Я хочу, чтобы CLR, написанный на .NET-языке (не неуправляемый С++ или C, как обычно) , и запускает CIL. Если все сделано правильно, он должен иметь возможность запускаться сам.

Любые мысли об использовании Mono.Cecil для такого рода вещей?

Ответ 1

Я не думаю, что в настоящее время существуют автономные виртуальные машины .net, которые являются самостоятельным хостингом, но Cosmos и SharpOS - это время выполнения .net, написанное на С#.

Возможно повторное использование некоторых из их кода во время выполнения для дополнительного автономного времени выполнения. Космос может использоваться для размещения пользовательского приложения при загрузке: http://www.codeproject.com/KB/system/CosmosIntro.aspx

Ответ 2

Вы должны проверить IKVM.NET Project. Он включает в себя виртуальную машину Java, написанную на .NET.

http://www.ikvm.net/

Я знаю, что это не настоящая CLR, которая работает поверх CLR, но это самое близкое, что я знаю о том, что делает то, что вы хотите.

Ответ 3

Я не знаю об этом, но идеи frm JVM, работающие на JVM, должны быть полезными.

Ответ 4

Если вы хотите расширить свое определение "запускает CIL" на "JIT-Compiles CIL to Native Code", тогда вы должны посмотреть Управляемый альянс операционных систем - группа людей (включая меня), работающих над созданием исполняемых частей, необходимых для записи управляемого ядра операционной системы.

В настоящее время еще немного осталось сделать, но JIT-компиляция и запуск простых методов (только для Win32 - мы в настоящее время используем P/Invoke для создания буферов исходного кода)

Ответ 5

В принципе возможно объединение технологий:

  • Jikes RVM - это реализация Java Virtual Machine, написанная на Java.
  • IKVM.NET, реализация платформы Java на .NET.

Можно также взять Mono, скомпилировать байт-код LLVM, скомпилировать байт-код в Javascript, используя Emscripten и запустить Javascript в .NET с использованием любого из разных интерпретаторов.