Skip to content

build(afm): enable mold linker; fix fuzz .gitignore + stale release note#40

Merged
P4suta merged 3 commits into
mainfrom
build/afm-mold-and-gitignore
May 30, 2026
Merged

build(afm): enable mold linker; fix fuzz .gitignore + stale release note#40
P4suta merged 3 commits into
mainfrom
build/afm-mold-and-gitignore

Conversation

@P4suta

@P4suta P4suta commented May 30, 2026

Copy link
Copy Markdown
Owner

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 used the default linker. Drive mold
    via target-scoped env in docker-compose.yml, 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/ — the real crate is
    crates/afm-markdown/fuzz/. Replace with crates/*/fuzz/*.
  • release.yml: header said "five target triples"; the matrix has three.

just ci green (incl. the mold-linked build).

Stacked on #38; retarget to main once that merges.

🤖 Generated with Claude Code

P4suta and others added 3 commits May 31, 2026 04:04
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>
Base automatically changed from ci/lefthook-pre-push-mirror to main May 30, 2026 19:49
@P4suta P4suta merged commit 85e99f2 into main May 30, 2026
1 check passed
@P4suta P4suta deleted the build/afm-mold-and-gitignore branch May 30, 2026 19:54
@P4suta P4suta restored the build/afm-mold-and-gitignore branch June 1, 2026 14:35
@P4suta P4suta deleted the build/afm-mold-and-gitignore branch June 1, 2026 15:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant