53 lines
2.7 KiB
Markdown
53 lines
2.7 KiB
Markdown
# MetaCrate
|
|
|
|
MetaCrate is a test-driven, clean native Rust reimplementation of
|
|
[LibreMetaverse](https://github.com/cinderblocks/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
|
|
invocation has a traceable catalog entry, 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, and all 1,289 NUnit invocations
|
|
now have reviewed Rust parity cases. Production behavior implementation is the
|
|
next stage.
|
|
|
|
A case counts as translated only when an explicit Rust test body calls the
|
|
mapped API and retains the upstream identity and body hash. The parity ledger
|
|
now contains zero pending or unreviewed cases.
|
|
|
|
The source snapshot, compatibility rules, dependency research, and ordered
|
|
implementation plan are in [RUSTREWRITE.md](RUSTREWRITE.md).
|
|
|
|
The authoritative compiled .NET surface is checked in as
|
|
[`api/public-api.json`](api/public-api.json). Every type and member has a
|
|
reviewed Rust destination in [`api/RUST-TYPES.tsv`](api/RUST-TYPES.tsv) and
|
|
[`api/RUST-MAPPING.tsv`](api/RUST-MAPPING.tsv); [`api/README.md`](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.
|
|
|
|
```sh
|
|
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
|
|
python3 tools/audit_red_suite.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.
|
|
The controlled audit aggregates every expected failure by standardized C#
|
|
member ID and rejects unrelated fixture, assertion, compile, or symbol errors.
|