Skip to content

Performance #62

Description

@Kronos3

There has been little effort put into optimizing the the IR to produce fast executable bytecode. Some ideas that we should try similar to Wasmi, wasm3, wamr-fast, wasmtime. I've sorted these in sort of priority and feasibility:

  1. Register-based IR. The idea here is to drop local_get and local_set to write directly to/from the stack as well as operate directly from the stack for other instructions. Wasmi has done a lot of great work in this area, we should see if we can leverage this and still maintain decoding in a single streamed-pass.
  2. I'm hesitant around the wasm3 approach since it sort of breaks the "no native stack" requirement of the interpreter but we should look at it closer to validate that assumption. This may also depend on Explicit Tail Calls rust-lang/rfcs#3407.
  3. Wasmtime has the Cranelift single-pass JIT winch. This would probably imply a ground up implementation. This is a separate proposal on it's own but I'm folding it in here as a long term idea.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Post-v1.0Issues and features that will not be addressed until after 1.0 Release

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions