Files
MetaCrate/api/SEMVER-AUDIT.md
Chili Palmer d08b59c9a9
Some checks failed
API and SemVer surface / api-surface (push) Failing after 13m8s
Native code generation / deterministic (push) Failing after 2m8s
Concurrency and resource soak audit / soak (push) Failing after 6m39s
Imaging and meshing gate / native (push) Has been cancelled
Release platform and feature matrix / audit (push) Has been cancelled
Release platform and feature matrix / matrix (false, linux-stable-minimal, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (false, macos-stable-portable, x86_64-apple-darwin, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (false, windows-stable-portable, x86_64-pc-windows-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-msrv-portable, x86_64-unknown-linux-gnu, 1.96.0) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-default, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-features, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-release-surface, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Documentation / documentation (push) Has been cancelled
Native Rust workspace compile / compile (push) Has been cancelled
Dependency and supply-chain audit / audit (push) Has been cancelled
JPEG 2000 feature / linux (push) Successful in 2m46s
Skia feature / linux (push) Successful in 31m0s
Audit public API and SemVer surface (#103)
2026-08-12 01:35:26 +00:00

5.4 KiB

First-release API and SemVer audit

Generated by metacrate-ci-matrix api-baseline-write; do not edit by hand.

The compatibility source is pinned at 2aa70bb68513b39795da5d13c88f31b86e85a3ba. The baseline version is 0.0.1.

Coverage and quality decisions

  • Mapped/exported public types: 3066 / 3066; unexplained mappings: 0.
  • Mapped/exported public members: 30789 / 30789; duplicate destinations: 0.
  • Rust naming and ownership: mapped function/constant names follow Rust conventions and every member uses a reviewed ownership term.
  • External signature types: 142; referenced support traits: 2; accidental dependency types exposed by mapped signatures or public Rust declarations: 0.
  • Intentional delegate APM replacements: 80; each uses a native callback and is compiled by the downstream fixture.
  • Descriptively named overloads: 7151; names remain fixed by the mapping ledger.
  • Native async fn mappings: 334; boxed object-safe trait futures with explicit Send: 26.
  • Callback signatures requiring Send + Sync: 137; reviewed dyn-compatible thread-safe boundary traits: 6 (IGridClient, IBakingTextureProvider, ICurrentOutfitPolicy, IRlvActionCallbacks, IRlvQueryCallbacks, and IVoiceLogger).
  • C# enum mappings: 243 (46 unknown-bit-retaining flag types); stable public error enums marked non_exhaustive: 7.

Crate baselines

Crate Mapped types Mapped members Rust declarations Features Declaration SHA-256
libremetaverse 2711 27281 24505 dds-bc67, default, jpeg2000, vorbis 6eb9365e6833584b741afdb9816ec911f4d922aba561daedc0877d711de474b3
libremetaverse-types 45 942 871 none c5ea3a9cab936bbb4c7fa527753ba5608de0115f13f5c59ad6a7c549dc0d97ca
libremetaverse-structured-data 16 295 304 none b1c2ca9a683efe92ea22293384189f9e7c9a1926860893ab78c41829e641a8c3
libremetaverse-imaging 3 20 63 default, jpeg2000 bc3f5cf5a8f472b3d4092032be35202787f443f06a4998fe2533e21aadef2e86
libremetaverse-imaging-skia 1 3 13 default, skia a6a1445725410a036204496ad4953c84dcfea1e6a00390ce4e10d12d36f2876b
libremetaverse-prim-mesher 17 207 117 none dde798e86c485948f1d67e093f8194a76082101416516df3f8dca4de04c2d415
libremetaverse-rendering-simple 1 6 12 none 4dc284ea0abb16de63494435758c8b7c5eeb57a80d2e32a141e488e5861f2fad
libremetaverse-rendering-mesh-foundry 1 14 25 none 3689f6b454061fdae699d5fb66a11482909fa25bda398e26c38327995a9e2896
libremetaverse-lsl-tools 164 768 870 none 030c2418e08b6ea73878ba7d9c3f6983df9d3d32dda46e298fb6755a9f7e9599
libremetaverse-rlv 28 499 301 none f2e0a4fd808f5bb4e646a92205bac0cfe60497f0888a3ffe9a5a0fcb5dd4250a
libremetaverse-utilities 3 13 17 none 0a3cedfd67031ae890295206a7451b9b4945c16b5fac5d4dce86384fc4524595
libremetaverse-voice-vivox 64 531 382 none 97d0ee1665140421477427115aa961c4ebcd4e80ed8b0e625373fe86d9857899
libremetaverse-voice-webrtc 12 210 290 default, real-audio 08ec9c36f47c51d0ae51089097887898f272417ae3ef410faa9a56f96337c470
libremetaverse-openjpeg 0 0 64 none 9967a29eb406c56afd2a2189e1395efb073c52d2a86cc5958a419cf67de0658b
libremetaverse-opus 0 0 9 none c474538b08ecbb7d178d5ba63c5d15f21d8647b01f49654dc5c83ac1e691ea47

The exact mapping, exported-marker, feature, and normalized Rust declaration hashes are stored in SEMVER-BASELINE.json. A change must be reviewed and classified before the baseline is re-recorded.

Intentional Rust migration recipes

  • C# PascalCase methods/properties become Rust snake_case; overloads use the ledger's stable descriptive suffix, never argument-count dispatch.
  • C# reference ownership becomes owned values, shared or mutable borrows, Arc-backed managers, and explicit optional values as recorded per member.
  • Task<T> becomes async fn -> Result<T, Error>; object-safe async traits return Pin<Box<dyn Future<Output = Result<...>> + Send + '_>>.
  • .NET events become subscribe_* calls returning an owned Subscription; callbacks are Send + Sync and dispatch outside internal locks.
  • IDisposable becomes explicit idempotent shutdown plus Drop; cancellation remains a typed Error::Cancelled.
  • Closed C# enums retain fixed discriminants and are SemVer-breaking to extend; flags retain unknown bits, while public Rust error enums are non_exhaustive.
  • Optional native backends remain feature-gated (jpeg2000, skia, vorbis, real-audio); default and empty-default sets are part of the baseline.
  • Capability HTTP injection uses project-owned HttpMessageHandler, CapsHttpLimits, and with_native_transport; the internal reqwest client is not part of the public surface.
  • External C# signature types map to core/std, adopted cross-platform crates, or project-owned boundary types; no third-party crate path leaks through mapped signatures or public Rust declarations.

Compile consumers

  • tests/api-compile compiles every mapped type/member from a standalone downstream workspace.
  • tests/semver-port is a runnable representative port covering lifecycle, value types, structured data, imaging, RLV, cancellation, dyn trait, and Send/Sync contracts without network access.