`wasm-snip` replaces a WebAssembly function's body with an `unreachable`

Overview

wasm-snip

wasm-snip replaces a Wasm function's body with an unreachable instruction.

Build Status Crates.io version Download docs.rs docs

API Docs | Contributing | Chat

Built with πŸ¦€ πŸ•Έ by The Rust and WebAssembly Working Group

About

wasm-snip replaces a WebAssembly function's body with an unreachable.

Maybe you know that some function will never be called at runtime, but the compiler can't prove that at compile time? Snip it! All the functions it transitively called β€” which weren't called by anything else and therefore could also never be called at runtime β€” will get removed too.

Very helpful when shrinking the size of WebAssembly binaries!

This functionality relies on the "name" section being present in the .wasm file, so build with debug symbols:

[profile.release]
debug = true

Executable

To install the wasm-snip executable, run

$ cargo install wasm-snip

You can use wasm-snip to remove the annoying_space_waster function from input.wasm and put the new binary in output.wasm like this:

$ wasm-snip input.wasm -o output.wasm annoying_space_waster

For information on using the wasm-snip executable, run

$ wasm-snip --help

And you'll get the most up-to-date help text, like:

Replace a wasm function with an `unreachable`.

USAGE:
wasm-snip [FLAGS] [OPTIONS] <input> [--] [function]...

FLAGS:
-h, --help                    Prints help information
--snip-rust-fmt-code          Snip Rust's `std::fmt` and `core::fmt` code.
--snip-rust-panicking-code    Snip Rust's `std::panicking` and `core::panicking` code.
-V, --version                 Prints version information

OPTIONS:
-o, --output <output>         The path to write the output wasm file to. Defaults to stdout.
-p, --pattern <pattern>...    Snip any function that matches the given regular expression.

ARGS:
<input>          The input wasm file containing the function(s) to snip.
<function>...    The specific function(s) to snip. These must match exactly. Use the -p flag for fuzzy matching.

Library

To use wasm-snip as a library, add this to your Cargo.toml:

[dependencies.wasm-snip]
# Do not build the executable.
default-features = false

See docs.rs/wasm-snip for API documentation.

License

Licensed under either of

at your option.

Contributing

See CONTRIBUTING.md for hacking.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Comments
  • Why not Binaryen pass?

    Why not Binaryen pass?

    Do you have any plans for adding a similar feature to https://github.com/WebAssembly/binaryen? I'm curious because it feels that this could have been implemented as a Binaryen pass. Have you looked into that as a possibility? Last I checked, Binaryen didn't have a way to pass arguments to passes (@kripken is that still true), but if that's making it difficult for developers to extend Binaryen we should add that feature.

    opened by mbebenita 8
  • Update parity-wasm requirement to 0.31.0

    Update parity-wasm requirement to 0.31.0

    Updates the requirements on parity-wasm to permit the latest version.

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Note: This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.

    You can always request more updates by clicking Bump now in your Dependabot dashboard.

    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

    dependencies 
    opened by dependabot-preview[bot] 4
  • Update regex requirement to 1.0.1

    Update regex requirement to 1.0.1

    Updates the requirements on regex to permit the latest version.

    Changelog

    Sourced from regex's changelog.

    1.0.1 (2018-06-19)

    This release upgrades regex's Unicode tables to Unicode 11, and enables SIMD optimizations automatically on Rust stable (1.27 or newer).

    New features:

    • [FEATURE #486](https://github-redirect.dependabot.com/rust-lang/regex/pull/486): Implement size_hint on RegexSet match iterators.
    • [FEATURE #488](https://github-redirect.dependabot.com/rust-lang/regex/pull/488): Update Unicode tables for Unicode 11.
    • [FEATURE #490](https://github-redirect.dependabot.com/rust-lang/regex/pull/490): SIMD optimizations are now enabled automatically in Rust stable, for versions 1.27 and up. No compilation flags or features need to be set. CPU support SIMD is detected automatically at runtime.

    Bug fixes:

    • [BUG #482](https://github-redirect.dependabot.com/rust-lang/regex/pull/482): Present a better compilation error when the use_std feature isn't used.

    1.0.0 (2018-05-01)

    This release marks the 1.0 release of regex.

    While this release includes some breaking changes, most users of older versions of the regex library should be able to migrate to 1.0 by simply bumping the version number. The important changes are as follows:

    • We adopt Rust 1.20 as the new minimum supported version of Rust for regex. We also tentativley adopt a policy that permits bumping the minimum supported version of Rust in minor version releases of regex, but no patch releases. That is, with respect to semver, we do not strictly consider bumping the minimum version of Rust to be a breaking change, but adopt a conservative stance as a compromise.
    • Octal syntax in regular expressions has been disabled by default. This permits better error messages that inform users that backreferences aren't available. Octal syntax can be re-enabled via the corresponding option on RegexBuilder.
    • (?-u:\B) is no longer allowed in Unicode regexes since it can match at invalid UTF-8 code unit boundaries. (?-u:\b) is still allowed in Unicode regexes.
    • The From<regex_syntax::Error> impl has been removed. This formally removes the public dependency on regex-syntax.
    • A new feature, use_std, has been added and enabled by default. Disabling the feature will result in a compilation error. In the future, this may permit us to support no_std environments (w/ alloc) in a backwards compatible way.
    ... (truncated)
    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Note: This repo was added to Dependabot recently, so you'll receive a maximum of 5 PRs for your first few update runs. Once an update run creates fewer than 5 PRs we'll remove that limit.

    You can always request more updates by clicking Bump now in your Dependabot dashboard.

    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot ignore this [patch|minor|major] version will close this PR and stop Dependabot creating any more for this minor/major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Pull request limits (per update run and/or open at any time)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

    dependencies 
    opened by dependabot-preview[bot] 3
  • Update walrus requirement from 0.12.0 to 0.18.0

    Update walrus requirement from 0.12.0 to 0.18.0

    Updates the requirements on walrus to permit the latest version.

    Changelog

    Sourced from walrus's changelog.

    walrus Change Log


    Unreleased

    Released YYYY-MM-DD.

    Added

    • TODO (or remove section if none)

    Changed

    • TODO (or remove section if none)

    Deprecated

    • TODO (or remove section if none)

    Removed

    • TODO (or remove section if none)

    Fixed

    • TODO (or remove section if none)

    Security

    • TODO (or remove section if none)

    0.15.0

    Released 2020-02-03.

    Added

    • Added support for typed select instructions.

    0.14.0


    0.13.0

    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    If all status checks pass Dependabot will automatically merge this pull request.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • Update walrus requirement from 0.12.0 to 0.17.0

    Update walrus requirement from 0.12.0 to 0.17.0

    Updates the requirements on walrus to permit the latest version.

    Changelog

    Sourced from walrus's changelog.

    walrus Change Log


    Unreleased

    Released YYYY-MM-DD.

    Added

    • TODO (or remove section if none)

    Changed

    • TODO (or remove section if none)

    Deprecated

    • TODO (or remove section if none)

    Removed

    • TODO (or remove section if none)

    Fixed

    • TODO (or remove section if none)

    Security

    • TODO (or remove section if none)

    0.15.0

    Released 2020-02-03.

    Added

    • Added support for typed select instructions.

    0.14.0


    0.13.0

    ... (truncated)
    Commits
    • 2f66a05 Bump to 0.17.0
    • 3b2a1b3 Update test expectations for anyref
    • 37fade0 Update wasmparser, update anyref
    • 32373b6 Try to debug failing tests on CI
    • 6fa2d6f Try to fix fuzzers
    • b20d0ee Update wasmparser requirement from 0.53.0 to 0.54.0 (#163)
    • 15cb5e3 Temporarily remove anyref test
    • 63261b4 Update wabt to need fewer --enable flags
    • f6d4b05 Update wasmparser dep
    • de28989 Update wasmparser requirement from 0.51 to 0.52
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    If all status checks pass Dependabot will automatically merge this pull request.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • Update walrus requirement from 0.12.0 to 0.16.1

    Update walrus requirement from 0.12.0 to 0.16.1

    Updates the requirements on walrus to permit the latest version.

    Changelog

    Sourced from walrus's changelog.

    walrus Change Log


    Unreleased

    Released YYYY-MM-DD.

    Added

    • TODO (or remove section if none)

    Changed

    • TODO (or remove section if none)

    Deprecated

    • TODO (or remove section if none)

    Removed

    • TODO (or remove section if none)

    Fixed

    • TODO (or remove section if none)

    Security

    • TODO (or remove section if none)

    0.15.0

    Released 2020-02-03.

    Added

    • Added support for typed select instructions.

    0.14.0


    0.13.0

    ... (truncated)
    Commits
    • 7993fa2 Bump to 0.16.1
    • 02750c3 Add some iterators/mutators
    • cc2fcd9 Update version requirement
    • c529bd2 Bump to 0.16.0
    • f5157bd Sync with the latest version of the upstream spec (#159)
    • dcbc5b6 Add LICENSE files to match Cargo.toml (#158)
    • 22ab21f Update wasmparser requirement from 0.50.0 to 0.51.0
    • aabe182 Update wasmparser requirement from 0.49.0 to 0.50.0 (#156)
    • 5edd0c2 Update wasmparser dependency
    • 121340d Implement the reference types proposal (#155)
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    If all status checks pass Dependabot will automatically merge this pull request.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • Update walrus requirement from 0.12.0 to 0.16.0

    Update walrus requirement from 0.12.0 to 0.16.0

    Updates the requirements on walrus to permit the latest version.

    Changelog

    Sourced from walrus's changelog.

    walrus Change Log


    Unreleased

    Released YYYY-MM-DD.

    Added

    • TODO (or remove section if none)

    Changed

    • TODO (or remove section if none)

    Deprecated

    • TODO (or remove section if none)

    Removed

    • TODO (or remove section if none)

    Fixed

    • TODO (or remove section if none)

    Security

    • TODO (or remove section if none)

    0.15.0

    Released 2020-02-03.

    Added

    • Added support for typed select instructions.

    0.14.0


    0.13.0

    ... (truncated)
    Commits
    • c529bd2 Bump to 0.16.0
    • f5157bd Sync with the latest version of the upstream spec (#159)
    • dcbc5b6 Add LICENSE files to match Cargo.toml (#158)
    • 22ab21f Update wasmparser requirement from 0.50.0 to 0.51.0
    • aabe182 Update wasmparser requirement from 0.49.0 to 0.50.0 (#156)
    • 5edd0c2 Update wasmparser dependency
    • 121340d Implement the reference types proposal (#155)
    • bcec920 Bump to 0.15.0
    • 1b5b2a7 Update wasmparser requirement from 0.45 to 0.48
    • b0068fc Update a number of dependencies (#152)
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    If all status checks pass Dependabot will automatically merge this pull request.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • Update walrus requirement from 0.12.0 to 0.15.0

    Update walrus requirement from 0.12.0 to 0.15.0

    Updates the requirements on walrus to permit the latest version.

    Changelog

    Sourced from walrus's changelog.

    0.15.0

    Released 2020-02-03.

    Added

    • Added support for typed select instructions.

    0.14.0


    0.13.0


    0.12.0

    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.


    0.11.0

    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)
    ... (truncated)
    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    If all status checks pass Dependabot will automatically merge this pull request.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • Update walrus requirement from 0.12.0 to 0.14.0

    Update walrus requirement from 0.12.0 to 0.14.0

    Updates the requirements on walrus to permit the latest version.

    Changelog

    Sourced from walrus's changelog.

    walrus Change Log


    Unreleased

    Released YYYY-MM-DD.

    Added

    • TODO (or remove section if none)

    Changed

    • TODO (or remove section if none)

    Deprecated

    • TODO (or remove section if none)

    Removed

    • TODO (or remove section if none)

    Fixed

    • TODO (or remove section if none)

    Security

    • TODO (or remove section if none)

    0.12.0

    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

    ... (truncated)
    Commits

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    If all status checks pass Dependabot will automatically merge this pull request.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • Update walrus requirement from 0.12.0 to 0.13.0

    Update walrus requirement from 0.12.0 to 0.13.0

    Updates the requirements on walrus to permit the latest version.

    Changelog

    Sourced from walrus's changelog.

    walrus Change Log


    Unreleased

    Released YYYY-MM-DD.

    Added

    • TODO (or remove section if none)

    Changed

    • TODO (or remove section if none)

    Deprecated

    • TODO (or remove section if none)

    Removed

    • TODO (or remove section if none)

    Fixed

    • TODO (or remove section if none)

    Security

    • TODO (or remove section if none)

    0.12.0

    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

    ... (truncated)
    Commits
    • f05f89a Bump to 0.13.0 (#135)
    • 7d2007d Merge pull request #71 from yurydelendik/debuginfo
    • 9d77db2 Track original wasm instructions location
    • c54470a Merge pull request #134 from lshlyapnikov/master
    • fe336d1 Add name to FunctionBuilder
    • d4f84ea Switch from failure to anyhow (#133)
    • 102c133 Merge pull request #132 from fitzgen/invalid-if-with-no-else
    • e683578 Add a test for an invalid, result-producing if with no else
    • 6bc4740 Merge pull request #131 from fitzgen/ci-and-stuff
    • d015065 fuzz: run the GC pass when fuzzing
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    If all status checks pass Dependabot will automatically merge this pull request.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 2
  • Update walrus requirement from 0.11.0 to 0.12.0

    Update walrus requirement from 0.11.0 to 0.12.0

    Updates the requirements on walrus to permit the latest version.

    Changelog

    Sourced from walrus's changelog.

    0.12.0

    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.


    0.11.0

    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
    ... (truncated)
    Commits
    • d8bb0a6 Merge pull request #127 from fitzgen/bump-to-0.12.0
    • 6d2a163 CI: limit max RSS for libFuzzer since it is OOMing in CI
    • 0202337 Bump to version 0.12.0
    • adb9c2b Remove very old todos file
    • ab49687 Fixing errors reported by cargo clippy (#126)
    • da63e75 Merge pull request #124 from fitzgen/multi-value
    • 3c0b187 ci: Print some fuzz logs so that CI doesn't time out
    • e79b0de Make the raw fuzzing target assert deterministic serialization
    • b8ce4a1 Module::emit_wasm is infallible
    • df2403d Sort types deterministically before emitting them
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    If all status checks pass Dependabot will automatically merge this pull request.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)

    Finally, you can contact us by mentioning @dependabot.

    dependencies 
    opened by dependabot-preview[bot] 2
  • Update clap requirement from 2.33.0 to 4.0.32

    Update clap requirement from 2.33.0 to 4.0.32

    Updates the requirements on clap to permit the latest version.

    Release notes

    Sourced from clap's releases.

    v4.0.32

    [4.0.32] - 2022-12-22

    Fixes

    • (parser) When overriding required(true), consider args that conflict with its group
    Changelog

    Sourced from clap's changelog.

    [4.0.32] - 2022-12-22

    Fixes

    • (parser) When overriding required(true), consider args that conflict with its group

    [4.0.31] - 2022-12-22

    Performance

    • Speed up parsing when a lot of different flags are present (100 unique flags)

    [4.0.30] - 2022-12-21

    Fixes

    • (error) Improve error for args_conflicts_with_subcommand

    [4.0.29] - 2022-11-29

    [4.0.28] - 2022-11-29

    Fixes

    • Fix wasm support which was broken in 4.0.27

    [4.0.27] - 2022-11-24

    Features

    • Have Arg::value_parser accept Vec<impl Into<PossibleValue>>
    • Implement Display and FromStr for ColorChoice

    Fixes

    • Remove soundness issue by switching from atty to is-terminal

    [4.0.26] - 2022-11-16

    Fixes

    • (error) Fix typos in ContextKind::as_str

    [4.0.25] - 2022-11-15

    Features

    • (error) Report available subcommands when required subcommand is missing

    [4.0.24] - 2022-11-14

    ... (truncated)

    Commits
    • ec4ccf0 chore: Release
    • 13fdb83 docs: Update changelog
    • b877345 Merge pull request #4573 from epage/conflict
    • 85ecb3e fix(parser): Override required when parent group has conflict
    • d145b8b test(parser): Demonstrate required-overload bug
    • 0eccd55 chore: Release
    • 1e37c25 docs: Update changelog
    • dcd5fec Merge pull request #4572 from epage/group
    • dde22e7 style: Update for latest clippy
    • dd8435d perf(parser): Reduce duplicate lookups
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • Update assert_cmd requirement from 1.0.0 to 2.0.7

    Update assert_cmd requirement from 1.0.0 to 2.0.7

    Updates the requirements on assert_cmd to permit the latest version.

    Changelog

    Sourced from assert_cmd's changelog.

    [2.0.7] - 2022-12-02

    [2.0.6] - 2022-11-04

    Fixes

    • Hide internal-only optional dependencies

    [2.0.5] - 2022-10-20

    Features

    • Added AssertError::assert

    [2.0.4] - 2022-01-13

    Fixes

    • Improved Debug output

    [2.0.3] - 2022-01-11

    [2.0.2] - 2021-10-07

    [2.0.1] - 2021-09-06

    Fixes

    • Show caller for panic, rather than assert_cmd

    [2.0.0] - 2021-08-05

    Breaking Changes

    • Assert::append_context now requires a Send+Sync context, to be compatible with being put in error types

    [1.0.8] - 2021-07-31

    Features

    • try variants of asserts to get an error instead

    [1.0.7] - 2021-07-03

    [1.0.6] - 2021-07-01

    Fixes

    • Links in docs

    ... (truncated)

    Commits
    • 5b0e522 chore: Release assert_cmd version 2.0.7
    • 2cd8f58 Merge pull request #156 from assert-rs/renovate/actions-setup-python-4.x
    • fe19d0c chore(deps): update actions/setup-python action to v4
    • 130c918 Merge pull request #155 from assert-rs/renovate/actions-checkout-3.x
    • cab9d73 Merge pull request #157 from assert-rs/renovate/pre-commit-action-3.x
    • f8cb899 Merge pull request #158 from assert-rs/renovate/swatinem-rust-cache-2.x
    • 8e8c6ff Merge pull request #159 from assert-rs/renovate/concolor-0.x
    • 6df1cc7 chore(deps): update rust crate concolor to 0.0.11
    • 5add4fb chore: Iterate on renovate
    • f257e9b chore(deps): update swatinem/rust-cache action to v2
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • feat: add option to strip exports except argument

    feat: add option to strip exports except argument

    • keep-export (-k) keeps export and removes others
    • keep-export-pattern (-x) keeps exports matching pattern

    Since there is GC pass at the end, this will strip away all exports not referenced by the exports kept. This is useful for cleaning up .wasm files generated with extra exports then are needed.

    I still need to update the documentation, but I wanted to first know if this is a welcomed feature, otherwise I can strip this out to a separate tool.

    opened by willemneal 0
  • Update walrus requirement from 0.12.0 to 0.19.0

    Update walrus requirement from 0.12.0 to 0.19.0

    ⚠️ Dependabot Preview has been deactivated ⚠️

    This pull request was created by Dependabot Preview, and you've upgraded to Dependabot. This means it won't respond to dependabot commands nor will it be automatically closed if a new version is found.

    If you close this pull request, Dependabot will re-create it the next time it checks for updates and everything will work as expected.


    Updates the requirements on walrus to permit the latest version.

    Changelog

    Sourced from walrus's changelog.

    walrus Change Log


    Unreleased

    Released YYYY-MM-DD.

    Added

    • TODO (or remove section if none)

    Changed

    • TODO (or remove section if none)

    Deprecated

    • TODO (or remove section if none)

    Removed

    • TODO (or remove section if none)

    Fixed

    • TODO (or remove section if none)

    Security

    • TODO (or remove section if none)

    0.15.0

    Released 2020-02-03.

    Added

    • Added support for typed select instructions.

    0.14.0


    0.13.0

    ... (truncated)

    Commits
    • 2d84f43 Bump to 0.19.0 (#208)
    • 75d4728 Fill out the rest of the SIMD proposal (#207)
    • 990fa4c Bump wasmparser + support emitting multiple memories MemArgs (#206)
    • 18aed0e Update wasmparser requirement from 0.66.0 to 0.67.0
    • df6d640 Update wasmparser requirement from 0.65.0 to 0.66.0
    • 132bdd6 Merge pull request #185 from alexcrichton/update-wasmparser
    • f651d1d Update wabt on CI
    • a3835e0 Update spec tests submodule
    • 23ebe41 Update wasmparser and pick up new SIMD instructions
    • 7c9671f Update env_logger requirement from 0.7.0 to 0.8.1 (#182)
    • Additional commits viewable in compare view

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.

    If all status checks pass Dependabot will automatically merge this pull request.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language
    • @dependabot badge me will comment on this PR with code to add a "Dependabot enabled" badge to your readme

    Additionally, you can set the following in your Dependabot dashboard:

    • Update frequency (including time of day and day of week)
    • Pull request limits (per update run and/or open at any time)
    • Automerge options (never/patch/minor, and dev/runtime dependencies)
    • Out-of-range updates (receive only lockfile updates, if desired)
    • Security updates (receive only security updates, if desired)
    dependencies 
    opened by dependabot-preview[bot] 0
  • Wasm SIMD support is missing or broken

    Wasm SIMD support is missing or broken

    Describe the Bug

    wasm-snip fails to parse Wasm that contains SIMD instructions such as v128:

    error: failed to parse code section
      caused by found type v128
      caused by expected type i32
      caused by The input WebAssembly is invalid
    

    Steps to Reproduce

    1. Take a Wasm file that uses SIMD instructions (example: https://ameo.link/u/8oc.wasm)
    2. Use it as input for wasm-snip: wasm-snip 8oc.wasm

    Additional Context

    This might just be a matter of bumping the wasm parsing libraries. However, some other Wasm tooling I use wasm-opt and wasm2wat both require special command line arguments to be passed in order to deal with SIMD.

    bug 
    opened by Ameobea 1
  • Text was not valid unicode error

    Text was not valid unicode error

    When trying to execute wasm-snip on my project, I'm getting this error:

     wasm-snip target/wasm32-unknown-unknown/release/wasmboy_zip.wasm
     asmβ•”   β•”error: I/O Error: text was not valid unicode
    

    This seems to happen with any configuration / flag combination I try to use it with.

    bug 
    opened by CryZe 4
Owner
Rust and WebAssembly
πŸ¦€ + πŸ•ΈοΈ = πŸ’–
Rust and WebAssembly
Mod_wasm - an extension module for the Apache HTTP Server (httpd) that enables the usage of WebAssembly (Wasm).

mod_wasm is an extension module for the Apache HTTP Server (httpd) that enables the usage of WebAssembly (Wasm). This module will allow to execute certain tasks in the backend in a very efficient and secure way.

VMware  Labs 67 Dec 21, 2022
Low level tooling for WebAssembly in JavaScript using wasm-tools

js-wasm-tools js-wasm-tools compiles some of the API of wasm-tools to JavaScript and WebAssembly via wasm-bindgen. This offers low level tooling for W

Dominic Elm 59 Dec 19, 2022
Distribute a wasm SPA as HTML by wrapping it as a polyglot "html+wasm+zip"

A packer that adds a webpage to WASM module, making it self-hosted! Motivation At the moment, Browsers can not execute WebAssembly as a native single

Andreas Molzer 3 Jan 2, 2023
Safe Rust bridge for creating Erlang NIF functions

Rustler Documentation | Getting Started | Example Rustler is a library for writing Erlang NIFs in safe Rust code. That means there should be no ways t

Rusterlium 3.5k Jan 7, 2023
A rust library containing typings and utility functions dealing with the Public specification of the Internet Computer.

IC Types Contributing Please follow the guidelines in the CONTRIBUTING.md document. Goal This library contains typings and utility functions dealing w

DFINITY 5 Nov 28, 2022
Unstable wrapper API for winapi's Console Functions

maulingmonkey-console-winapi-wrappers Unstable wrapper API for winapi's Console Functions Quickstart # Cargo.toml [dependencies] maulingmonkey-console

null 3 Nov 26, 2021
Call Swift functions from Rust with ease!

swift-rs Call Swift functions from Rust with ease! Setup After adding swift-rs to your project's Cargo.toml, some setup work must be done. Ensure your

null 68 Dec 26, 2022
A collection of unsound rust functions using entirly *safe* code

A collection of unsound rust functions using entirly *safe* code

null 2 Sep 6, 2022
Pedersen hashing functions with JS <> Rust interoperability

Pedersen Hash This library exposes the following functions: pub fn pedersen(x: &str, y: &str) -> String: Geometry version. pub fn starknet_pedersen(x:

Herodotus 2 Nov 17, 2022
πŸ“¦βœ¨ your favorite rust -> wasm workflow tool!

?? ✨ wasm-pack Your favorite Rust β†’ Wasm workflow tool! Docs | Contributing | Chat Built with ?? ?? by The Rust and WebAssembly Working Group About Th

Rust and WebAssembly 4.8k Jan 5, 2023
Facilitating high-level interactions between Wasm modules and JavaScript

wasm-bindgen Facilitating high-level interactions between Wasm modules and JavaScript. Guide | API Docs | Contributing | Chat Built with ?? ?? by The

Rust and WebAssembly 5.9k Jan 8, 2023
WebAssembly implementation from scratch in Safe Rust with zero dependencies

wain wain is a WebAssembly INterpreter written in Rust from scratch with zero dependencies. An implementation of WebAssembly. Features: No unsafe code

Linda_pp 328 Jan 2, 2023
A notebook app integrated with todo lists utility. Developed with Rust, WebAssembly, Yew and Trunk.

Flow.er A notebook app integrated with todo-list utility. Project flow.er is a Rust WASM app running in browser. Taking advantage of Yew and Trunk, it

null 45 Dec 31, 2022
NPM package distributing biscuit in WebAssembly for web components

Biscuit playground This is an example application for Biscuit tokens, where you can manipulate tokens and their verification in your browser. build wi

null 0 Dec 30, 2021
Gun port in rust & wasm

gun-rs-wasm Rust & WASM port of Gun. For a non-wasm version, check out gun-rs Example (source) Use npm install rusty-gun import { Node as Gun } from "

Martti Malmi 39 Dec 19, 2022
witgen is a library to generate .wit files for WebAssembly in Rust

witgen witgen is a library to help you generate wit definitions in a wit file for WebAssembly. Using this lib in addition to wit-bindgen will help you

Coenen Benjamin 28 Nov 9, 2022
Install `wasm-pack` by downloading the executable

wasm-pack-action Install wasm-pack by downloading the executable (much faster than cargo install wasm-pack, seconds vs minutes). Usage - uses: jetli/w

Jet Li 33 Nov 23, 2022
Build frontend browser apps with Rust + WebAssembly. Supports server side rendering.

Percy Build frontend browser apps with Rust + WebAssembly. Supports server side rendering. The Percy Book This README gives a light introduction to Pe

Chinedu Francis Nwafili 2.1k Jan 1, 2023
gc-sections for wasm

wasm-gc Note: you probably don't need to use this project. This project is no longer necessary to run by hand, nor do you need the wasm-gc executable

Alex Crichton 245 Oct 22, 2022