2.3 KiB
MetaCrate
MetaCrate is a test-driven, clean native Rust reimplementation of LibreMetaverse. LibreMetaverse is a behavioral and API reference only: the finished project must not load, host, bind to, invoke, or ship the .NET implementation. The current stage is a compiling structural shell: crate boundaries mirror the .NET library projects, public C# type names have Rust declarations, every upstream NUnit case has a traceable Rust case, and every sample/tool project has a Rust binary target. Types, StructuredData, Imaging, PrimMesher, both rendering adapters, and the main assembly's packet/message/asset/primitive wire-data, core runtime/networking, avatar-facing manager, world/social/service manager, RLV, LSL tools, Utilities, Vivox, and WebRTC slices now have complete callable, failure-only signatures. The independent downstream fixture compiles every cataloged type and member with zero exclusions. Semantic Rust test translation is underway, with 17 Types/Utilities and 78 StructuredData cases reviewed.
The source snapshot, compatibility rules, dependency research, and ordered implementation plan are in RUSTREWRITE.md.
The authoritative compiled .NET surface is checked in as
api/public-api.json. Every type and member has a
reviewed Rust destination in api/RUST-TYPES.tsv and
api/RUST-MAPPING.tsv; api/README.md
documents deterministic regeneration and validation.
All API crates expose the same typed Error for fallible unimplemented members;
infallible shims use libremetaverse_types::unimplemented_api! so placeholders
cannot look like successful behavior.
cargo build --workspace
cargo test --workspace --no-run
python3 tools/generate_rust_mapping.py --check
python3 tools/generate_api_shims.py --check
python3 tools/check_test_parity.py
tests/upstream-tests.json is the machine-readable NUnit parity catalog.
Translated tests live in hand-written Rust files with the parity-case marker
documented in tests/PARITY.md; python3 tools/generate_surface.py --check
verifies the catalog against the pinned adjacent LibreMetaverse checkout without
overwriting those files.
Running cargo test --workspace is intentionally red during the shim stage.