Mono 2.2から始め、Jonathan PryorのMono.Optionsライブラリがランタイムでシップされることになる。ライブラリ自体は、それほど注目に値するわけではない。特に多く のコマンドラインアプリケーションを記述する人にとっては、確かに便利であるが、ただそれだけではない。
それ以上を意味する。つまり、Monoはスタンダードを超えている。Monoはもはや巻き返しをしているだけでなく、多くの分野でCLRを追い越そうとし ている。そして、オープンソースプロジェクトとしてMicrosoftよりはるかに高速なクリップで、新たなライブラリを付け加えることができる。すべて を自分でビルドしようとするのではなく、Mono.Options(リンク)やコレクションライブラリC5(リンク)のような成熟したプロジェクトを選択し、それらをスタン ダードリリースに組み込む。
12月のMono 2.2のリリースで発表されたもっとも目覚しい機能拡張の1つは、SIMDに対するサポート(リンク)である。SIMDは一連のCPUコマンドであり、ベクトルの操 作を大幅に高速化することができる。文字列の各エレメントの操作を順繰りに実行する代わりに、SIMD操作を使用して16のエレメントまでのベクトルを実 行することができる。サポート済みのタイプは、以下のとおりである。
- Mono.Simd.Vector16b - 16 unsigned bytes
- Mono.Simd.Vector16sb - 16 signed bytes
- Mono.Simd.Vector2d - 2 doubles
- Mono.Simd.Vector2l - 2 signed 64-bit longs
- Mono.Simd.Vector2ul - 2 unsigned 64-bit longs
- Mono.Simd.Vector4f - 4 floats
- Mono.Simd.Vector4i - 4 signed 32-bit ints
- Mono.Simd.Vector4ui - 4 unsigned 32-bit ints
- Mono.Simd.Vector8s - 8 signed 16-bit shorts
- Mono.Simd.Vector8us - 8 unsigned 16-bit shorts
パフォーマンスの改善は著しい。Spring-Gravityアルゴリズムを使用すると、ネイティブC++プログラムは実行に9.5秒かかる。比較とし て、Monoへのリテラル変換には悲しくも17.7秒かかる。しかし、スタンダードオペレーションからSIMD機能に切り替えると、Monoを実行するた めの時間は1.7秒まで減少する。
そこで、人びとはMonoで何を計画しているのだろうか?Windows、XBox 360やiPhone向けのゲームを作成する。Channel 9のPDC 2008のビデオ(リンク)で詳細を確認することができる。