Skip to content

Get all .wast tests passing under Pulley #9783

@fitzgen

Description

@fitzgen

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.

Diagram of the compiler pipeline with Pulley
         +------+
         | Wasm |
         +------+
            |
            |
  Wasm-to-CLIF translation (Wasmtime)
            |
            V
         +------+
         | CLIF |
         +------+
            |
            |
   mid-end optimizations (Cranelift)
            |
            V
         +------+
         | CLIF |
         +------+
            |
            |
    ISLE lowering rules (Cranelift)
            |
            V
   +-----------------+
   | Pulley bytecode |
   +-----------------+

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    cranelift:E-compilerCompiler issues.cranelift:E-compiler-easyBeginner–Intermediate compiler issues.cranelift:E-easyIssues suitable for newcomers to investigate, including Rust newcomers!good first issueIssues that are good for new contributors to tackle!help wantedisleRelated to the ISLE domain-specific languagepulleyIssues related to the Pulley interpreter

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions