Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(ci): update noir to build wasm with a nix flake file #1208

Merged
merged 175 commits into from
Jun 16, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
175 commits
Select commit Hold shift + click to select a range
ee9cd71
wip
jonybur Apr 24, 2023
9aa82e1
Change repo link
jonybur Apr 24, 2023
718673b
Update workflow
jonybur Apr 25, 2023
285d6ea
Use jq
jonybur Apr 25, 2023
309efb9
Fix yarn
jonybur Apr 26, 2023
d555fbc
Dependency test
jonybur Apr 26, 2023
2a4355c
Create noir-script.json
jonybur Apr 26, 2023
ec3a04e
Implement nix/cachix
jonybur Apr 26, 2023
f97ba8c
Update path
jonybur Apr 26, 2023
f26e552
Fix path
jonybur Apr 26, 2023
65eb5d5
Change branch for noir-wasm-testing
jonybur Apr 26, 2023
69bbfda
Update workflow
jonybur Apr 26, 2023
da7eef4
Remove comment
jonybur Apr 26, 2023
cde5d7c
Merge branch 'master' of github.com:noir-lang/noir into jb/noir-wasm-…
jonybur Apr 26, 2023
29bd1e2
Fix import
jonybur Apr 27, 2023
47c5d40
Symlink
jonybur Apr 27, 2023
8320455
Test fix
jonybur Apr 27, 2023
4a14b68
Output nix result
jonybur Apr 27, 2023
d4f18d0
Revert and build wasm with build-wasm
jonybur Apr 27, 2023
d1f4148
Fix path
jonybur Apr 27, 2023
e181a3d
Debug
jonybur Apr 27, 2023
27e9ac6
Test flake
jonybur Apr 27, 2023
3f5b5d2
Fix package
jonybur Apr 27, 2023
541e96f
implements nix to build-wasm, testing
jonybur Apr 27, 2023
dfc3440
Run build-wasm
jonybur Apr 27, 2023
b7abfee
Change path
jonybur Apr 27, 2023
6f9711d
Update bash file
jonybur Apr 27, 2023
318dac6
Output contents
jonybur Apr 27, 2023
0c5a7c6
Use wasm-pack again
jonybur Apr 27, 2023
a60c94c
Change quotes
jonybur Apr 27, 2023
ad318b1
Revert build-wasm
jonybur Apr 27, 2023
352f1dc
Update yml to use flake
jonybur Apr 27, 2023
e571cd3
Fix relative path
jonybur May 9, 2023
706e47a
Print directory
jonybur May 9, 2023
9db36da
Update path for wasm-pack
jonybur May 9, 2023
f82a562
Add chmod
jonybur May 9, 2023
cdf3fee
Update buildPhase
jonybur May 9, 2023
a9753f0
Try to fix path
jonybur May 9, 2023
3b4d810
Fix jq path
jonybur May 9, 2023
b9a7278
Fix jq
jonybur May 9, 2023
3eb5134
Fix missing commands
jonybur May 9, 2023
8baf91f
Change buildInputs
jonybur May 9, 2023
0d5f80a
Fix missing improts
jonybur May 9, 2023
ec20f09
Install jq
jonybur May 9, 2023
1af678a
Fix imports
jonybur May 9, 2023
96d55ee
Add dependencies to flake nix file
jonybur May 9, 2023
be4ca19
Debug errors
jonybur May 9, 2023
54e6293
Debugging wip
jonybur May 9, 2023
9cdf450
Add install wasm step
jonybur May 9, 2023
b43a966
Debugging
jonybur May 9, 2023
b9f3ebb
Remove wasm-pack installation on workflow
jonybur May 9, 2023
f81d0a9
Ensure logging
jonybur May 9, 2023
b8838ff
Output full logs to a file
jonybur May 9, 2023
93f9242
Log when failure happens
jonybur May 9, 2023
762d010
Typo
jonybur May 9, 2023
ec1a133
Fix logging
jonybur May 9, 2023
78ec81e
Remove workflow step
jonybur May 9, 2023
f6db72f
Debug wip
jonybur May 9, 2023
0135edb
Debug wip
jonybur May 9, 2023
990fef4
Stop on failure
jonybur May 9, 2023
8207a49
Trying to output debug information
jonybur May 9, 2023
87ed37f
Fix path
jonybur May 9, 2023
275cbb3
Fix output file
jonybur May 9, 2023
3174bdf
Fix
jonybur May 9, 2023
bb2e50f
Use xtracefd flag
jonybur May 9, 2023
e81792f
Accidentally removed installPhase
jonybur May 9, 2023
8ffcf7b
Change workflow
jonybur May 9, 2023
ad3bae9
Print from flake
jonybur May 9, 2023
3d01023
Revert build stage
jonybur May 9, 2023
49561a7
Remove output from noir_wasm build stage
jonybur May 9, 2023
0a91470
Revert logging
jonybur May 9, 2023
6bad6e0
Further logging tests
jonybur May 10, 2023
6128843
Trying experimental features
jonybur May 10, 2023
d654235
Other config
jonybur May 10, 2023
595d4e5
Remove experimental config
jonybur May 10, 2023
54f4dd5
Remove logs
jonybur May 10, 2023
9c9b40b
Output build log file location
jonybur May 10, 2023
3b24c5b
Log out Hello World file from nix to workflow
jonybur May 10, 2023
56d55c6
Output hello_world.txt
jonybur May 10, 2023
904fb09
Add else
jonybur May 10, 2023
a358696
Copy file from nix to workflow
jonybur May 10, 2023
8922c4d
Fix flake run
jonybur May 10, 2023
a551992
Change hello world to build log
jonybur May 10, 2023
74ea3c3
Revert build-wasm
jonybur May 10, 2023
d1b03b6
Output build-wasm build
jonybur May 10, 2023
1bf71fd
Print all files in build-wasm
jonybur May 10, 2023
8e4996a
Add verbose on wasm-pack
jonybur May 10, 2023
c3db936
Add which wasm-pack
jonybur May 10, 2023
58db2cf
Replace which with command -v
jonybur May 10, 2023
41bdfab
Manually generate output folders
jonybur May 10, 2023
0960365
Add debug flag
jonybur May 10, 2023
b55da9b
Remove further comments
jonybur May 10, 2023
07aa43e
Output wasm-pack version
jonybur May 10, 2023
b2bdf68
Output rustc version
jonybur May 10, 2023
7b2f5b6
Add rustc to build inputs
jonybur May 10, 2023
b162da4
Set up dev flag
jonybur May 10, 2023
3f3ec2c
Fix src path
jonybur May 10, 2023
0b20fac
add wasm32 target
phated May 10, 2023
1f18b14
wip - fix for section too large error
jonybur May 15, 2023
fc936b1
progress: build with wasm-pack
kobyhallx May 16, 2023
5b106ec
Downgrade wasm-bindgen - wip
jonybur May 19, 2023
6eaeade
chore: building with correct versions
kobyhallx May 23, 2023
9ce9ea1
Merge branch 'jb/noir-wasm-workflow' of github.com:noir-lang/noir int…
kobyhallx May 23, 2023
704be6f
choir: rely on stock wasm-binden-cli
kobyhallx May 23, 2023
9c9734d
Cleanup, implement build on flake file
jonybur May 24, 2023
3444feb
Fix conditional
jonybur May 24, 2023
0df80bd
Test workflow
jonybur May 24, 2023
eb924be
Edit workflow
jonybur May 24, 2023
8f243ff
Fix workflow
jonybur May 24, 2023
3a9b4db
Test fix
jonybur May 24, 2023
5ba8525
Clone nodejs
jonybur May 25, 2023
5f71604
Fix copy
jonybur May 26, 2023
bbaada8
Add recursive step to copy
jonybur May 26, 2023
ba2e86c
Fix output
jonybur May 30, 2023
3b607e6
Merge branch 'master' of github.com:noir-lang/noir into jb/noir-wasm-…
jonybur May 31, 2023
a915cf2
Remove noir_wasm publish step
jonybur May 31, 2023
cc62a3a
Fix branch name
jonybur Jun 1, 2023
7b6fa8c
Remove condition on dispatch-noir_wasm
jonybur Jun 2, 2023
0637a8c
Update cargoArtifacts name
jonybur Jun 2, 2023
6232091
Remove wasm workflow, now noir_wasm runs the flake
jonybur Jun 3, 2023
9dc67f0
Comment all the release workflow except for the dispatch
jonybur Jun 3, 2023
8d26866
Readd wasm workflow
jonybur Jun 3, 2023
ef3a1f7
Typo
jonybur Jun 3, 2023
5023d89
Remove wasm-pack
jonybur Jun 5, 2023
2f2c4c3
Update script
jonybur Jun 5, 2023
63abb42
Update script
jonybur Jun 5, 2023
9363ff5
Update targets
jonybur Jun 5, 2023
a28e63b
wip - changes to build
jonybur Jun 5, 2023
59c1746
Fix build
jonybur Jun 5, 2023
8366e5a
Fix link
jonybur Jun 5, 2023
e0be03e
Remove unused scripts
jonybur Jun 5, 2023
7e4bacc
Update Cargo.lock
jonybur Jun 6, 2023
fc5f130
Update wasm-bindgen
jonybur Jun 6, 2023
c577233
Update flake lock
jonybur Jun 6, 2023
b802a8c
Update wasm-bindgen-cli to 0.2.86
jonybur Jun 6, 2023
5e173ff
Rollback flake.lock changes
jonybur Jun 6, 2023
054748d
Rollback Cargo.lock changes
jonybur Jun 6, 2023
c10bb3f
Remove space
jonybur Jun 6, 2023
936027d
Rollback flake.lock
jonybur Jun 6, 2023
bb31c19
Update packages (Cargo.lock)
jonybur Jun 6, 2023
0641c22
Remove nix build flags
jonybur Jun 8, 2023
74d9ce1
Merge branch 'master' of github.com:noir-lang/noir into jb/noir-wasm-…
jonybur Jun 8, 2023
b58d12f
Kh noir wasm nix flake (#1657)
kobyhallx Jun 13, 2023
367df3c
Uncomment workflows
jonybur Jun 13, 2023
1f7dccf
Revert workflow changes
jonybur Jun 13, 2023
77dbe59
Revert workflow
jonybur Jun 13, 2023
d23304d
Remove unfinished testing workflow
jonybur Jun 13, 2023
9b8d004
Remove output from build wasm package
jonybur Jun 13, 2023
d8cd135
Revision
jonybur Jun 13, 2023
57245cf
Split nix flake
jonybur Jun 13, 2023
87467f9
Add preBuild and postBuild to build.sh
jonybur Jun 14, 2023
36754c7
Remove cleanCargoSource
jonybur Jun 14, 2023
22ada18
Remove preBuild
jonybur Jun 14, 2023
6fdd086
Removes package.json generation on installPhase
jonybur Jun 14, 2023
d15311f
Remove package version extraction from cargo.toml
jonybur Jun 14, 2023
3d0aa51
Readd preBuild (not in flake)
jonybur Jun 14, 2023
e75a460
Remove extra --release flag
jonybur Jun 14, 2023
5dd3a8d
Add package.json, output debug info
jonybur Jun 14, 2023
0d1ad17
Add package.json for noir_wasm
jonybur Jun 14, 2023
afcfa43
Fix package.json path
jonybur Jun 14, 2023
3343f47
Bump package version
jonybur Jun 15, 2023
e8f8858
Fix path
jonybur Jun 15, 2023
3d37f73
Fix path
jonybur Jun 15, 2023
d338467
Output debug info
jonybur Jun 15, 2023
d5e7c1d
Fix order on workflow
jonybur Jun 15, 2023
e1546d5
Run release-please on wasm workflow
jonybur Jun 15, 2023
2103bc9
Fix wasm and release workflows
jonybur Jun 15, 2023
75c5c27
Update crates/wasm/README.md
jonybur Jun 15, 2023
9a66798
Update .github/workflows/wasm.yml
jonybur Jun 15, 2023
e0b8f72
Update flake.nix
jonybur Jun 16, 2023
039abd1
Update release-please-config.json
jonybur Jun 16, 2023
7a12731
Fix README.md
jonybur Jun 16, 2023
378fa2e
some todos
phated Jun 16, 2023
d65a7a9
remove duplicated props
phated Jun 16, 2023
6b628b6
Change browser for web on path
jonybur Jun 16, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 1 addition & 9 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,7 @@ jobs:
uses: google-github-actions/release-please-action@v3
with:
token: ${{ secrets.NOIR_RELEASES_TOKEN }}
release-type: simple
package-name: noir
bump-minor-pre-major: true
bump-patch-for-minor-pre-major: true
prerelease: true # Marks GitHub Releases for 0.x.x versions as "Pre-release"
pull-request-title-pattern: "chore(noir): Release ${version}"
extra-files: |
Cargo.toml
flake.nix
command: manifest

update-lockfile:
name: Update lockfile
Expand Down
18 changes: 7 additions & 11 deletions .github/workflows/wasm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ name: Wasm

on: [push, pull_request]

# This will cancel previous runs when a branch or PR is updated
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref || github.run_id }}
cancel-in-progress: true
Expand All @@ -11,19 +10,16 @@ jobs:
build:
name: Build Wasm
runs-on: ubuntu-latest

steps:
- name: Checkout sources
uses: actions/checkout@v3

- name: Setup rust toolchain
uses: dtolnay/rust-toolchain@master
- name: Setup Nix
uses: cachix/install-nix-action@v20
with:
toolchain: 1.66.0

- name: Install wasm-pack
run: cargo install wasm-pack
nix_path: nixpkgs=channel:nixos-22.11
github_access_token: ${{ secrets.GITHUB_TOKEN }}

- name: Build wasm crate
working-directory: ./crates/wasm
run: ./build-wasm
- name: Build wasm package
run: |
nix build -L .#wasm
phated marked this conversation as resolved.
Show resolved Hide resolved
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ node_modules
pkg/

# Nix stuff
**/outputs
result
.envrc.local
.direnv/
Expand Down
4 changes: 4 additions & 0 deletions .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
{
".": "0.6.0",
"crates/wasm": "0.6.0"
}
2 changes: 1 addition & 1 deletion crates/wasm/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,4 +27,4 @@ gloo-utils = { version = "0.1", features = ["serde"] }
getrandom = { version = "*", features = ["js"] }

[build-dependencies]
build-data = "0.1.3"
build-data = "0.1.3"
7 changes: 1 addition & 6 deletions crates/wasm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,10 @@

In order to build the wasm package, the following must be installed:

- [wasm-pack](https://github.com/rustwasm/wasm-pack)
- [jq](https://github.com/stedolan/jq)

## Build

The wasm package can be built using the command below:

```bash
./build-wasm
nix build -L #wasm
```

Using `wasm-pack` directly isn't recommended as it doesn't generate a complete `package.json` file, resulting in files being omitted from the published package.
25 changes: 0 additions & 25 deletions crates/wasm/build-wasm

This file was deleted.

22 changes: 22 additions & 0 deletions crates/wasm/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#!/usr/bin/env bash

function require_command {
if ! command -v "$1" >/dev/null 2>&1; then
echo "Error: $1 is required but not installed." >&2
exit 1
fi
}

require_command toml2json
require_command jq
require_command cargo
require_command wasm-bindgen
require_command wasm-opt

export pname=$(toml2json < Cargo.toml | jq -r .package.name)

./preBuild.sh
cargo build --lib --release --package noir_wasm --target wasm32-unknown-unknown
./postBuild.sh
./installPhase.sh

6 changes: 6 additions & 0 deletions crates/wasm/installPhase.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash

mkdir -p $out
cp README.md $out/
cp ./crates/wasm/package.json $out/
cp -r ./pkg/* $out/
23 changes: 23 additions & 0 deletions crates/wasm/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"name": "@noir-lang/noir_wasm",
"collaborators": [
"The Noir Team <team@noir-lang.org>"
],
"version": "0.6.0",
"files": [
"nodejs",
"web",
"package.json"
],
"main": "./nodejs/noir_wasm.js",
"types": "./web/noir_wasm.d.ts",
"module": "./web/noir_wasm.js",
"sideEffects": false,
"peerDependencies": {
"@noir-lang/noir-source-resolver": "1.1.2"
},
"repository": {
"type": "git",
"url": "https://github.com/noir-lang/noir_wasm.git"
}
}
11 changes: 11 additions & 0 deletions crates/wasm/postBuild.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/usr/bin/env bash

# TODO: Handle the wasm target being built in release mode
WASM_BINARY=./target/wasm32-unknown-unknown/release/${pname}.wasm
phated marked this conversation as resolved.
Show resolved Hide resolved
NODE_WASM=./pkg/nodejs/${pname}_bg.wasm
BROWSER_WASM=./pkg/web/${pname}_bg.wasm

wasm-bindgen $WASM_BINARY --out-dir ./pkg/nodejs --typescript --target nodejs
wasm-bindgen $WASM_BINARY --out-dir ./pkg/web --typescript --target web
wasm-opt $NODE_WASM -o $NODE_WASM -O
wasm-opt $BROWSER_WASM -o $BROWSER_WASM -O
6 changes: 6 additions & 0 deletions crates/wasm/preBuild.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env bash

# Clear out the existing build artifacts as these aren't automatically removed by wasm-pack.
if [ -d ./pkg/ ]; then
rm -rf ./pkg/
fi
33 changes: 0 additions & 33 deletions crates/wasm/wasm.nix

This file was deleted.

63 changes: 63 additions & 0 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,11 @@
# We include rust-src to ensure rust-analyzer works.
# See https://discourse.nixos.org/t/rust-src-not-found-and-other-misadventures-of-developing-rust-on-nixos/11570/4
extensions = [ "rust-src" ];
targets = [ "wasm32-unknown-unknown" ]
++ pkgs.lib.optional (pkgs.hostPlatform.isx86_64 && pkgs.hostPlatform.isLinux) "x86_64-unknown-linux-gnu"
++ pkgs.lib.optional (pkgs.hostPlatform.isAarch64 && pkgs.hostPlatform.isLinux) "aarch64-unknown-linux-gnu"
++ pkgs.lib.optional (pkgs.hostPlatform.isx86_64 && pkgs.hostPlatform.isDarwin) "x86_64-apple-darwin"
++ pkgs.lib.optional (pkgs.hostPlatform.isAarch64 && pkgs.hostPlatform.isDarwin) "aarch64-apple-darwin";
};

craneLib = (crane.mkLib pkgs).overrideToolchain rustToolchain;
Expand Down Expand Up @@ -164,6 +169,19 @@
buildInputs = [ ] ++ extraBuildInputs;
};

# Combine the environmnet with cargo args needed to build wasm package
noirWasmArgs = wasmEnvironment // {
pname = "noir_wasm";

src = ./.;
kobyhallx marked this conversation as resolved.
Show resolved Hide resolved

cargoExtraArgs = "--package noir_wasm --target wasm32-unknown-unknown";

buildInputs = [ ] ++ extraBuildInputs;

doCheck = false;
};

# The `port` is parameterized to support parallel test runs without colliding static servers
testArgs = port: testEnvironment // {
# We provide `barretenberg-transcript00` from the overlay to the tests as a URL hosted via a static server
Expand Down Expand Up @@ -192,6 +210,7 @@
# Build *just* the cargo dependencies, so we can reuse all of that work between runs
native-cargo-artifacts = craneLib.buildDepsOnly nativeArgs;
wasm-cargo-artifacts = craneLib.buildDepsOnly wasmArgs;
noir-wasm-cargo-artifacts = craneLib.buildDepsOnly noirWasmArgs;

noir-native = craneLib.buildPackage (nativeArgs // {
inherit GIT_COMMIT GIT_DIRTY;
Expand All @@ -210,6 +229,13 @@
# We don't want to run checks or tests when just building the project
doCheck = false;
});

wasm-bindgen-cli = pkgs.callPackage ./wasm-bindgen-cli.nix {
rustPlatform = pkgs.makeRustPlatform {
rustc = rustToolchain;
cargo = rustToolchain;
};
};
in
rec {
checks = {
Expand Down Expand Up @@ -252,12 +278,49 @@
git
nil
nixpkgs-fmt
toml2json
llvmPackages.lldb # This ensures the right lldb is in the environment for running rust-lldb
wasm-bindgen-cli
];

shellHook = ''
eval "$(starship init bash)"
'';
});

# TODO: This fails with a "section too large" error on MacOS so we should limit to linux targets
# or fix the failure
packages.wasm = craneLib.buildPackage (noirWasmArgs // {

inherit GIT_COMMIT;
inherit GIT_DIRTY;
doCheck = false;

cargoArtifacts = noir-wasm-cargo-artifacts;

COMMIT_SHORT = builtins.substring 0 7 GIT_COMMIT;
VERSION_APPENDIX = if GIT_DIRTY == "true" then "-dirty" else "";
PKG_PATH = "./pkg";

nativeBuildInputs = with pkgs; [
which
git
jq
rustToolchain
wasm-bindgen-cli
binaryen
toml2json
];

postBuild = ''
bash crates/wasm/postBuild.sh
'';

installPhase = ''
bash crates/wasm/installPhase.sh
'';

});
});
}

26 changes: 26 additions & 0 deletions release-please-config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"bootstrap-sha": "63d84a30fcbc117443cd3b404e872cb3c2f26111",
"release-type": "simple",
phated marked this conversation as resolved.
Show resolved Hide resolved
jonybur marked this conversation as resolved.
Show resolved Hide resolved
"bump-minor-pre-major": true,
"bump-patch-for-minor-pre-major": true,
"prerelease": true,
"group-pull-request-title-pattern": "chore(noir): Release ${version}",
"packages": {
".": {
"release-type": "simple",
"component": "root",
"extra-files": ["Cargo.toml", "flake.nix"]
},
"crates/wasm": {
"release-type": "node",
"component": "noir_wasm"
}
},
"plugins": [
{
"type": "linked-versions",
"groupName": "noir",
"components": ["root", "noir_wasm"]
}
]
}
37 changes: 37 additions & 0 deletions wasm-bindgen-cli.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{ lib
, rustPlatform
, fetchCrate
, nodejs
, pkg-config
, openssl
, stdenv
, curl
, darwin
, runCommand
}:

rustPlatform.buildRustPackage rec {
pname = "wasm-bindgen-cli";
version = "0.2.86";

src = fetchCrate {
inherit pname version;
sha256 = "sha256-56EOiLbdgAcoTrkyvB3t9TjtLaRvGxFUXx4haLwE2QY=";
};

cargoSha256 = "sha256-4CPBmz92PuPN6KeGDTdYPAf5+vTFk9EN5Cmx4QJy6yI=";

nativeBuildInputs = [ pkg-config ];

buildInputs = [ openssl ] ++ lib.optionals stdenv.isDarwin [ curl darwin.apple_sdk.frameworks.Security ];

doCheck = false;

meta = with lib; {
homepage = "https://rustwasm.github.io/docs/wasm-bindgen/";
license = with licenses; [ asl20 /* or */ mit ];
description = "Facilitating high-level interactions between wasm modules and JavaScript";
maintainers = with maintainers; [ nitsky rizary ];
mainProgram = "wasm-bindgen";
};
}