Rubyでブラウザの外でwebassemblyを使い始める


良い質問はなぜブラウザの外でwebassemblyに尋ねるでしょう.私も知っている.インターネット上で検索して、私は多くの記事は、そのユーティリティについて話しているが、再開、セキュリティ、速度、移植性を発見した.
  • セキュリティは、“ホスト”の両方のブラウザからアウトに直接アクセスしていないため、それから.
  • その低レベルで速度
  • システムの不可知性による移植性
  • 簡単に言えば、以下のユースケースがあります.
  • 無力な
  • ブロックチェーン:Ethereum 2.0
  • IOT
  • ゲーム
  • 免責事項:このブログでは、Wasbassemblyについてのコアを省略するだけで簡単にして、直接“テーマを開始”を構築するために直接.ブログの終わりに、私は更なる学習のために良い説明がある多くの関連を提供します.

    webassemblyとは
    webassembly公式サイト定義として:

    WebAssembly (abbreviated Wasm) is a binary instruction format for a stack-based virtual machine. Wasm is designed as a portable compilation target for programming languages, enabling deployment on the web for client and server applications.


    この定義は以下のように簡単にできます:

    A binary code what can be run in the browser with high performance.


    明らかに、それはあまりに平らです、しかし、それは現在十分です.
    その定義は少し悪かったです、webassemblyはブラウザで動くだけでなく、ノードのような実行時に実行できます.良いパフォーマンスとセキュリティを提供するJS.

    wasmtime ?
    ブラウザからwebassembleコードを実行するには、ランタイムと呼ばれるランタイムが必要ですwasmtime . The wasmtime からのプロジェクトですBytecode Alliance コマンドラインユーティリティまたは別のプロジェクトのlibとしてwebassemblyを実行します.理論的には、WebAssembly これは、システムからの“ホスト”とAPIへのアクセスを持っていない、それはどこですWASI 出なさい.

    WASI ?
    The WASI webassemblyシステムインターフェースを表し、webassemblyのための共通のシステムレベルです.

    インストールwasmtimeLinuxディストリビューションとMacOSでは、このコマンドを実行して、手順に従ってインストールを行ってください.
    curl <https://wasmtime.dev/install.sh> -sSf | bash
    

    コンパイル
    プロジェクトは公式に維持するWASI C/C++とRustの場合.ここでは、どのように動作を実証するために錆を使用します.最初に我々はwasm32-wasi 私たちの錆コードをWASM を実行し、wasmtime
    rustup target add wasm32-wasi
    
    すべてが大丈夫なら、あなたは現在、ターゲットにRustプロジェクトをコンパイルすることができますwasm32-wasi
    cargo build --target wasm32-wasi
    
    コンパイル済みモジュールはtarget/wasm32-wasi/debug あなたが定義した名前で.
    The WASI APIは完全に現在動作していませんが、それは時間の問題です.

    走る
    単純な錆Hello Worldを実行するには、次のように実行します.
    wasmtime run target/wasm32-wasi/debug/program.wasm
    
    なしでrun
    wasmtime target/wasm32-wasi/debug/program.wasm
    
    実行中のプロセスはsandboxwasmtime アクセスディレクトリのアクセス許可と同様です.
    あなたは、あなた自身でwasmtime repository またはdocumentation
    この小さなブログが始まったばかりで、私は概念に深くはありません、しかし、私はより多くを学ぶために内容から源を提供します.
    私はそれを読んだfree course Linux財団で利用可能なEDXで.これは無料コースですので、そこに行って、それを取るともっと学ぶ.
    読書のおかげで、私はあなたがそれを好き願っています.どちらかのようなコメント、私を修正したり、ちょうど私は、あまりにも好きになると思います.

    便利なリンク
  • https://docs.wasmtime.dev/lang-rust.html
  • https://github.com/bytecodealliance/wasmtime/tree/main/docs
  • https://www.edx.org/course/introduction-to-webassembly-runtime
  • https://wasmtime.dev/
  • https://wasi.dev/
  • https://hacks.mozilla.org/2019/03/standardizing-wasi-a-webassembly-system-interface/
  • https://www.smashingmagazine.com/2019/08/beyond-browser-serverless-webassembly/
  • https://www.infoworld.com/article/3453716/bytecode-alliance-focuses-on-webassembly-outside-the-browser.html
  • https://icwe2020.webengineering.org/wp-content/uploads/2020/06/ICWE2020_keynote-David_Bryant.pdf
  • https://github.com/ewasm