5.5 KiB
5.5 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 fnmappings: 334; boxed object-safe trait futures with explicitSend: 26. - Callback signatures requiring
Send + Sync: 137; reviewed dyn-compatible thread-safe boundary traits: 6 (IGridClient,IBakingTextureProvider,ICurrentOutfitPolicy,IRlvActionCallbacks,IRlvQueryCallbacks, andIVoiceLogger). - 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 | 24562 | dds-bc67, default, jpeg2000, rust-j2k, vorbis | b1c578bb84f352dc5c920fa87751b560eaba2b0d83db4ba8ff560535eeb51afa |
libremetaverse-types |
45 | 942 | 887 | none | 532cdfc175a60cb6ab109b2c43cfdda1d89cf0aadffccbcd7c9b18e1a3215bee |
libremetaverse-structured-data |
16 | 295 | 304 | none | b1c2ca9a683efe92ea22293384189f9e7c9a1926860893ab78c41829e641a8c3 |
libremetaverse-imaging |
3 | 20 | 70 | default, jpeg2000, rust-j2k | 19423a5aec60e38d547b809ab947e7aff6366318f97f69cde824f57ae6194c0e |
libremetaverse-imaging-skia |
1 | 3 | 17 | default, rust-skia, skia | 855a181b77413a1e5f0094b1581971fd5e0a4d93fadb5f83d54f82a7ba8ee71f |
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 | 19 | none | a376fe10ea6b1e5fcd26a27d7d66e7a1d1b1408bdc5c77e05c3e0d1ce027b0b1 |
libremetaverse-voice-vivox |
64 | 531 | 259 | none | b13e157186e97a38b16aa786d3f9fd4724175979ed3fea8964b7d38f4e0a3ead |
libremetaverse-voice-webrtc |
12 | 210 | 316 | default, real-audio | b5b224b2b87aabaae6492566af9b9904101098dcd5d9b1a609a97f3a37ecbc87 |
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#
PascalCasemethods/properties become Rustsnake_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>becomesasync fn -> Result<T, Error>; object-safe async traits returnPin<Box<dyn Future<Output = Result<...>> + Send + '_>>.- .NET events become
subscribe_*calls returning an ownedSubscription; callbacks areSend + Syncand dispatch outside internal locks. IDisposablebecomes explicit idempotent shutdown plusDrop; cancellation remains a typedError::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 and pure-Rust backends remain feature-gated (
jpeg2000,rust-j2k,skia,rust-skia,vorbis,real-audio); default and empty-default sets are part of the baseline. - Capability HTTP injection uses project-owned
HttpMessageHandler,CapsHttpLimits, andwith_native_transport; the internalreqwestclient 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-compilecompiles every mapped type/member from a standalone downstream workspace.tests/semver-portis a runnable representative port covering lifecycle, value types, structured data, imaging, RLV, cancellation, dyn trait, andSend/Synccontracts without network access.