...

вторник, 14 апреля 2015 г.

LLILC — транслятор MSIL в байткод LLVM от Microsoft

Сегодня сотрудник Microsoft анонсировал проект LLILC — новый проект для трансляции MSIL в байткод LLVM, предназначенный пока главным образом для инфраструктуры CoreCLR. В ближайшее время он может быть использован для JIT-компиляции, а в дальнейшем и для формирования прекомпилированных сборок (Ahead-of-Time) средствами .NET Native.

Несмотря на то, что в CoreCLR уже есть свой JIT, планируется расширить поддержку различных платформ за счёт LLVM. Новый JIT использует тот же набор внутренних API, что и RyuJIT и бесшовно его заменяет. Таким образом новый JIT позволит .NET-коду выполняться на всех поддерживаемых LLVM-платформах, на которые можно портировать CoreCLR.



На текущий момент реализация позволяет скомпилировать порядка 90% методов CoreCLR и откатиться к RyuJIT в остальных случаях, при этом при запуске на платформе Windows уже проходят поставляемые с CoreCLR тесты. Это связано так же с тем, что LLVM для нормальной поддержки CLR нуждается в некотором, допиливании (которое будет проводиться их же силами), без которого невозможно сделать



  • Оптимизации неявных проверок типов, нужных для типобезопасности в C#.

  • Точную сборку мусора

  • Особенности обработки исключений




Состояние проекта на текущий момент напоминает уровень поддержки LLVM в Mono, где так же потребовались патчи на LLVM и так же удаётся скомпилировать лишь часть методов (в Mono происходит откат к обычному бакэнду компиляции в случаях наличия конструкций try/catch и вызовов методов интерфейса).

This entry passed through the Full-Text RSS service - if this is your content and you're reading it on someone else's site, please read the FAQ at http://ift.tt/jcXqJW.


Комментариев нет:

Отправить комментарий