Change Log

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Changelog entries will contain a link to the pull request implementing that change, where applicable.

Note: The project was renamed from wit-pack to wasmer-pack in version 0.5.0. Changelog entries from 0.4.2 and earlier use the old name.

Unreleased - ReleaseDate

0.7.2 - 2024-02-12

0.7.2 - 2024-02-12

0.7.2 - 2024-02-12

0.7.2 - 2024-02-12

0.7.2 - 2024-02-12

0.7.2 - 2024-02-12

0.7.2 - 2024-02-12

Changed

  • Allow packages with . in their names. This is useful for packages my-website.com. Internally, the . is converted into a - to make it a valid binding name.

Added

  • Added ability to pass in a user-specified name for the generated bindings. This can be done by passing in the --name flag in the CLI or by passing the name option when calling the generate_* functions.

Fixed

  • Fixed the python-wasi test in wasmer-pack crate to use poetry instead of pipenv. This is because poetry is used everywhere else, except in this one place.

  • Fixed flaky integration tests by specifying a valid webc file for wasmer-pack in both test_wasmer_pack.py (pytest) and index.test.ts (jest)

  • Pass in BindingsOptions by reference so it's easier to implement builder pattern later on.

0.7.1 - 2023-06-12

Added

  • Upgraded the webc crate to 5.0.4 so we now have support for *.webc files in both the v1 and v2 formats (#131)

Changed

  • Raised the MSRV from 1.64.0 to 1.67.0 to match wapm-targz-to-pirita (#131)

Fixed

  • Fixed the "Releases" job in CI so wasmer/wasmer-pack-cli would be published and not just wasmer/wasmer-pack (#124)

0.7.0 - 2023-02-10

💥 Breaking Changes 💥

  • Restructured the wasmer/wasmer-pack WAPM package's API (#118)
    • The Package type has been changed from a record to a resource with methods
    • There are now convenience functions for loading a Package from known binary formats (e.g. WEBC)

Added

  • Moved the logic for loading a wasmer_pack::Package from a WEBC binary out of wasmer-pack-cli into the main wasmer-pack crate (#118)

Fixed

  • Replaced the naive ABI detection routine with something that properly checks which namespaces are imported by a module (#118)

Removed

  • Removed the TestEnvironment construct from wasmer-pack-testing in favour of the autodiscover() tests (#121)

0.6.0 - 2022-12-28

Added

  • Generated JavaScript packages can now import host functions (#109)
  • Introduce the wasmer-pack-testing crate for testing generated bindings (#112)
  • Generated Python packages can now import host functions (#113)

Changed

  • Renamed wasmer-pack's sub-commands to be called javascript and python, with js and py as aliases (i.e. running wasmer-pack js is equivalent to wasmer-pack javascript) #111

0.5.3 - 2022-12-02

Fixed

  • The wasmer-pack CLI wasn't extracting the *.wai export files correctly (#105)

0.5.2 - 2022-11-24

Added

  • Users can now also generate bindings from a directory containing a wapm.toml file or a *.tar.gz downloaded from WAPM (#80)
  • Added a tutorial on using records (#83)

0.5.1 - 2022-11-18

Fixed

  • Running wasmer run --mapdir .:. wasmer/wasmer-pack-cli ... would fail because the [fs] table was being used incorrectly in wapm.toml (#91)
  • Added a workaround for dealing with *.webc files that were generated by a buggy version of wapm2pirita (#92)

Changed

  • The wasmer-pack tool now generates CommonJS packages instead of ES Modules (#89)

0.5.0 - 2022-11-08

Changed

  • Switched from Wasmer's fork of wit-bindgen on GitHub to the wai-bindgen crate on crates.io (#71)

Fixed

  • Update PackageName validation to accept the _ namespace and global packages (#74)
  • Package bindings will no longer have naming conflicts when importing a binding type with the same name as one of types we generate (#75)

💥 Breaking Changes 💥

  • The project has been renamed from wit-pack to wasmer-pack

0.4.2 - 2022-10-30

Fixed

  • Put all generated JavaScript inside a package/ folder to match the logic used by npm pack when consuming tarballs (#66)
  • Update MANIFEST.in to include py.typed in the package, meaning MyPy can now typecheck the generated bindings (#66)
  • Don't assume atoms will have the same name as their commands (#64)
  • Some JavaScript bindings wouldn't run because the bindings always import @wasmer/wasi, while the dependency was only added when one or more libraries/commands was compiled to WASI (#58)

0.4.1 - 2022-10-24

Added

  • User-facing documentation and a tutorial series are now available under the doc/ folder (#47)
  • Mention the wit-pack version in each generated package (#54)

Fixed

  • Fixed a bug where *.wasm files weren't being installed with the Python bindings from WAPM (#52)

0.4.0 - 2022-10-12

Added

  • To facilitate caching or different means of distribution, users are now able to provide their own pre-compiled WebAssembly module when initialising libraries or running commands (#45)

Changed

  • Removed the LoadArgs type from the Python bindings in favour of named arguments (#45)
  • Raised the MSRV from 1.59.0 to 1.61.0 to match minijinja
  • Removed the top-level class from the generated bindings, so now you just need to do something like from wit_pack import bindings, commands to use the package's libraries or commands (#40)

Fixed

  • Make the current directory available to the CLI when run by wasmer (#37)

0.3.0 - 2022-09-27

Added

  • Set up CI to automatically deploy to wapm.dev whenever GitHub receives a tagged commit (#24)
  • Fleshed out the repo's documentation (#25)
    • Populated the CHANGELOG.md
    • Wrote up CONTRIBUTING.md
    • Rewrote the README.md walkthrough
  • Added a "Time Reporter" task to CI so we can keep an eye on CI times (#25)
  • Generate wrappers for calling WASI executables from JavaScript (#26)
  • Generate wrappers for calling WASI executables from Python (#27)
  • Detect all available WASI executables in a Pirita file (#28)
  • Add a top-level facade to the generated Python bindings so libraries and commands can be accessed through one common object (#30)
  • Add a top-level facade to the generated JavaScript bindings so libraries and commands can be accessed through one common object (#34)
  • Added a wit-pack show sub-command to show which libraries and commands would be generated from a Pirita file (#35)

Fixed

  • Inspect each atom's kind when discovering the commands in a Pirita file instead of blindly assuming everything is a command (#32)

0.2.3 - 2022-09-15

Fixed

  • When run as a WASI program, the wit-pack CLI would unconditionally fail to load inputs because mmap isn't available (#24)

0.2.2 - 2022-09-15

(no user-facing changes)

0.2.1 - 2022-09-15

(no user-facing changes)

0.2.0 - 2022-09-15

Added

  • The wit-pack crate now allows packages to contain multiple WebAssembly modules (#22)

💥 Breaking Changes 💥

  • The wit-pack CLI now takes a Pirita file as its only input (#20)

    • This means the commandline interface has changed

      # Instead of this
      $ wit-pack js --exports exports.wit --name hello_world --version 0.1.1 --module wit.wasm -o=wit-js --abi=none
      
      # you should now do this
      $ wit-pack js -o=wit-js ./hello-world.webc
      

0.1.5 - 2022-09-12

Added

  • Introduced support for WASI libraries (#12)

Changed

  • The crates/wit-pack-cli and crates/wit-pack-wasm crates are now published to WAPM under the wasmer namespace instead of Michael-F-Bryan

0.1.4 - 2022-08-25

(no user-facing changes)

0.1.3 - 2022-08-25

(no user-facing changes)

0.1.2 - 2022-08-24