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]
|
[workspace.package]
|
||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version = "1.85"
|
rust-version = "1.96"
|
||||||
license = "BSD-3-Clause"
|
license = "BSD-3-Clause"
|
||||||
repository = "https://github.com/cinderblocks/libremetaverse"
|
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
|
infallible shims use `libremetaverse_types::unimplemented_api!` so placeholders
|
||||||
cannot look like successful behavior.
|
cannot look like successful behavior.
|
||||||
|
|
||||||
|
Building MetaCrate requires Rust 1.96 or newer.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cargo build --workspace
|
cargo build --workspace
|
||||||
cargo test --workspace --no-run
|
cargo test --workspace --no-run
|
||||||
@@ -41,6 +43,37 @@ python3 tools/check_test_parity.py
|
|||||||
python3 tools/audit_red_suite.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.
|
`tests/upstream-tests.json` is the machine-readable NUnit parity catalog.
|
||||||
Translated tests live in hand-written Rust files with the `parity-case` marker
|
Translated tests live in hand-written Rust files with the `parity-case` marker
|
||||||
documented in `tests/PARITY.md`; `python3 tools/generate_surface.py --check`
|
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
|
## Native implementation progress
|
||||||
|
|
||||||
|
### Milestone 04
|
||||||
|
|
||||||
Milestone 04 is complete. `libremetaverse-types` now provides
|
Milestone 04 is complete. `libremetaverse-types` now provides
|
||||||
native UUID, incremental CRC-32, little-endian floating-point byte helpers,
|
native UUID, incremental CRC-32, little-endian floating-point byte helpers,
|
||||||
Vector2/Vector3/Vector3d/Vector4 arithmetic and serialization, Color4 color
|
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
|
tests use injected monotonic clocks, and concurrency invariants run without
|
||||||
sleep-based timing. All 45 Types and all 942 mapped members now resolve to
|
sleep-based timing. All 45 Types and all 942 mapped members now resolve to
|
||||||
native implementations; no generated Types shims remain.
|
native implementations; no generated Types shims remain.
|
||||||
|
|
||||||
|
### Milestone 05
|
||||||
|
|
||||||
Milestone 05 now has a native, format-neutral OSD value model with structural
|
Milestone 05 now has a native, format-neutral OSD value model with structural
|
||||||
equality and hashing, permissive `LibreMetaverse` conversion defaults, explicit
|
equality and hashing, permissive `LibreMetaverse` conversion defaults, explicit
|
||||||
integer/date byte order, synchronized snapshot-based arrays and maps, and
|
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,
|
lengths, payloads, delimiters, nesting, entity rejection, contextual errors,
|
||||||
and the parser resource limits. Every encoder sorts map keys where necessary,
|
and the parser resource limits. Every encoder sorts map keys where necessary,
|
||||||
so serialization is deterministic across platforms.
|
so serialization is deterministic across platforms.
|
||||||
|
|
||||||
|
### Milestone 06
|
||||||
|
|
||||||
Milestone 06 starts with a native `ManagedImage`: top-left-origin,
|
Milestone 06 starts with a native `ManagedImage`: top-left-origin,
|
||||||
byte-per-sample planar storage has an explicit width-byte row stride, with gray
|
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
|
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).
|
[`docs/imaging-meshing.md`](docs/imaging-meshing.md).
|
||||||
The controlled audit aggregates every expected failure by standardized C#
|
The controlled audit aggregates every expected failure by standardized C#
|
||||||
member ID and rejects unrelated fixture, assertion, compile, or symbol errors.
|
member ID and rejects unrelated fixture, assertion, compile, or symbol errors.
|
||||||
|
|
||||||
|
### Milestone 07
|
||||||
|
|
||||||
The deterministic, Rust-only source-data generator framework and its complete
|
The deterministic, Rust-only source-data generator framework and its complete
|
||||||
pinned input inventory are documented in
|
pinned input inventory are documented in
|
||||||
[`codegen/README.md`](codegen/README.md).
|
[`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
|
voice, RLV, LSL tools, and native Skia remain separate so users do not pay for
|
||||||
large or platform-specific dependency trees unless requested.
|
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.
|
ordinary consumers do not need Python, .NET, Roslyn, or the upstream checkout.
|
||||||
|
|
||||||
## 3. Public API translation policy
|
## 3. Public API translation policy
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
name = "libremetaverse-openjpeg"
|
name = "libremetaverse-openjpeg"
|
||||||
version = "0.0.1"
|
version = "0.0.1"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version = "1.85"
|
rust-version = "1.96"
|
||||||
license = "BSD-3-Clause"
|
license = "BSD-3-Clause"
|
||||||
publish = false
|
publish = false
|
||||||
description = "Safe, bounded OpenJPEG 2.5.4 adapter for MetaCrate"
|
description = "Safe, bounded OpenJPEG 2.5.4 adapter for MetaCrate"
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
name = "metacrate-api-compile"
|
name = "metacrate-api-compile"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
rust-version = "1.85"
|
rust-version = "1.96"
|
||||||
license = "BSD-3-Clause"
|
license = "BSD-3-Clause"
|
||||||
publish = false
|
publish = false
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user