4.3 KiB
MetaCrate 0.0.1 release candidate
MetaCrate 0.0.1 is the first native Rust release candidate for the pinned
LibreMetaverse compatibility surface. It is releasable only when the native
release-candidate-audit reports status: "ok"; a generated blocked report
is evidence of remaining work, never permission to waive it.
Supported platform boundary
- Linux x86-64 is the fully built and executed release platform. All Gitea
Actions jobs run on
ubuntu-latestas required by repository policy. - Portable, default-feature-disabled library surfaces are cross-compiled from Ubuntu for Windows GNU x86-64 and macOS x86-64. Those checks do not claim native runtime, installer, physical-device, CoreAudio, or WASAPI validation.
- Rust 1.97.1 is the release toolchain.
Features and prerequisites
The default MetaCrate build uses the pure-Rust dds-bc67, rust-j2k, and
rust-skia image paths. Native alternatives remain explicit opt-ins:
| Feature | Capability | Native/build prerequisite |
|---|---|---|
jpeg2000 |
J2K/JP2 through the safe OpenJPEG adapter | OpenJPEG 2.5.4 or newer |
rust-j2k (default) |
J2K/JP2 through RustJ2kCodec |
none; exact pure-Rust j2k 0.8.1 |
rust-skia (default) |
BMP/GIF/ICO/JPEG/PNG/WBMP/WebP through RustSkiaTextureCodec |
none; exact pure-Rust skia-rs-codec 0.3.0 and image-webp 0.2.4 |
skia |
PNG/JPEG/WebP and other Skia formats | Skia 0.99 target cache or documented source tools |
vorbis |
PCM to Ogg Vorbis | the locked vorbis_rs native build stack |
| default WebRTC | native ICE/DTLS/SRTP/RTP/SCTP and Opus | system libopus 1.3 or newer |
real-audio |
physical microphone/speaker I/O | ALSA on Linux, CoreAudio on macOS, WASAPI on Windows |
OpenJPEG and Opus are dynamically discovered through the reviewed adapters;
Skia and Vorbis can contribute bundled native material and therefore carry the
notices documented in release/THIRD-PARTY-NOTICES.md.
Compatibility and intentional differences
The release maps 3,066 public types and 30,789 members from upstream commit
2aa70bb68513b39795da5d13c88f31b86e85a3ba. Rust naming, ownership, async,
event, cancellation, error, overload, and feature decisions are fixed in the
SemVer baseline. In particular, Rust uses snake-case methods, typed overload
names, Result, native futures, subscription guards, project-owned boundary
traits, and unknown-bit-retaining flags instead of reproducing C# syntax or CLR
runtime types. The 80 delegate/APM replacements are intentional and compiled by
the independent downstream fixture. Full recipes are in
api/SEMVER-AUDIT.md.
Vivox support is a native protocol adapter and does not bundle the proprietary
Vivox service. Physical audio and proprietary service validation remain manual.
Live grid validation targets the exact GRID_LOGIN_URL from .env; it uses
OpenSim response options and does not substitute a Second Life endpoint.
Evidence and approval
The policy in ci/release-candidate-policy.json verifies, without silent
waivers:
- all 16 release/source packages share version 0.0.1 and all ten shipped native binaries remain in the artifact inventory;
- all 1,289 compatibility cases remain reviewed: 1,266 deterministic cases, 19 explicit live cases, four benchmark cases, and zero pending/unreviewed/drift;
- production Rust contains zero
not_implemented,unimplemented_api!,todo!, orunimplemented!failure paths; - live tests contain no print-and-return success paths, fake and dedicated OpenSim evidence each contain nine unique successful sanitized stages, and the prior API/artifact/concurrency/documentation/provenance evidence remains valid;
- the release notes, checksums, Rust 1.97 toolchain, and Ubuntu-only workflows match policy.
Run the status gate with:
cargo run --locked -p metacrate-ci-matrix -- \
release-candidate-audit --evidence /tmp/metacrate-release-candidate.json
The command uses create-new evidence semantics. It writes a complete blocker
inventory before returning failure, which makes an incomplete release visible
in CI. Fuzz-smoke is the sole check currently marked deferred_by_user; it is
not presented as passed and is not silently executed. No signing identity is
configured for 0.0.1, so release/SHA256SUMS, Gitea artifact retention, and the
provenance/license manifests are the configured authenticity controls.