BT

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

| 作者: Jeff Martin フォローする 8 人のフォロワー , 翻訳者 尾崎 義尚 フォローする 0 人のフォロワー 投稿日 2018年2月5日. 推定読書時間: 2 分 | ディスカッション

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

原文(投稿日: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上にあるプロジェクトの現在のコードを見て欲しい。

 

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント Watch Thread

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

InfoQにログインし新機能を利用する


パスワードを忘れた方はこちらへ

Follow

お気に入りのトピックや著者をフォローする

業界やサイト内で一番重要な見出しを閲覧する

Like

より多いシグナル、より少ないノイズ

お気に入りのトピックと著者を選択して自分のフィードを作る

Notifications

最新情報をすぐ手に入れるようにしよう

通知設定をして、お気に入りコンテンツを見逃さないようにしよう!

BT