Document optional codecs and raise MSRV to 1.96
Some checks failed
Native code generation / deterministic (ubuntu-latest) (push) Successful in 1m56s
Imaging and meshing gate / native (ubuntu-latest) (push) Failing after 2m49s
JPEG 2000 feature / linux (push) Failing after 1m0s
Skia feature / linux (push) Failing after 1m38s
Native code generation / deterministic (macos-latest) (push) Has been cancelled
Native code generation / deterministic (windows-latest) (push) Has been cancelled
Imaging and meshing gate / native (macos-latest) (push) Has been cancelled
Imaging and meshing gate / native (windows-latest) (push) Has been cancelled
JPEG 2000 feature / macos (push) Has been cancelled
JPEG 2000 feature / windows (push) Has been cancelled
Skia feature / macos (push) Has been cancelled
Skia feature / windows (push) Has been cancelled
Some checks failed
Native code generation / deterministic (ubuntu-latest) (push) Successful in 1m56s
Imaging and meshing gate / native (ubuntu-latest) (push) Failing after 2m49s
JPEG 2000 feature / linux (push) Failing after 1m0s
Skia feature / linux (push) Failing after 1m38s
Native code generation / deterministic (macos-latest) (push) Has been cancelled
Native code generation / deterministic (windows-latest) (push) Has been cancelled
Imaging and meshing gate / native (macos-latest) (push) Has been cancelled
Imaging and meshing gate / native (windows-latest) (push) Has been cancelled
JPEG 2000 feature / macos (push) Has been cancelled
JPEG 2000 feature / windows (push) Has been cancelled
Skia feature / macos (push) Has been cancelled
Skia feature / windows (push) Has been cancelled
This commit is contained in:
@@ -23,7 +23,7 @@ members = [
|
||||
[workspace.package]
|
||||
version = "0.0.1"
|
||||
edition = "2024"
|
||||
rust-version = "1.85"
|
||||
rust-version = "1.96"
|
||||
license = "BSD-3-Clause"
|
||||
repository = "https://github.com/cinderblocks/libremetaverse"
|
||||
|
||||
|
||||
44
README.md
44
README.md
@@ -32,6 +32,8 @@ 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.
|
||||
|
||||
Building MetaCrate requires Rust 1.96 or newer.
|
||||
|
||||
```sh
|
||||
cargo build --workspace
|
||||
cargo test --workspace --no-run
|
||||
@@ -41,6 +43,37 @@ python3 tools/check_test_parity.py
|
||||
python3 tools/audit_red_suite.py
|
||||
```
|
||||
|
||||
### Optional codec features
|
||||
|
||||
The default build needs no system image-codec library. It includes the
|
||||
project-owned TGA and DDS implementations; the default `dds-bc67` feature uses
|
||||
the pure-Rust `bcdec_rs` dependency for BC6H and BC7. Build without BC6H/BC7
|
||||
support with `cargo build -p libremetaverse --no-default-features`.
|
||||
|
||||
The currently available opt-in codec backends are:
|
||||
|
||||
| Capability | Feature | Build command | External prerequisite |
|
||||
| --- | --- | --- | --- |
|
||||
| Raw J2K and JP2 decoding/encoding through OpenJPEG | `libremetaverse/jpeg2000` | `cargo build -p libremetaverse --features jpeg2000` | OpenJPEG 2.5.4 or newer |
|
||||
| BMP, GIF, ICO, JPEG, PNG, WBMP, and WebP decoding through Skia | `libremetaverse-imaging-skia/skia` | `cargo build -p libremetaverse-imaging-skia --features skia` | A matching rust-skia binary cache, or the documented native source-build tools |
|
||||
|
||||
Run their focused test suites with:
|
||||
|
||||
```sh
|
||||
cargo test -p libremetaverse-imaging --features jpeg2000
|
||||
cargo test -p libremetaverse-imaging-skia --features skia
|
||||
```
|
||||
|
||||
`cargo build --workspace --all-features` enables both optional backends and
|
||||
therefore requires both sets of native prerequisites. Platform installation,
|
||||
offline-build, cache, and redistribution details are in the
|
||||
[`OpenJPEG adapter guide`](crates/libremetaverse-openjpeg/README.md) and
|
||||
[`Skia adapter guide`](crates/libremetaverse-imaging-skia/README.md).
|
||||
|
||||
An independent optional `rust-j2k` backend is planned but has not been
|
||||
implemented yet. There is deliberately no enablement command for it today;
|
||||
the existing `jpeg2000` feature always selects the OpenJPEG backend.
|
||||
|
||||
`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`
|
||||
@@ -51,6 +84,8 @@ Running `cargo test --workspace` is intentionally red during the shim stage.
|
||||
|
||||
## Native implementation progress
|
||||
|
||||
### Milestone 04
|
||||
|
||||
Milestone 04 is complete. `libremetaverse-types` now provides
|
||||
native UUID, incremental CRC-32, little-endian floating-point byte helpers,
|
||||
Vector2/Vector3/Vector3d/Vector4 arithmetic and serialization, Color4 color
|
||||
@@ -73,6 +108,9 @@ hierarchical token-bucket throttling are native Rust as well. Cache and bucket
|
||||
tests use injected monotonic clocks, and concurrency invariants run without
|
||||
sleep-based timing. All 45 Types and all 942 mapped members now resolve to
|
||||
native implementations; no generated Types shims remain.
|
||||
|
||||
### Milestone 05
|
||||
|
||||
Milestone 05 now has a native, format-neutral OSD value model with structural
|
||||
equality and hashing, permissive `LibreMetaverse` conversion defaults, explicit
|
||||
integer/date byte order, synchronized snapshot-based arrays and maps, and
|
||||
@@ -122,6 +160,9 @@ five parsers without an external fuzzing runtime. They cover truncation, tags,
|
||||
lengths, payloads, delimiters, nesting, entity rejection, contextual errors,
|
||||
and the parser resource limits. Every encoder sorts map keys where necessary,
|
||||
so serialization is deterministic across platforms.
|
||||
|
||||
### Milestone 06
|
||||
|
||||
Milestone 06 starts with a native `ManagedImage`: top-left-origin,
|
||||
byte-per-sample planar storage has an explicit width-byte row stride, with gray
|
||||
stored in the red plane and optional color, alpha, and bump planes. Checked
|
||||
@@ -178,6 +219,9 @@ baselines are documented in
|
||||
[`docs/imaging-meshing.md`](docs/imaging-meshing.md).
|
||||
The controlled audit aggregates every expected failure by standardized C#
|
||||
member ID and rejects unrelated fixture, assertion, compile, or symbol errors.
|
||||
|
||||
### Milestone 07
|
||||
|
||||
The deterministic, Rust-only source-data generator framework and its complete
|
||||
pinned input inventory are documented in
|
||||
[`codegen/README.md`](codegen/README.md).
|
||||
|
||||
@@ -165,7 +165,7 @@ crates under `types`, `structured_data`, and `imaging_abstractions`. Rendering,
|
||||
voice, RLV, LSL tools, and native Skia remain separate so users do not pay for
|
||||
large or platform-specific dependency trees unless requested.
|
||||
|
||||
The workspace uses Rust 2024 with MSRV 1.85. Generated code is committed so
|
||||
The workspace uses Rust 2024 with MSRV 1.96. Generated code is committed so
|
||||
ordinary consumers do not need Python, .NET, Roslyn, or the upstream checkout.
|
||||
|
||||
## 3. Public API translation policy
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "libremetaverse-openjpeg"
|
||||
version = "0.0.1"
|
||||
edition = "2024"
|
||||
rust-version = "1.85"
|
||||
rust-version = "1.96"
|
||||
license = "BSD-3-Clause"
|
||||
publish = false
|
||||
description = "Safe, bounded OpenJPEG 2.5.4 adapter for MetaCrate"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "metacrate-api-compile"
|
||||
version = "0.0.0"
|
||||
edition = "2024"
|
||||
rust-version = "1.85"
|
||||
rust-version = "1.96"
|
||||
license = "BSD-3-Clause"
|
||||
publish = false
|
||||
|
||||
|
||||
Reference in New Issue
Block a user