Mono 3.2.7が公開された。改良されたJIT,LINQ用の新しいインタプリタ,64bitネイティブ命令の使用など,数多くの新機能を備える。
5ヶ月に及ぶ開発の成果を蓄積した大規模な機能リリースだ。最大の改良点は内部的なパフォーマンス改善と最適化,互換性の向上だろう。注目すべきものをいくつか挙げると -
- ARMのHardFP ABI(Application Binary Interface)が初めてサポートされた。より新しいバージョンのLinux上でmonoが利用可能になるとともに,それらのターゲットに,よりよいコードを生成する。詳細を理解するには,HardFPとSoftFPの違いについて読んでみてほしい。
- ABCREM(Array Bound Checks Removal)最適化の64bitシステムでの動作が向上した。
- 2つの新しい最適化 - Loop Invariant Code Motion(ループ内不変式の移動)パスとAlias Analysis(エイリアス解析)。いくつかの機能において,最大20%のパフォーマンス向上を実現している。
- 64bit CAS命令が32bitシステム上でサポートされた。これにより,マルチコアでのPLINGワークロードが大きく向上している。
- 最新バージョンのLLVMを採用したことにより,高速なTLS(Thread Local Storage)アクセスコードが生成可能になった。
- GCのマイクロ最適化 - 内部データ構造の最適化,および組み込み関数(intrinsics)利用によるコアループの速度向上。
- FullAOTランタイムから利用可能なLINQおよび動的ステートメント用のインタプリタ。
- Task Awaitersによるカスタムタスクスケジューラのサポート向上。
- C#コンパイラの到達可能性およびフロー解析の大幅な向上と,それによるコード警告の改善。
リリースにはいくつかのバグ修正も含まれている。改良点の全リストはリリースノートで見ることができる。