Skip to content

v3.30.1 — docs.rs has never built this crate

Choose a tag to compare

@noahgift noahgift released this 14 Aug 14:32
· 729 commits to master since this release
b0cef09

cargo install pmat / pmat = "3.30.1"

docs.rs

3.30.0, 3.29.0 and 3.28.2 are all on crates.io with no API documentation. docs.rs had
never built this crate, and nothing noticed for three releases because both available signals
read as success: docs.rs returns HTTP 200 for a failed build (the page it serves says
"failed to build"), and cargo doc locally runs on stable without docsrs defined, so the
failure reproduced on no invocation anyone ran.

The cause was this crate's own manifest. docs.rs turns [package.metadata.docs.rs] rustc-args
into RUSTFLAGS, which applies to the compilation of every dependency — and
lexical-util 1.0.7 (arrow-cast ← arrow ← aprender-db ← aprender-graph, non-optional) opens
with #![cfg_attr(docsrs, feature(doc_auto_cfg))], a feature removed in Rust 1.92:

RUSTFLAGS="--cfg docsrs" cargo +nightly check -p lexical-util   → E0557
                         cargo +nightly check -p lexical-util   → ok

pmat has zero cfg(docsrs) sites, so the flag bought nothing and cost the entire public API
documentation. A second failure sat behind the first — --generate-link-to-definition is
nightly-only and needs -Z unstable-options — so fixing rustc-args alone would have traded
one broken build for another with an unrelated-looking error.

Also fixed

  • --features agents-md and --features unified-protocol had never compiled. notify,
    bytes and http were declared optional = true and enabled by no feature, so both failed
    with unresolved imports in every build ever made.
  • five-whys ignored --depth above 3 and stamped 100% confidence on hypotheses the same
    report disclaimed as repo-wide signals. Every severity scale was a hard clamp real
    repositories blow past — 62 SATD markers against a cap of 10, 29 commits against 20 — so
    every severity pinned to 1.0 and the early exit fired on iteration 3 every time. --depth 1,2,3,5,7,10 now yields 1,2,3,5,7,10 whys where it yielded 1,2,3,3,3,3.
  • enforce reported "dead code could not be measured" for measurable projects — a
    hardcoded 60s wall-clock budget around a cargo check expired on work progressing normally.

New

  • CB-081-F: Workspace Member From Registry — a sibling pulled from crates.io instead of
    the in-tree copy, split out of CB-081's undifferentiated duplicate count because that remedy
    is unconditional. Matches [lib] name as well as [package] name, treats - and _ as the
    same character (as Cargo does), and scans [workspace.dependencies].
  • Feature-matrix CI — every advertised feature compiles, lib and bin, plus
    clippy --all-targets. The previous CI compiled only --bin pmat with default features,
    which is how six features shipped broken.
  • docs.rs CI gate — reproduces the docs.rs environment on nightly and refuses rustc-args;
    a second leg reads docs.rs's status.json, since the page is HTTP 200 either way.
  • Package-size gate — 3.30.0 went out at 94% of the crates.io 10 MiB ceiling, and an
    oversized upload returns a bare 503 while --dry-run passes because it never uploads. This
    release packages at 7.4 MiB.

Full detail in CHANGELOG.md.