Thanks for your interest in contributing to Zapcode!
git clone https://github.com/TheUncharted/zapcode.git
cd zapcode
cargo build
cargo testcargo bench -p zapcode-core- Fork the repo and create a branch from
master - Make your changes
- Run
make lintandmake testto verify - Submit a PR
We use Conventional Commits for automated releases:
feat: add Promise.all support→ minor version bumpfix: snapshot resume with nested arrays→ patch version bumpfeat!: rename API method→ major version bump (post-1.0)
cargo fmtfor formattingcargo clippy -- -D warningsmust pass with zero warnings- No
unsafewithout a// SAFETY:comment
See AGENTS.md for the full architecture reference before making changes to the core.
Key rules:
zapcode-coreis pure Rust with zero I/O — no filesystem, network, or env access- Binding crates (
zapcode-js,zapcode-py,zapcode-wasm) only marshal types — no business logic - Every new instruction needs correct stack discipline and resource limit checks
- Write tests before considering a feature done
- Core tests:
cargo test -p zapcode-core - Security tests:
cargo test -p zapcode-core --test security - E2E JS:
cd crates/zapcode-js && npm install && npx napi build --release --platform --js index.js --dts index.d.ts && cd ../../examples/typescript/basic && npm install && npx tsx main.ts - E2E Python:
cd crates/zapcode-py && maturin develop --release && cd ../../examples/python/basic && python main.py
- Use GitHub Issues
- Include a minimal reproduction if possible
- For security vulnerabilities, email directly instead of opening a public issue
By contributing, you agree that your contributions will be licensed under the MIT License.