## Learned User Preferences
- Often uses Chinese for questions, code review, and documentation edits in this repository.
- Chose plain Python kernel emission for codegen; do not reintroduce a Numba-specific backend unless explicitly requested.
- Prefer measuring Rust coverage via `cargo llvm-cov` and pass test-binary flags after `--` (e.g. `... -- --no-capture`).
## Learned Workspace Facts
- Gonidium is Rust-first; CI and repo tooling should stay aligned with Rust workflows (avoid legacy Python-template CI assumptions).
- Code generation path in `src` is plain Python (`backend/python.rs` / `emit_python`); there is no separate Rust codegen backend in the tree.
- In `pyproject.toml`, use the SPDX string + `license-files` form (PEP 639) rather than the deprecated `license = { text = ... }` table.
- For maturin-style packaging, keep `dynamic = ["version"]` in `pyproject.toml` so the version source matches `Cargo.toml`.
- In GitHub Actions, `dtolnay/rust-toolchain` does not read repo `rust-toolchain.toml`; workflows typically specify `toolchain` and `components` explicitly.