build(afm): enable mold linker; fix fuzz .gitignore + stale release note#40
Merged
Conversation
Mirror of the sibling aozora fix. The cargo-target / cargo-registry /
cargo-git / sccache named volumes were mounted at
/workspace/{target,.cargo,.sccache} — nested inside the `.:/workspace`
source bind mount. Because the dev container runs as root, the Docker
daemon created those host-side mountpoints (./target, ./.cargo,
./.sccache) as root, littering the working tree with root-owned dirs and
breaking any host-side cargo invocation.
Move all four caches to /cargo/* (CARGO_HOME=/cargo/home,
CARGO_TARGET_DIR=/cargo/target, SCCACHE_DIR=/cargo/sccache) — outside the
bind mount. The daemon no longer touches the host tree and the checkout
stays clean. The named volumes still persist the caches between runs. The
build-time rustup override (CARGO_HOME=/usr/local/cargo for the fuzz
stage's nightly install) is unaffected.
Verified: `docker compose run dev` leaves the host ./target absent.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The pre-push hook ran only `test` / `deny` / `prop-deep` (in parallel), even though the repo already owns an 18-step `just ci` recipe — so a push could still introduce a lint / check / doc / spec / coverage / upstream-diff / verify-version-pins / book regression that only surfaced on the PR. Mirror the sibling aozora repo: run `just ci` sequentially (cheap-to-expensive) with `prop-deep` as a trailing deep sweep, and drop the now-redundant standalone `test` / `deny`. Also bring over aozora's lefthook DX: an explicit `output:` block so failures stay loud across lefthook version bumps, and a `fail_text:` on every command with a concrete repro hint (matches the project's dev-visibility / "no silent death" posture). `prop-deep` is tagged `deep` for `SKIP_TAGS=deep` opt-out. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…se note
Three small dev-loop / hygiene fixes, aligning with the sibling aozora repo.
- **mold linker**: the Dockerfile installs mold + clang and writes a
/root/.cargo/config.toml to use them, but since the cargo-dirs decouple
set CARGO_HOME=/cargo/home, cargo never reads that config — so afm's
host-triple builds silently fell back to the default linker. Drive mold
via target-scoped env in docker-compose (CARGO_TARGET_X86_64_UNKNOWN_
LINUX_GNU_{RUSTFLAGS,LINKER}), scoped to the host triple so wasm-pack
(rust-lld) is unaffected. Matches aozora.
- **.gitignore**: the bare `fuzz/{target,corpus,artifacts}/` rules matched
a nonexistent top-level `fuzz/` and ignored nothing — the real fuzz crate
is `crates/afm-markdown/fuzz/`. Replace with `crates/*/fuzz/*`.
- **release.yml**: the header said "five target triples" but the matrix
has three (linux-gnu / macos-arm64 / windows-msvc). Fix the comment.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Three small dev-loop / hygiene fixes, aligning with the sibling aozora repo.
/root/.cargo/config.tomlto use them, but since the cargo-dirsdecouple set
CARGO_HOME=/cargo/home, cargo never reads that config —so afm's host-triple builds silently used the default linker. Drive mold
via target-scoped env in
docker-compose.yml, scoped to the host tripleso
wasm-pack(rust-lld) is unaffected. Matches aozora.fuzz/{target,corpus,artifacts}/rules matcheda nonexistent top-level
fuzz/— the real crate iscrates/afm-markdown/fuzz/. Replace withcrates/*/fuzz/*.just cigreen (incl. the mold-linked build).🤖 Generated with Claude Code