Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,10 @@ updates:
cooldown:
default-days: 7
semver-major-days: 14
- package-ecosystem: rust-toolchain
directory: /
labels:
- dependencies
- rust-toolchain
schedule:
interval: weekly
9 changes: 9 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -378,3 +378,12 @@ The following tooling is available in this environment:

These practices help maintain a high-quality codebase and facilitate
collaboration.

## Fast development builds

`make dev-build` and `make dev-test` compile with the opt-in Cranelift
backend and the mold linker configured in `tools/dev-fast/config.toml`.
They require a nightly toolchain and, on Linux, a `mold` binary on the
`PATH`. The fragment is passed explicitly with `--config`, so release,
coverage, and verification builds are unaffected; never copy its contents
into `.cargo/config.toml`, which Cargo applies to every build.
306 changes: 306 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,7 @@ missing_docs = "deny"

[lints.rustdoc]
missing_crate_level_docs = "deny"

[dev-dependencies]
camino = "1.2.5"
rstest = "0.26.1"
11 changes: 11 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -126,3 +126,14 @@ rust-audit: ## Audit the Rust workspace for known vulnerabilities
help: ## Show available targets
@grep -E '^[a-zA-Z_-]+:.*?##' $(MAKEFILE_LIST) | \
awk 'BEGIN {FS=":"; printf "Available targets:\n"} {printf " %-20s %s\n", $$1, $$2}'

# Opt-in accelerated debug builds (Cranelift + mold); requires a nightly
# toolchain. See AGENTS.md and tools/dev-fast/config.toml.
DEV_FAST_CONFIG ?= tools/dev-fast/config.toml

.PHONY: dev-build dev-test
dev-build: ## Build debug binaries with Cranelift and mold
$(CARGO) --config "$(DEV_FAST_CONFIG)" build

dev-test: ## Run tests with Cranelift and mold
$(CARGO) --config "$(DEV_FAST_CONFIG)" test
25 changes: 25 additions & 0 deletions docs/developers-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,31 @@ LLVM-compatible linker behaviour.
Install `clang`, `lld`, `mold`, `python3`, and `cargo-audit` before running the
full generated workflow locally on Linux.

## Fast development builds

`make dev-build` and `make dev-test` offer an opt-in, faster iteration loop
for local debug work. `dev-build` compiles debug binaries and `dev-test` runs
the test suite; both use the Cranelift codegen backend and the mold linker
configured in `tools/dev-fast/config.toml`.

The `DEV_FAST_CONFIG` variable names that fragment, defaulting to
`tools/dev-fast/config.toml`, and both targets pass it to Cargo explicitly
with `--config "$(DEV_FAST_CONFIG)"`. Cargo never auto-discovers this
fragment; it takes effect only when a target invokes it directly, so other
`make` targets are unaffected.

Using the fragment requires a nightly toolchain, because the Cranelift
codegen backend is unstable. On Linux it also requires the mold linker on
`PATH`; the fragment gates the linker flag behind a `target_os = "linux"`
`cfg` table, so other platforms fall back to their default linker.

Cranelift configuration must never be copied into `.cargo/config.toml`.
Cargo auto-discovers that file and applies it to every invocation, which
would silently degrade release, coverage, and verification builds to the
faster but less optimizing backend. Keep the fast-build configuration
isolated in `tools/dev-fast/config.toml` and reach it only through
`make dev-build` and `make dev-test`.

## Spelling policy

The tracked `typos.toml` is generated from the shared estate dictionary and the
Expand Down
Loading
Loading