Stream: git-wasmtime

Topic: wasmtime / issue #9783 Get all `.wast` tests passing unde...


view this post on Zulip Wasmtime GitHub notifications bot (Dec 11 2024 at 14:24):

fitzgen edited issue #9783.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 11 2024 at 14:24):

github-actions[bot] commented on issue #9783:

Subscribe to Label Action

cc @cfallin, @fitzgen

<details>
This issue or pull request has been labeled: "isle"

Thus the following users have been cc'd because of the following labels:

To subscribe or unsubscribe from this label, edit the <code>.github/subscribe-to-label.json</code> configuration file.

Learn more.
</details>

view this post on Zulip Wasmtime GitHub notifications bot (Dec 11 2024 at 14:28):

fitzgen edited issue #9783:

Let's get all .wast tests passing under Pulley!

Pulley is Wasmtime's portable, optimizing interpreter.

This is a good first issue for new contributors that are somewhat familiar with Rust development and are excited to dive into Wasmtime/Cranelift/compilers/interpreters/etc.

Guide: How to Add Missing Instructions to Pulley and Get .wast Tests Passing

view this post on Zulip Wasmtime GitHub notifications bot (Dec 11 2024 at 14:40):

fitzgen edited issue #9783:

Let's get all .wast tests passing under Pulley!

Pulley is Wasmtime's portable, optimizing interpreter. When using Pulley, Wasmtime still uses Cranelift for optimizations, but Cranelift ultimately emits Pulley bytecode instead of machine code. Then, Wasmtime uses Pulley's interpreter to interpret the bytecode, instead of executing native machine code.

<details> <summary>Diagram of the compiler pipeline with Pulley</summary>

         +------+
         | Wasm |
         +------+
            |
            |
  Wasm-to-CLIF translation (Wasmtime)
            |
            V
         +------+
         | CLIF |
         +------+
            |
            |
   mid-end optimizations (Cranelift)
            |
            V
         +------+
         | CLIF |
         +------+
            |
            |
    ISLE lowering rules (Cranelift)
            |
            V
   +-----------------+
   | Pulley bytecode |
   +-----------------+

</details>

This is a good first issue for new contributors that are already somewhat familiar with Rust development and are excited to dive into Wasmtime/Cranelift/compilers/interpreters/etc. To help out with this effort, follow this guide:

Guide: How to Add Missing Instructions to Pulley and Get .wast Tests Passing

Note that we have docs for contributing to Wasmtime and Cranelift in general as well.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 11 2024 at 14:44):

fitzgen edited issue #9783:

Let's get all .wast tests passing under Pulley!

Pulley is Wasmtime's portable, optimizing interpreter. When using Pulley, Wasmtime still uses Cranelift for optimizations, but Cranelift ultimately emits Pulley bytecode instead of machine code. Then, Wasmtime uses Pulley's interpreter to interpret the bytecode, instead of executing native machine code.

<details> <summary>Diagram of the compiler pipeline with Pulley</summary>

         +------+
         | Wasm |
         +------+
            |
            |
  Wasm-to-CLIF translation (Wasmtime)
            |
            V
         +------+
         | CLIF |
         +------+
            |
            |
   mid-end optimizations (Cranelift)
            |
            V
         +------+
         | CLIF |
         +------+
            |
            |
    ISLE lowering rules (Cranelift)
            |
            V
   +-----------------+
   | Pulley bytecode |
   +-----------------+

</details>

This is a good first issue for new contributors that are already somewhat familiar with Rust development and are excited to dive into Wasmtime/Cranelift/compilers/interpreters/etc. To help out with this effort, follow this guide:

Guide: How to Add Missing Instructions to Pulley and Get .wast Tests Passing

Note that we have docs for contributing to Wasmtime and Cranelift in general as well.

For the most up-to-date list of which .wast tests are passing and which are failing under Pulley, see the WastTest::should_fail method in crates/wast-util/src/lib.rs.

view this post on Zulip Wasmtime GitHub notifications bot (Dec 11 2024 at 14:45):

fitzgen edited issue #9783:

Let's get all .wast tests passing under Pulley!

Pulley is Wasmtime's portable, optimizing interpreter. When using Pulley, Wasmtime still uses Cranelift (our optimizing compiler) for optimizations, but Cranelift ultimately emits Pulley bytecode instead of machine code. Then, Wasmtime uses Pulley's interpreter to interpret the bytecode, instead of executing native machine code.

<details> <summary>Diagram of the compiler pipeline with Pulley</summary>

         +------+
         | Wasm |
         +------+
            |
            |
  Wasm-to-CLIF translation (Wasmtime)
            |
            V
         +------+
         | CLIF |
         +------+
            |
            |
   mid-end optimizations (Cranelift)
            |
            V
         +------+
         | CLIF |
         +------+
            |
            |
    ISLE lowering rules (Cranelift)
            |
            V
   +-----------------+
   | Pulley bytecode |
   +-----------------+

</details>

This is a good first issue for new contributors that are already somewhat familiar with Rust development and are excited to dive into Wasmtime/Cranelift/compilers/interpreters/etc. To help out with this effort, follow this guide:

Guide: How to Add Missing Instructions to Pulley and Get .wast Tests Passing

Note that we have docs for contributing to Wasmtime and Cranelift in general as well.

For the most up-to-date list of which .wast tests are passing and which are failing under Pulley, see the WastTest::should_fail method in crates/wast-util/src/lib.rs.


Last updated: Dec 23 2024 at 13:07 UTC