PackageTrack
Sign in Get early access

walrus-macro

Internal macros used by the `walrus` crate, not for public consumption.

0.26.0 14M downloads/mo #2572 most downloaded on crates.io rustwasm/walrus

What this package is like to depend on

Last release 5 months ago

25 Mar 2026

Ships unpredictably

gaps range from 2 weeks to 3.4 years

Most releases are documented

notes for 18 of 24 stable releases

Nothing withdrawn

no release was ever pulled

8 years old

24 releases · first in 2019

3 releases in the last 12 months

see the full history below

Release timeline

24 releases · Feb 2019 to Mar 2026
2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 24
  1. 0.26.0 25 Mar 2026
    Release notes

    What's Changed

    Full Changelog: 0.25.2...0.26.0

    Open source →
  2. 0.25.0 12 Feb 2026
    Release notes

    What's Changed

    New Contributors

    Full Changelog: 0.24.4...0.25.0

    Open source →
  3. 0.24.0 22 Oct 2025

    Nothing published for this version

  4. 0.22.0 25 Sep 2024

    Nothing published for this version

  5. 0.19.0 15 Apr 2021

    Nothing published for this version

  6. 0.18.0 14 Jul 2020

    Nothing published for this version

  7. 0.17.0 18 May 2020

    Nothing published for this version

  8. 0.16.0 05 May 2020

    Nothing published for this version

  9. 0.15.0 03 Feb 2020
    Release notes

    Released 2020-02-03.

    Added

    • Added support for typed select instructions.

    Open source →
  10. 0.14.0 02 Dec 2019
    Release notes

    Open source →
  11. 0.13.0 24 Oct 2019
    Release notes

    Open source →
  12. 0.12.0 10 Sep 2019
    Release notes

    Released 2019-09-10.

    Added

    • Added support for multi-value Wasm!

    • Added ModuleExports::get_exported_{func, table, memory, global} helper functions to get an export by the id of the thing that it is exporting (if any).

    • Added fuzz testing with libFuzzer and cargo fuzz.

    Changed

    • No longer using the "derive" feature from failure, which should result in slimmer dependency graphs and faster builds.

    • Module::emit_wasm is no longer fallible. It never actually did ever return an Err and now the type signature reflects that.


    Open source →
  13. 0.11.0 13 Aug 2019
    Release notes

    Released 2019-08-13.

    Added

    • walrus::Module::write_graphviz_dot: You can now render a whole Wasm module as a GraphViz Dot file (previously you could only do one function at a time) and it will also show the relationships between all the various Wasm structures (previously it only showed the relationships between instructions).

    Changed

    • The intermediate representation for instructions (walrus::ir::*) has been overhauled. Expr has been renamed to Instr, and an operator no longer points to its operands as nested children in the AST. Instead of representing every instruction as a node in an AST, now there is a tree of instruction sequences. An instruction sequence is a vector of Instrs that relate to each other implicitly via their effect on the stack. A nested block ... end, loop ... end, or if ... else ... end form new nested instruction sequences.

    • The Visitor and VisitorMut traits and traversing the IR has also been overhauled:

      • Visitors are no longer recursive, and should never recursively call self.visit_foo() from inside self.visit_bar(). Not in the default provided trait methods and not in any user-written overrides of those trait methods.

      • There are now traversal functions which take a visitor, a LocalFunction, and a start InstrSeqId, and then perform some kind of traversal over the function's IR from the given start sequence. These traversal functions are not recursive, and are implemented with explicit work lists and while loops. This avoids blowing the stack on deeply nested Wasm inputs. Although we can still OOM, we leave fixing that to future PRs. Right now there are only two traversals, because that is all we've needed so far: an in-order DFS for immutable visitors (needs to be in-order so we can encode instructions in the right order) and a pre-order DFS for mutable visitors (pre-order is the easiest traversal to implement iteratively). We can add more traversals as we need them.

    Removed

    • The Dot trait has been made internal. Use the new walrus::Module::write_graphviz_dot method instead.

    • The Visit trait is no longer exported in the public API, and has been made internal. Use the new traversal functions instead (walrus::ir::dfs_in_order and walrus::ir::dfs_pre_order_mut).


    Open source →
  14. 0.10.0 30 Jul 2019
    Release notes

    Open source →
  15. 0.9.0 29 Jul 2019
    Release notes

    Open source →
  16. 0.8.0 05 Jun 2019
    Release notes

    Released 2019-06-05.

    Added

    • Added ModuleExports::iter_mut for iterating over exclusive references to a module's exports.

    • Added a ModuleConfig::on_parse hook, which has access to a map from indices in the original Wasm binary to the newly assigned walrus IDs. This is a good time to parse custom sections that reference functions or types or whatever by index.

    • The TableKind enum now has various unwrap_* helpers to get a particular variant's inner data or else panic.

    • Added ModuleFunctions::by_name to get a function ID by function name.

    Changed

    • The CustomSection::data trait method now has a new parameter: a map from walrus IDs to their indices in the new wasm binary we are emitting. This is useful for custom sections that reference functions or types or whatever by index.

    Open source →
  17. 0.7.0 17 May 2019
    Release notes

    Released 2019-05-17.

    Added

    • Added the walrus::ModuleCustomSections API for working with arbitrary custom sections, including and especially custom sections that walrus itself has no special knowledge of. This is exposed as the customs field of a walrus::Module.

    • Added the Module::with_config constructor method to create a default, empty module that uses the given configuration.

    Removed

    • The walrus::Module::custom vector of raw custom modules has been removed and is superceded by the new walrus::ModuleCustomSections API. If you were using this and the old CustomSection type, switch to use the RawCustomSection type with ModuleCustomSections.

    Open source →
  18. 0.6.0 02 May 2019
    Release notes

    Released 2019-05-02.

    Added

    • ModuleConfig::parse_file and Module::parse_file_with_config helper functions to easily parse a Wasm file from disk with a given configuration.

    Changed

    • ModuleConfig::parse takes &self instead of &mut self now. This was just an oversight / copy-past error before.

    Open source →
  19. 0.5.0 06 Mar 2019
    Release notes

    Open source →
  20. 0.4.0 19 Feb 2019
    Release notes

    Open source →
  21. 0.3.0 19 Feb 2019
    Release notes

    Released 2019-02-19.

    Added

    • Added support for the reference types wasm proposal. #50
    • Can finish a FunctionBuilder with the relevant &mut parts of a module, rather than a whole &mut Module. This is useful when some parts of the module are mutably borrowed elsewhere. #56
    • Can get a FunctionBuilder from an existing LocalFunction so you can build new expressions for the function. #54
    • Added the ability to delete functions, imports, exports, etc. Usually it is easier to just let the builtin GCing emit only the necessary bits of the wasm binary, but manually deleting will remove the item from iterators over the module's parts. If you delete a thing, you are responsible for ensuring that nothing else is referencing it (eg there are no remaining calls to a function that you are deleting, etc). #58
    • Added an id getter for Imports. #59
    • Added a mutable iterator for tables in a module. #59
    • Added a convenience function for getting the main function table for a module. #57

    Changed

    • The WithSideEffects expression variant can have arbitrary stack-neutral side effects before its value now, in addition to after its value. #55

    Open source →
  22. 0.2.1 14 Feb 2019
    Release notes

    Released 2019-02-14.

    Added

    • Added configuration options for controlling emission of the producers section

    Open source →
  23. 0.2.0 14 Feb 2019
    Release notes

    Released 2019-02-14.

    Added

    • Added configuration options for controlling emission of the DWARF and name custom sections.

    Changed

    • Changed the synthetic naming option from "generate_names" to "generate_synthetic_names_for_anonymous_items" to more accurately reflect what it does.

    Open source →
  24. 0.1.0 12 Feb 2019
    Release notes

    Released 2019-02-12.

    Added

    • Initial release!
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive