Conversation
There was a problem hiding this comment.
Pull request overview
This PR adds two new sibling crates to the bijou family — bijou32 (narrower, u32, max 5 bytes, tag threshold 252) and bijou128 (wider, u128, max 17 bytes, tag threshold 240) — together with their wasm/JS counterparts (bijou32_wasm, bijou128_wasm). It also updates the workspace metadata, dev tooling (Nix flake commands), CI workflows, and the bijou64 spec to document the new width variants and the per-tier tag-threshold choice. The three width variants are intentionally not wire-compatible; each picks the widest tag threshold its tier count permits to maximize the single-byte tier.
Changes:
- New
bijou32andbijou128Rust crates (lib + SPEC + README + examples + tests), mirroring thebijou64design with adapted tier counts and offsets. - New
bijou32_wasmandbijou128_wasmcrates with wasm-bindgen bindings (number-based foru32, bigint-based foru128), plus Node Mocha tests and Playwright cross-browser tests. - Workspace, Nix flake, and CI updates: members/dependencies wired in;
bodge:32,bodge:128,test:js:32*,test:js:128*commands; CI matrix expanded over all three wasm crates.
Reviewed changes
Copilot reviewed 42 out of 45 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Documents the three-crate family, wire-incompatibility, and the differing JS boundary types. |
| Cargo.toml | Registers the four new crates as workspace members and dependencies. |
| Cargo.lock | Records resolved versions for the new crates. |
| flake.nix | Adds bodge:32/bodge:128 build commands, test:js:32*/test:js:128* runners, and extends test:no_std + ci over all three widths. |
| bijou64/SPEC.md | Replaces "Future Extensions" with a "Width Variants" section explaining per-variant tag thresholds. |
| bijou32/{Cargo.toml,SPEC.md,README.md,src/lib.rs,examples/decode.rs} | New u32 crate: spec, docs, encode/decode/iterator/EncodedBytes API, and a full test suite. |
| bijou128/{Cargo.toml,SPEC.md,README.md,examples/decode.rs} | New u128 crate package, spec, docs, and example (lib source not shown in diff). |
| bijou32_wasm/* | Wasm bindings using JS number; src (lib/encode/decode), Rust wasm tests, Mocha+Playwright JS tests, package metadata, tsconfig, mocharc. |
| bijou128_wasm/* | Wasm bindings using JS bigint; src (lib/encode/decode), Rust wasm tests, Mocha+Playwright JS tests, package metadata, tsconfig, mocharc. |
| .github/workflows/test-wasm.yml | Matrixes the wasm-pack and JS-package jobs over bijou32_wasm, bijou64_wasm, bijou128_wasm. |
| .github/workflows/test-all-features.yml | Adds no_std checks for bijou32 and bijou128. |
Files not reviewed (2)
- bijou128_wasm/pnpm-lock.yaml: Language not supported
- bijou32_wasm/pnpm-lock.yaml: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
...and manually check