Mono (ソフトウェア)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/03/08 13:01 UTC 版)
動作プラットフォーム
Monoはマルチプラットフォームであり、Linux、macOS、iOS、tvOS、watchOS、Android、Solaris、IBM AIX/IBM i、BSD (OpenBSD, FreeBSD, NetBSD)、Windows、PlayStation 4、Xbox One、Xbox Series X/Sで動作する[2][3]。
特定プラットフォーム向けに特化したサブプロジェクトも存在する。Xamarin.iOS(旧称: MonoTouch、2013年に改称)は、iPhoneやiPad、iPod touchといったiOS固有のAPIやGUIツールキットを.NET向けにラップするコンポーネントである。また、MonoTouchの技術を応用し、Mac OS Xへのネイティブ対応を行うMonoMacプロジェクトも2010年に発表された(のちにXamarin.Macに改称された)。同様に、AndroidについてはXamarin.Androidが存在する。
プロジェクトの目標
マイクロソフトはFreeBSD、Windows、Mac OS Xで動作するシェアードソースCLIというCLIの実装を公開したが、マイクロソフトのシェアードソースライセンスは商用利用が禁止されているなど、コミュニティにとって十分とはいえない。MonoプロジェクトはPortable.NETプロジェクトとさまざまな点で共通した目標を掲げている。2016年6月にマイクロソフトからMITライセンスに基づいた[4]クロスプラットフォームかつオープンソースの.NET Framework実装として.NET Coreが正式リリースされ[5][6][7]、SSCLIは存在意義を失ったが、Monoにも.NET Coreが取り込まれるなどの波及効果が表れている[8]。
Monoプロジェクトの公式発表ではないが、その主導者であるミゲル・デ・イカザの言葉として、「Cでプログラミングするには人生は短すぎる」という標語が掲げられている。[要出典]
Monoランタイム
Monoランタイムは多くのプロセッサで動作するJITコンパイラを搭載している。JITコンパイラはアプリケーションの実行中に共通中間言語 (CIL) コードをネイティブコードに変換し、それらをキャッシュする。実行前にネイティブコードに変換し、キャッシュしておくことも可能である。JITコンパイラが対応するプロセッサはx86、x86-64、IA-64、SPARC、PowerPC、ARM、S/390(32ビットおよび64ビット)、MIPSである[2]。それ以外のシステムでは、ネイティブコードに変換するのではなくインタプリタによって逐次バイトコードが実行される。ほとんどの状況で、JITコンパイラによる方法はインタプリタよりもパフォーマンスの点で勝っている。
また、SIMDへの独自対応 (Mono.Simd
) など、Mono独自の革新的な機能の取り込みも積極的に行われている。マイクロソフト純正の.NET Frameworkでは、Monoを後追いする形で、バージョン4.6にてSIMDサポートが追加された[9]。
- ^ “Mono Releases”. Mono Project. 2022年2月12日閲覧。
- ^ a b Supported Platforms | Mono
- ^ 旧バージョンではPlayStation 3やWiiもサポートされていた。
- ^ .NET Core とオープン ソース[リンク切れ]
- ^ Microsoft、「.NET Core 1.0」をリリース、ドキュメントなど関連ツールもあわせて公開:CodeZine(コードジン)
- ^ Microsoft、「.NET Core 1.0」をリリース | OSDN Magazine
- ^ core/LICENSE at 1.0.0 · dotnet/core
- ^ 「Mono 4.0」リリース、オープンソース化された.NET関連コードを初めて採用 | OSDN Magazine
- ^ .NET における数値 | Microsoft Docs
- ^ Mono 4.0.0 Release Notes
- ^ “Mono 5.0.0 Release Notes”. Mono Project (2017年5月10日). 2018年7月8日閲覧。
- ^ “Mono 5.2.0 Release Notes”. Mono Project (2017年8月14日). 2018年7月8日閲覧。
- ^ “Mono 5.10.0 Release Notes”. Mono Project (2018年2月26日). 2018年7月8日閲覧。
- ^ “Mono 5.12.0 Release Notes”. Mono Project (2018年5月8日). 2018年7月8日閲覧。
- ^ "What does the name "Mono" mean?" (英語)
- ^ ECMA-334 ドキュメント (C# 言語仕様) (英語)
- ^ ECMA-335 ドキュメント (CLI) (英語)
- ^ Compatibility - Mono (英語)
Mono (ソフトウェア)と同じ種類の言葉
- Mono (ソフトウェア)のページへのリンク