先月、Mono 3.2がリリースされた。GCの改善などが行われている。PlayScriptのようなツールの統合も行われた。CppSharpも統合作業が行われている。
SGen GCはMono 3.2でさらに改善された。とりわけ、次のような点が改善されている。
- 参照されやすいオブジェクトのワークロード。少数の新しい世代のメモリ上の位置も変えられない、参照されやすいオブジェクトは古い世代のオブジェクトから盛んに参照される。これによって大量のremembered setを作成しなければならない。これを避けるため、次の大規模コレクションが発生するまでは参照されやすいオブジェクトはなくならないようにした。
- 大量のスタックを持つスレッドのワークロード。大きなスタックを持つスレッドが大量にある場合、保守的なスキャンを実行しなければならない。これはピン付けのステージに多大な圧力を及ぼす。ピンのためのキューが大きくなってしまうからだ。これを避けるため、SGenはピンのキューにハッシュフィルタリングを採用した。これによって、ピンのキューの平均サイズは小さくなり、個別のオジェククトではなく、大きなブロックにピン付けできるようになった。
また、遅延を少なくしなければならないコードの場合には、Major Collectorを無効にできるようになった。
SGenは現在MonoのデフォルトのGCだ。
また、モバイル開発者向けには開発生産性を向上させる取り組みがなされている。
- 漸進的なビルドとアップロードによるiOS開発の改善
- モバイルのフットプリントを減らすための、機能無効化によるサイズの低減
Monoで利用できるフレームワークも改善されている。MonoにはMicrosoftがオープンソース化したさまざまなフレームワークが同梱されている。現時点でサポートしているのは、 –
- Reactive Extensions
- F#
- Razor
- Entity Framework
- ASP.NET Web Stack
他にも、
- Cocos2D XNA (Cocos2Dの移植) (Monoで動くサンプルプログラムも同梱)
- Xamarin.Auth
- Xamarin.Mobile
- Xamarin.Social
Miguel de Icaza氏は先月のMonkeySpaceカンファレンスで現在作業中の案件について話している。
- PlayScriptはZyngaが作成したフレームワークで、移植を行わなくてもモバイルとウェブで同じゲームが動作するようにする。PlayScriptのコンパイラはMonoで作られている。Monoチームは現在、統合作業を行っている。
- C++ Interopは次の2つによって推進されている。
プレゼンテーション“What is new in Mono?”とMono 3.2のリリースノートで詳細を確認できる。