Skip to main content

MEP-73 implementation tracking

Per-phase tracking for MEP-73 Mochi+Rust package manager. Status values: NOT STARTED, IN PROGRESS, BLOCKED, LANDED, DEFERRED. Commit is the merge commit short SHA on main (or, for the umbrella PR, the in-branch commit on mep/0073-rust-package).

A phase is LANDED only when its gate is green for every target (consume direction + publish direction where applicable). Missing surfaces become N.1, N.2, ... sub-phases per the umbrella-phase coverage rule.

Phase status

PhaseTitleStatusCommitTracking page
0Skeleton: package3/rust/ layout + cargo workspace plumbingLANDED2dc3b34fphase-00
1Sparse-index client (index.crates.io reader, sha256 + blake3 download verify)LANDEDa3c263fbphase-01
2Rustdoc-JSON ingest + ApiSurface emitLANDED1cd97c1bphase-02
3Closed type-mapping table (scalars / strings / collections / Option / Result / Tuple / Struct / Enum)LANDED0be87e7fphase-03
4Wrapper crate synthesiser (extern "C" surface, MochiString / MochiSlice / opaque handles)LANDED2bf1474cphase-04
5Mochi-side extern fn emitter + alias shim file generationLANDED6da45d5dphase-05
6import rust "<crate>@<semver>" as <alias> grammar + parserLANDED8a4e5b8dphase-06
7Build orchestration: workspace synth + cargo build invocation + artifact linkLANDED8f611d65phase-07
8mochi.lock [[rust-package]] integration + --check modeLANDEDd50fc563phase-08
9TargetRustLibrary emit (rlib + cdylib + Cargo.toml + cbindgen)LANDED6e966397phase-09
10Trusted publishing (mochi pkg publish --to=crates.io) Sigstore OIDC flowLANDED003e897fphase-10
11Async bridge (tokio runtime singleton + block_on entry)LANDEDfce8fc5ephase-11
12Monomorphisation ([rust.monomorphise] manifest + per-instantiation wrapper)LANDED37768e85phase-12
13Embedded / no_std subset (profile = "embedded" + alloc opt-in)LANDED032a842dphase-13

Per-phase fields

Each phase tracking page documents (or will document, once the phase begins):

  • Gate: the test or check that must pass for the phase to be LANDED.
  • Files to touch: the bridge-side files (Go) and emit-side files (Rust template) the phase introduces or modifies.
  • Fixtures: which of the 24-crate fixture corpus the phase validates against.
  • Skip count: the expected SkipReport count per fixture crate (golden numbers).
  • Sub-phase decomposition (if needed): N.1, N.2, ... entries when an upstream constraint forces splitting.

Fixture corpus

The 24-crate fixture corpus (April 2026 top-25-most-downloaded-on-crates.io minus the long-deprecated lazy_static):

anyhow, thiserror, serde, regex, rayon, itertools, once_cell, time, uuid, url, base64, hex, sha2, blake3, rand, rand_chacha, num_cpus, bytes, smallvec, indexmap, ahash, parking_lot, crossbeam, tokio.

Each phase that touches the type-mapping or wrapper layer asserts golden counts against this corpus. The corpus is regenerated quarterly to track crate API drift.

Implementation location

The bridge lives at package3/rust/ in the repo root:

package3/rust/
README.md # pointer to MEP-73 spec
errors/ # SkipReason + BridgeError (phase 0)
build/ # Workspace + Driver + Cargo.toml renderer (phase 0)
semver/ # cargo-flavoured semver parser (phase 1)
sparse/ # sparse-index client + content-addressed cache (phase 1)
rustdoc/ # rustdoc-types Go parser + ApiSurface walker (phase 2)
typemap/ # closed type table + Mochi/FFI rendering (phase 3)
wrapper/ # extern-C wrapper synthesiser (phase 4)
emit/ # Mochi extern fn emitter (phase 5)
publish/ # crates.io publish + Sigstore (phase 10)
embedded/ # no_std subset (phase 13)

The package3/rust/ location is shared with the broader MEP-57 polyglot package work (where package3/ is the v3 package-system tree).

Status snapshot

As of 2026-05-30 00:41 (GMT+7): all 14 phases (0-13) LANDED (skeleton + sparse-index client + cargo semver + rustdoc-JSON ingest + closed type-mapping table + extern-C wrapper synthesiser + Mochi extern-fn emitter + import rust grammar + build orchestration pipeline + mochi.lock [[rust-package]] schema + drift checker + TargetRustLibrary publish-direction emit with cbindgen header + trusted-publishing flow with Sigstore-keyless attestation bundle and crates.io upload wire-format + async-fn bridge with lazy tokio runtime singleton and block_on wrapper bodies + monomorphisation pipeline with [rust.monomorphise] manifest parsing + per-instantiation symbol mangling + turbofish call-site rendering + embedded no_std + alloc profile with async refusal and default-features = false upstream pin). The MEP spec, research bundle, and implementation are all landed; the bridge is ready for integration with MEP-53's build driver.

Cross-references