本日、マイクロソフトの従業員
がプロジェクトを
発表しました
LLILC-これまで主にインフラストラクチャ向けに設計された、MSILをLLVMバイトコードに変換するための新しいプロジェクト
CoreCLR 近い将来、JITコンパイルに使用できるようになり、後に.NETネイティブツールを使用してプリコンパイルされたアセンブリ(Ahead-of-Time)を作成できるようになります。
CoreCLRには既に独自のJITがありますが、LLVMによりさまざまなプラットフォームのサポートを拡大する予定です。 新しいJITは、RyuJITと同じ内部APIセットを使用し、シームレスに置き換えます。 したがって、新しいJITにより、.NETコードは、CoreCLRを移植できるすべてのサポートされているLLVMプラットフォームで実行できます。
現時点では、この実装により、CoreCLRメソッドの約90%をコンパイルし、それ以外の場合はRyuJITにロールバックできますが、CoreCLRで提供されるテストは、Windowsプラットフォームでの起動時にすでに合格しています。 これは、通常のCLRサポート用のLLVMが何らかの仕上げ作業(独自の力で実行される)を必要とし、それなしでは不可能であるという事実も原因です。
- C#の型の安全性に必要な暗黙の型チェックの最適化。
- 正確なガベージコレクション
- 例外処理機能
現時点でのプロジェクトのステータスは、MonoのLLVMサポートレベルに似ています。
LLVMにパッチを適用し 、メソッドの一部のみをコンパイルすることもできます(Monoでは、try / catchコンストラクトとインターフェイスメソッドの呼び出しが利用可能な場合、通常のコンパイルバックエンドへのロールバックが発生します)。
既存のプロジェクトに注目する価値もあります
SharpLang。LLVMバイトコード内でMSILを含むコンパイル済み
DLLを転送し
ます 。 それは、そのカット実行時間とともに生きるという点で異なります。