Miguel De Icaza 氏が Mono 3.0 のリリースを発表した。いくつかの改善と .NET 4.5 互換性を備える。
Mono 3.0 は,最新の安定リリースである 2.10 のアップデートにあたる。今年初めの 2.11x プレビューリリースにあった新機能もいくつか含んでいる。主な変更点は次のとおりだ。
- C# Async コンパイラ
- Microsoft の持つオープンソースソフトウェアを統合 - ASP.NET MVC4,ASP.NET WebPages,Entity Framework,Razor,System.Json
- SGen Garbage Collector がデフォルト GC になった。マルチプロセッサをより活用することで,パフォーマンスとスケール性が向上している。SGen は Windows の他,MIPS にも移植されている。
- Eval() API で式のみでなく,型全体をコンパイルできるようになった。コンパイラ・アズ・ア・サービスもグローバルコンパイラではなくなり,複数のスコープでインスタンス化が可能になっている。
- ThreadLocal<T> や List<T>など,いくつかの型をランタイム最適化。
- パフォーマンスチューニング用に,コンパイラに対してインラインコードを強制する新しい属性を追加。
- MacOS 上で 64bit バイナリとしてコンパイル可能 (ただし提供されるのは 32bit バイナリのみ)。
- USB 機器接続のパフォーマンスの向上したソフトウェアデバッガ。
- OS X 版 Mono に F# 3.0 をバンドル。
- SQLite の実装で iOS の暗号 API がサポートされた。コンフィギュレーションによるスレッドモデルの変更も可能。
より詳細な変更内容は リリースノートで確認できる。
Miguel De Icaza 氏によれば,これらの改善点はすべて,MonoTouch と Mono For Android の両方に対して順次提供されるということだ。氏はさらに,Mono の開発に関してリリースの早期化を目指していると語り,マスタを可能な限り安定に保つため,重要な開発については別のブランチで実施後にマスターブランチにマージする方法を採用することを示唆した。
Mono を用いた開発で直面する一般的な問題のひとつに,クロスプラットフォーム UI に関する手段の欠如がある。これについて Mono チームでは今のところ,共通的なコア機能のセット上に各プラットフォーム用のネイティブなインターフェースを構築する,という方法を推奨している。氏が提案したのは,GTK#,Qyoto で C# にバインドした Qt,あるいは新しいツールキットである Xwt などを活用することだ。
この記事の執筆時点で公開されているのは OSX バイナリのみである点にも注意が必要だ。その他のプラットフォーム用バイナリはコミュニティからはまだ提供されていないが,更新ソースを使用して自身でビルドすることは可能である。