Contributing#
The workspace contains the compiler, runtime, function SDK and CLI. Use the Rust version required by Cargo.toml. Substrait support also needs protoc.
Check code changes#
From the repository root:
cargo fmt --all --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-features
cargo build -p parcel-cli
PARCEL=$PWD/target/debug/parcel examples/run-all.sh
The example suite needs Python with duckdb installed. Changes to expression semantics should include a case in crates/parcel-runtime/tests/differential.rs to check agreement between the CEL interpreter and DataFusion.
Build the documentation#
python -m pip install -r docs/requirements.txt
sphinx-build -W --keep-going -b html docs docs/_build/html
The build treats warnings as errors. Keep examples consistent with the implementation and use small datasets whose expected results are easy to inspect.
Releases#
Bump the workspace version in Cargo.toml and add a ## [x.y.z]: title entry to CHANGELOG.md. Once the change reaches main and tests pass, CI builds the release binaries, then creates the version tag and publishes the archives, checksums and installers. A manually pushed tag does not trigger this release workflow.