タグ

ブックマーク / zenn.dev/skanehira (3)

  • RustでWasm Runtimeを実装する

    Rustで"Hello World"を出力できる小さなWasm Runtimeをゼロから実装して、WasmとWASIの動作原理を理解するです。

    RustでWasm Runtimeを実装する
  • RustでWasm Runtimeを実装してみた

    はじめに 最近Wasmの勢いがすごくて、ブラウザでPostgreSQLを動かせたり、DockerWasmを動かせたりできます。 以前からWasm自体に興味があって、動作原理を知りたいと思ってchibiwasmというRuntimeを実装してみました。 Rustを選んだのは、最近Rustを勉強していてそれに慣れるためです。 苦労しましたが、*.wasmがどのようにして実行されるのかを理解できたので良かったです。 今回はWasmのバージョン1の仕様を満たすように実装して、テストスイートは正常系と実行時異常系のテストは通しましたが、バリデーションなどのテストはスキップしています。 また、少しだけバージョン2の命令とWASIを実装していて、RustからビルドしたHello Worldを標準出力するwasmバイナリも動きます。 記事は実装したWasm Runtimeの概要と、実装を通して学んだこと

    RustでWasm Runtimeを実装してみた
    razokulover
    razokulover 2023/04/24
    実装してみたくなった
  • Rustのライフタイム推論入門

    はじめに 「ライフタイムなんもわからん」ので、勉強した内容を整理しました。 Rust初心者なので、間違いがあったらコメントにて指摘頂けるとうれぴっぴです。 ライフタイムのおさらい Rustはすべての参照にライフタイムを持ちます。 明示的にライフタイムを指定する場合は'aのような、ライフタイムパラメータを使用する必要があります。 しかし、すべての参照にライフタイムパラメータを書くのは手間がかかるので、 一定のルールに沿ってライフタイムを推論しルール外のものはコンパイルエラーという仕様になっています。 ライフタイムパラメータを書ける場所は「ライフタイムポジション」と呼ばれ、次の場所で書くことができます。

    Rustのライフタイム推論入門
  • 1