BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Monoを使ってC#をWebAssemblyにコンパイルする

Monoを使ってC#をWebAssemblyにコンパイルする

ブックマーク

原文(投稿日:2018/01/30)へのリンク

あなたのリクエストに応じて、ノイズを減らす機能を開発しました。大切な情報を見逃さないよう、お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう。

すべての主要なブラウザーにはWebAssemblyのサポートが含まれるため、開発者がアプリケーションが対象にする新しいプラットフォームを見ることができる。WebAssemblyグループによって提供される標準ツールチェーンは、C/C++をWebAssemblyにコンパイルする。これは開発者がほかの言語を使う開発者には役に立たない。 幸運なことにC#プログラマは、MonoプロジェクトにおいてWebAssemblyをサポートするために2つの異なるアプローチが進行中だ。

最初のアプローチは、Mono ILインタープリターを使用して、実行時に(C#のような)マネージドコードを実行する。このアプローチのゴールは、迅速なプロトタイピングと開発をサポートすることだ。2番目の方法は、アプリケーションが顧客に対して出荷準備ができているときに最適だ。このアプローチでは、WebAssemblyをサポートするブラウザーでネイティブ実行できるWASMを静的コンパイルで生成する。

これらWASMファイルを作るためにMonoプロジェクトはmono-wasmという新しいツールを導入した。これはC#アセンブリをインプットとして、LLVM WebAssemblyバックエンドで使用するLLVMビットコードを生成する。結果として、mono-wasmによって、mscorlib.dll、Cライブラリ、Monoランタイムを含めたC#プログラムの実行に必要な、すべての依存関係を含むWASMファイルが生成される。LLVMリンカは、先日WebAssemblyのサポートを追加し、mono-wasmはインクリメンタルコンパイルをサポートした。これはアプリケーション開発中に、(mscorlib.dll, Monoランタイムなどの)変更されないコードを再コンパイルする必要がないため、大幅なコンパイル時間を削減できる。

このプロジェクトでは多くの作業が完了したが、主要な開発者であるLaurent Sansonetti氏は、まだプレアルファであると指摘している。短期的には、ガベージコレクションの修正や、正式なアルファリリースなどの目標がある。長期的には、WASM実行ファイルのサイズを縮小すること("hello world"のサンプルで10MB)、Monoコンパイラの更新によりWASM32を直接ターゲットにできるようにし、C#/JavaScriptの相互運用性を向上させる。

プロジェクトは非常にアクティブに開発が進んでおり、興味がある開発者や、貢献したい開発者は、GitHub上にあるプロジェクトの現在のコードを見て欲しい。

 
 

Rate this Article

Adoption Stage
Style
 
 

この記事に星をつける

おすすめ度
スタイル

BT