37 lines
1.8 KiB
Markdown
37 lines
1.8 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 case
|
|
has a traceable placeholder, 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, and avatar-facing manager slices now have complete callable,
|
|
failure-only signatures; the remaining world manager and extension slices plus
|
|
semantic Rust test translations are still required before the public API shim
|
|
is complete.
|
|
|
|
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
|
|
```
|
|
|
|
Running `cargo test --workspace` is intentionally red during the shim stage.
|