Skip to content

Document the crates.io freeze and the git-dependency workflow - #28

Merged
DerekCorniello merged 5 commits into
mainfrom
docs/crates-io-frozen
Jul 29, 2026
Merged

Document the crates.io freeze and the git-dependency workflow#28
DerekCorniello merged 5 commits into
mainfrom
docs/crates-io-frozen

Conversation

@DerekCorniello

@DerekCorniello DerekCorniello commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Closes #26 as unnecessary rather than by publishing. Documentation only.

Why #26 does not need doing

#26 asked for a 0.6.0 publish so mux-compiler could drop its [patch.crates-io] block. Under ADR 0004 the compiler consumes this repo as a git dependency pinned by Cargo.lock, so merging to main is what makes a change available - there is no publish handshake left to perform.

crates.io is frozen: versions through 0.5.0 stay published and are not yanked (yanking frees no name and only breaks anyone pinned), but no new ones go there.

Changes

  • README: drop the crates.io version badge, which would otherwise advertise 0.5.0 as the current way to install indefinitely. Replace the publish-first coupled-change flow and semver-range description with how it actually works now.
  • AGENTS: the coupled-change steps still described publishing and bumping a semver pin; local coupled dev still described a sibling checkout and MUX_RUNTIME_SRC, which the compiler no longer reads. Coupled dev is now: build here, point MUX_RUNTIME_LIB at the archive.
  • Dropped the note about keeping full in sync with full_runtime_features() - that parity test went with the feature-trimmed runtime builds.

Worth knowing

The compiler now always links the full feature set and never builds this crate while compiling a program. That costs nothing: static linking discards archive members nothing references, so a program that never touches sql carries no SQLite.

rc-leak-check deliberately stays outside full, which makes it the one runtime the compiler cannot produce - hence scripts/leak-check.sh forcing it via MUX_RUNTIME_LIB, and the CI leak job now building it explicitly.

Pairs with muxlang/mux-compiler#317; rationale in muxlang/mux-context#32.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

The README described a publish-first coupled-change flow and a semver
range that no longer exist: mux-compiler consumes this repo as a git
dependency on main, pinned by its Cargo.lock, so merging here is what
makes a change available. Drop the crates.io version badge, which would
otherwise advertise 0.5.0 as current indefinitely, and say plainly that
published versions stay up but no new ones are coming.

Also note that a sibling checkout and MUX_RUNTIME_SRC take precedence
over the locked commit. That ordering is easy to forget and a stale
sibling silently shadows the commit Cargo.lock names.
The compiler no longer builds this crate while compiling a Mux program,
so a sibling checkout and MUX_RUNTIME_SRC no longer override anything.
Coupled local development now means building here and pointing
MUX_RUNTIME_LIB at the archive.

Also note that the full feature set is always linked, and that this costs
nothing: static linking discards archive members nothing references, so a
program that never touches sql carries no SQLite.
The README described the compiler building the library from the git
checkout cargo makes for the locked commit. That lookup was removed with
the source-build path; the compiler links the archive from cargo's
target/ directory, which takes an explicit `cargo build -p mux-runtime`
because cargo emits a dependency's rlib and never its staticlib.
The coupled-change steps still described publishing the runtime and
bumping a semver pin, local coupled dev still described a sibling
checkout and MUX_RUNTIME_SRC, and the release section still described
publishing to crates.io. None of those mechanisms remain after ADR 0004.

Also drop the note about keeping the full feature list in sync with
full_runtime_features(): that parity test went with the feature-trimmed
runtime builds.
Comment thread AGENTS.md
Comment thread README.md
@greptile-apps

greptile-apps Bot commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR documents the source-based runtime distribution workflow and aligns CI with it.

  • Replaces the obsolete crates.io publishing and semver guidance with the frozen-channel policy.
  • Adds the Unreleased changelog section referenced by contributor documentation.
  • Updates local development and downstream CI to build and select this checkout’s static runtime archive through MUX_RUNTIME_LIB.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
.github/workflows/ci.yml Builds this PR’s default-full-feature static archive and exposes it to downstream compiler tests through the job-level runtime override.
AGENTS.md Aligns coupled-development and release guidance with commit-pinned git dependencies and archive overrides.
CHANGELOG.md Documents the crates.io freeze and adds the previously missing Unreleased section.
README.md Replaces obsolete publishing and semver instructions with the current source-based workflow.

Reviews (2): Last reviewed commit: "Address PR review: keep the downstream s..." | Re-trigger Greptile

Two findings from Greptile on #28, both valid.

The Downstream Compiler Smoke Test passed this checkout to the compiler
via MUX_RUNTIME_SRC. The compiler no longer reads that variable, so once
the ADR 0004 change is on mux-compiler main this job would have linked
the runtime its own Cargo.lock pins and silently stopped testing the
runtime under review - while still reporting green. It now builds the
archive from this checkout and forces it with MUX_RUNTIME_LIB, which is
the resolution rule that survives. That matters beyond this job: this is
the cross-repo check that catches FFI breaks at their origin, and the
argument against automating the compiler's pin rests on it working.

The README told contributors to record changes under an `Unreleased`
heading that did not exist, while the changelog preamble still described
crates.io publishing and semver pinning. Added the heading and replaced
the preamble with the freeze and why there is no version to bump.
@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown

Valgrind Memory Checks - skipped

Skipped - no relevant source changed in this PR.

Benchmarks (report-only) - skipped

Skipped - no relevant source changed in this PR.

Commit 05a35fa8f10801b2f61f31f6d35d542147928a23 - full run

@DerekCorniello
DerekCorniello merged commit 4d43d1f into main Jul 29, 2026
9 checks passed
@DerekCorniello
DerekCorniello deleted the docs/crates-io-frozen branch July 29, 2026 19:10
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.

[Chore] - Publish a mux-runtime version containing BoxedEnum (unblocks dropping the compiler's git patch)

1 participant