Implement bounded binary LLSD parsing and serialization over borrowed or streaming byte interfaces.
Deliverables
Port exact markers, lengths, integer/real endian rules, UUID/date/URI/binary encodings, arrays, maps, headers, and whitespace handling.
Reject truncation, overflow, excessive depth/size, invalid markers, and malformed lengths with typed positions/context.
Avoid unchecked indexing and unbounded allocation.
Validation
All Binary LLSD golden and malformed tests pass byte-for-byte.
Round trips cover every OSD variant and nested structure.
Fuzz seed corpus includes every translated malformed case.
Prerequisite
Milestone 04 supplies implemented value types and the global API/test gates are complete.
Project constraints
Native Rust only; no LibreMetaverse/.NET bridge or fallback.
Keep mapped signatures fixed and preserve translated assertions exactly.
Enforce bounded parsing for untrusted input and update docs and parity status.
## Objective
Implement bounded binary LLSD parsing and serialization over borrowed or streaming byte interfaces.
## Deliverables
- Port exact markers, lengths, integer/real endian rules, UUID/date/URI/binary encodings, arrays, maps, headers, and whitespace handling.
- Reject truncation, overflow, excessive depth/size, invalid markers, and malformed lengths with typed positions/context.
- Avoid unchecked indexing and unbounded allocation.
## Validation
- All Binary LLSD golden and malformed tests pass byte-for-byte.
- Round trips cover every OSD variant and nested structure.
- Fuzz seed corpus includes every translated malformed case.
## Prerequisite
Milestone 04 supplies implemented value types and the global API/test gates are complete.
## Project constraints
- Native Rust only; no LibreMetaverse/.NET bridge or fallback.
- Keep mapped signatures fixed and preserve translated assertions exactly.
- Enforce bounded parsing for untrusted input and update docs and parity status.
hugo
added this to the 05 - StructuredData implementation milestone 2026-08-08 08:16:57 +00:00
Implemented and pushed in commit 7a4f1f2 (Implement bounded Binary LLSD codec).
Implementation:
Added a native bounded Binary LLSD parser over borrowed bytes plus bounded seekable-stream entry points.
Implemented all reference markers and scalar/container encodings, both accepted headers, exact Binary whitespace, big-endian integer/real/count fields, little-endian date payloads, UUID/URI/binary data, nested arrays, and maps.
Added typed parse errors with byte offsets and static context for truncation, invalid markers, malformed/oversized lengths, invalid dates/URIs, missing delimiters, and depth/node/allocation limits.
Added bounded serialization for every representable OSD variant, stable map-key ordering, stream overloads, endian/helper mappings, parser dispatch integration, generated API mapping updates, docs, parity status, and malformed fuzz seeds.
Uses native cross-platform Rust only; no .NET bridge, unsafe code, or platform-specific API.
Verification:
cargo test -p libremetaverse-structured-data: 14 passed.
Full StructuredData compatibility file: all 26 Binary tests pass; the remaining 52 failures are the explicitly tracked later notation/protobuf/XML milestone work.
Strict workspace Clippy, formatting, and warning-free Rustdoc passed.
API compile fixture, shim/mapping regeneration checks, API coverage, test parity, generated surface, and tool unit tests passed.
Final review against the issue confirmed every Binary golden test, every OSD variant/nested round trip, exact header/whitespace handling, streaming paths, malformed corpus coverage, and bounded rejection behavior.
Implemented and pushed in commit 7a4f1f2 (Implement bounded Binary LLSD codec).
Implementation:
- Added a native bounded Binary LLSD parser over borrowed bytes plus bounded seekable-stream entry points.
- Implemented all reference markers and scalar/container encodings, both accepted headers, exact Binary whitespace, big-endian integer/real/count fields, little-endian date payloads, UUID/URI/binary data, nested arrays, and maps.
- Added typed parse errors with byte offsets and static context for truncation, invalid markers, malformed/oversized lengths, invalid dates/URIs, missing delimiters, and depth/node/allocation limits.
- Added bounded serialization for every representable OSD variant, stable map-key ordering, stream overloads, endian/helper mappings, parser dispatch integration, generated API mapping updates, docs, parity status, and malformed fuzz seeds.
- Uses native cross-platform Rust only; no .NET bridge, unsafe code, or platform-specific API.
Verification:
- cargo test -p libremetaverse-structured-data: 14 passed.
- Pre-created Binary LLSD compatibility suite: 26 passed, 0 failed.
- Full StructuredData compatibility file: all 26 Binary tests pass; the remaining 52 failures are the explicitly tracked later notation/protobuf/XML milestone work.
- Controlled red-suite audit: 110 passed, 1255 expected failures, 0 ignored, live credentials enabled.
- Workspace build and test compilation passed.
- Strict workspace Clippy, formatting, and warning-free Rustdoc passed.
- API compile fixture, shim/mapping regeneration checks, API coverage, test parity, generated surface, and tool unit tests passed.
Final review against the issue confirmed every Binary golden test, every OSD variant/nested round trip, exact header/whitespace handling, streaming paths, malformed corpus coverage, and bounded rejection behavior.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Objective
Implement bounded binary LLSD parsing and serialization over borrowed or streaming byte interfaces.
Deliverables
Validation
Prerequisite
Milestone 04 supplies implemented value types and the global API/test gates are complete.
Project constraints
Implemented and pushed in commit
7a4f1f2(Implement bounded Binary LLSD codec).Implementation:
Verification:
Final review against the issue confirmed every Binary golden test, every OSD variant/nested round trip, exact header/whitespace handling, streaming paths, malformed corpus coverage, and bounded rejection behavior.