Type-check the release profile, and compile in it again #150

Merged
PerishFire merged 1 commit from land/release-build into main 2026-07-30 16:13:51 +00:00
Owner

guard: type-check the release profile, and compile in it again

Manifest::lift asserts round-trip stability through debug_assert!,
whose argument is type-checked in every profile — but mirrors was
#[cfg(debug_assertions)], so the call survived into release builds
while the method did not. Keel 0.10.0 and 0.10.1 cannot be built in
release at all.

Nothing here ever compiled that profile. Guard runs cargo test and
clippy --all-targets, both debug; the acts run a debug binary; and the
release lane publishes crates, where cargo publish verifies in debug
too. Keel is a library, so no lane of its own was ever going to reach
release. The first build that did was a downstream Dockerfile, two
versions later.

The gate ungates: debug_assert! already compiles the call away, so the
method costs nothing in release and dead-code analysis still counts it
used. Guard gains cargo check --release, which is what would have
caught this — the defect is a type error under a different cfg, so a
check is enough and takes seconds where a build takes minutes.

release: advance keel to 0.10.2

The release-profile compile fix, with its changelog in en and zh. Nothing
is asked of a caller: the public surface is unchanged and the estate
format stays at eleven.

guard: type-check the release profile, and compile in it again `Manifest::lift` asserts round-trip stability through `debug_assert!`, whose argument is type-checked in every profile — but `mirrors` was `#[cfg(debug_assertions)]`, so the call survived into release builds while the method did not. Keel 0.10.0 and 0.10.1 cannot be built in release at all. Nothing here ever compiled that profile. Guard runs `cargo test` and clippy `--all-targets`, both debug; the acts run a debug binary; and the release lane publishes crates, where `cargo publish` verifies in debug too. Keel is a library, so no lane of its own was ever going to reach release. The first build that did was a downstream Dockerfile, two versions later. The gate ungates: `debug_assert!` already compiles the call away, so the method costs nothing in release and dead-code analysis still counts it used. Guard gains `cargo check --release`, which is what would have caught this — the defect is a type error under a different `cfg`, so a check is enough and takes seconds where a build takes minutes. release: advance keel to 0.10.2 The release-profile compile fix, with its changelog in en and zh. Nothing is asked of a caller: the public surface is unchanged and the estate format stays at eleven.
Type-check the release profile, and compile in it again
All checks were successful
guard / guard (pull_request) Successful in 4m26s
guard / guard (push) Successful in 1m51s
174b7c3ae3
guard: type-check the release profile, and compile in it again

`Manifest::lift` asserts round-trip stability through `debug_assert!`,
whose argument is type-checked in every profile — but `mirrors` was
`#[cfg(debug_assertions)]`, so the call survived into release builds
while the method did not. Keel 0.10.0 and 0.10.1 cannot be built in
release at all.

Nothing here ever compiled that profile. Guard runs `cargo test` and
clippy `--all-targets`, both debug; the acts run a debug binary; and the
release lane publishes crates, where `cargo publish` verifies in debug
too. Keel is a library, so no lane of its own was ever going to reach
release. The first build that did was a downstream Dockerfile, two
versions later.

The gate ungates: `debug_assert!` already compiles the call away, so the
method costs nothing in release and dead-code analysis still counts it
used. Guard gains `cargo check --release`, which is what would have
caught this — the defect is a type error under a different `cfg`, so a
check is enough and takes seconds where a build takes minutes.

release: advance keel to 0.10.2

The release-profile compile fix, with its changelog in en and zh. Nothing
is asked of a caller: the public surface is unchanged and the estate
format stays at eleven.

Land-Source: release-build@c96c23b046048b2477100317e575c24abcd6d37f
PerishFire deleted branch land/release-build 2026-07-30 16:13:51 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
PerishLab/keel!150
No description provided.