This repository builds and ships gauche-rs: a left-hand-driving classifier with:
- Rust library + CLI
- Web artifact
- wasm FFI crate
- Generated C bindings (via w2c2)
- C++ wrapper
- Create a branch from
main. - Make code changes.
- Run formatting checks:
cargo fmt --all -- --checkcargo fmt --manifest-path ffi/Cargo.toml --all -- --check
- Run core validation:
cargo testcargo bench --no-run
- Regenerate shipped artifacts when needed:
cargo generate-ccargo web
- Full release pipeline check:
cargo release-all
- Use Conventional Commit style for commits, and ensure the PR title follows Conventional Commits (CI-enforced).
cargo web→ generatesdist/gauche-wasm-map.htmlcargo generate-c→ regeneratesc/gauche_ffi.c,c/gauche_ffi.h, and the w2c2 runtime headerc/w2c2/w2c2/w2c2_base.hcargo release-all→ release build +generate-c+webcargo bench→ runsffi-vs-rustandqueries
Cargo aliases are defined in .cargo/config.toml:
cargo webcargo generate-ccargo release-all
- PR title check (
.github/workflows/pr-title-check.yml)- Enforces Conventional Commits format for PR titles.
- Release-all CI (
.github/workflows/ci-release-all.yml)- Rust setup (
wasm32-unknown-unknown) - Rust formatting checks (root +
ffi) cargo release-all- C bindings compile check via CMake
- Rust setup (
- Dependabot (
.github/dependabot.yml)- Weekly Cargo dependency updates for
/and/ffi.
- Weekly Cargo dependency updates for
If source changes impact generated outputs, regenerate and include them in the same PR:
c/gauche_ffi.cc/gauche_ffi.hc/s*.c/c/d*.c(generated chunks)c/w2c2/w2c2/w2c2_base.h(header-only w2c2 runtime, when refreshed)dist/gauche-wasm-map.html
- Rust fmt checks pass
- Tests/build pass
-
cargo release-allpasses - CMake build (
cpp/) passes - Regenerated artifacts are committed (if affected)
- PR title follows Conventional Commits