#package #loader #registry #oci #wasi #interface

wasm-pkg-loader

Wasm package loader

5 releases (3 breaking)

0.4.1 Jun 20, 2024
0.4.0 Jun 20, 2024
0.3.0 May 17, 2024
0.2.0 May 15, 2024
0.1.0 May 8, 2024

#568 in WebAssembly

Download history 923/week @ 2024-07-21 719/week @ 2024-07-28 81/week @ 2024-08-04 253/week @ 2024-08-11 385/week @ 2024-08-18 1096/week @ 2024-08-25 729/week @ 2024-09-01 807/week @ 2024-09-08 978/week @ 2024-09-15 876/week @ 2024-09-22 230/week @ 2024-09-29 382/week @ 2024-10-06 347/week @ 2024-10-13 321/week @ 2024-10-20 507/week @ 2024-10-27 781/week @ 2024-11-03

1,971 downloads per month

Apache-2.0 WITH LLVM-exception

105KB
2K SLoC

Wasm Package Loader

A minimal Package Registry interface for read-only consumers.

CLI

wasm-pkg-loader is intended to be used primarily as a library, but it also provides a simple CLI interface:

$ wasm-pkg-loader wasi:preview1-command-adapter
Package: wasi:preview1-command-adapter
Versions:
  0.2.0
$ wasm-pkg-loader wasi:preview-command-adapter fetch 0.2.0
Fetching release details for wasi:preview1-command-adapter@0.2.0...
Downloading content to "wasi-preview1-command-adapter-0.2.0.wasm"...

Running Tests

The e2e tests require:

  • The oras CLI tool to be available in your local PATH

  • An OCI Distribution Spec-compliant registry to be running at localhost:5000. An ephemeral registry can be run with:

    $ docker run --rm -p 5000:5000 distribution/distribution:edge
    

The e2e tests themselves are in the separate tests/e2e crate:

$ cd tests/e2e
$ cargo run

Publishing to OCI

Until publisher tooling is developed, the oras CLI tool can be used to publish packages:

Note: The details of this process (like MIME type) are still being worked on.

$ oras push \
    "${OCI_REGISTRY}/${WARG_NAMESPACE}/${PACKAGE_MAME}:${SEMVER}" \
    "${WASM_FILE}:application/wasm"

# e.g. to push `component.wasm` as "my-namespace:my-pkg@1.0.0" to `localhost:5000`:
$ oras push \
    localhost:5000/my-namespace/my-pkg:1.0.0 \
    component.wasm:application/wasm

Note: Some registry implementations may require --image-spec v1.0 for compatibility with this example.

Dependencies

~31–46MB
~758K SLoC