Types: implement enums, flags, primitive metadata, and conversion utilities #30

Closed
opened 2026-08-08 08:16:22 +00:00 by hugo · 1 comment
Owner

Objective

Implement all public enum discriminants, flag semantics, primitive metadata, and Utils conversion helpers.

Deliverables

  • Use exact repr widths and retain unknown bits/values where grids are extensible.
  • Port string/numeric/byte/date/URI/IP/region-handle conversion helpers owned by Types.
  • Preserve invalid-value and sentinel behavior only where protocol-defined.

Validation

  • All translated enum/flag/conversion tests pass.
  • Compile-time or golden assertions cover numeric discriminants and flag masks.
  • Unknown-value round trips are verified.

Prerequisite

The full API shim and semantic test-suite gates are complete.

Project constraints

  • Implement only in native Rust; no LibreMetaverse/.NET bridge, subprocess, RPC, or fallback.
  • Keep mapped public signatures fixed and do not weaken translated parity assertions.
  • Remove failing bodies only for owned behavior and leave unrelated modules untouched.
  • Update docs, coverage/parity status, and focused plus workspace validation evidence.
## Objective Implement all public enum discriminants, flag semantics, primitive metadata, and Utils conversion helpers. ## Deliverables - Use exact repr widths and retain unknown bits/values where grids are extensible. - Port string/numeric/byte/date/URI/IP/region-handle conversion helpers owned by Types. - Preserve invalid-value and sentinel behavior only where protocol-defined. ## Validation - All translated enum/flag/conversion tests pass. - Compile-time or golden assertions cover numeric discriminants and flag masks. - Unknown-value round trips are verified. ## Prerequisite The full API shim and semantic test-suite gates are complete. ## Project constraints - Implement only in native Rust; no LibreMetaverse/.NET bridge, subprocess, RPC, or fallback. - Keep mapped public signatures fixed and do not weaken translated parity assertions. - Remove failing bodies only for owned behavior and leave unrelated modules untouched. - Update docs, coverage/parity status, and focused plus workspace validation evidence.
hugo added this to the 04 - Types implementation milestone 2026-08-08 08:16:22 +00:00
hugo added the enhancement label 2026-08-08 08:16:22 +00:00
Author
Owner

Implemented in commit 28bd5a0 and pushed to main.

Native Rust implementation:

  • Completed all 22 Types enum representations with exact C# widths, case-insensitive named parsing, EnumInfo text metadata, and protocol flag operations.
  • Added raw-value retention for extensible InventoryType/HoleType values and unknown-bit retention for PrimFlags, SoundFlags, and ExtraParamType.
  • Replaced the complete Utils shell: numeric/float endian conversions and real destination mutation, UTF-8/null and hex conversions, enum/string conversions, clamp/interpolation/packed values, MD5/SHA-1/SHA-256, PBKDF2-HMAC-SHA1, timestamps, IP/DNS, region handles, random values, and cross-platform platform detection.
  • Corrected mutable byte-array mappings and kept the independent compile fixture generic bound explicit.
  • Updated documentation and native coverage to 35 Types / 821 members; the remaining 10 Types are precisely the collection/cache/token scope of #31.

Verification:

  • 39 libremetaverse-types tests pass, including all enum widths, complete PrimFlags/SoundFlags masks, unknown values/bits, metadata, golden hashes, PBKDF2 vector, byte/string sentinels, and destination mutation.
  • Translated UtilsConversionsTests.StringToBytes now passes; TypeTests quaternion/matrix/UUID/vector cases remain green.
  • Workspace build and test compilation pass.
  • Workspace Clippy with -D warnings and rustdoc with -D warnings pass.
  • API mapping/shim regeneration checks, API coverage, downstream API compile fixture, parity, pinned-source surface, and controlled red-suite audit pass.
  • Controlled audit: 64 passes and 1,281 expected standardized failures; no unrelated assertion, fixture, or symbol failures.
Implemented in commit 28bd5a0 and pushed to main. Native Rust implementation: - Completed all 22 Types enum representations with exact C# widths, case-insensitive named parsing, EnumInfo text metadata, and protocol flag operations. - Added raw-value retention for extensible InventoryType/HoleType values and unknown-bit retention for PrimFlags, SoundFlags, and ExtraParamType. - Replaced the complete Utils shell: numeric/float endian conversions and real destination mutation, UTF-8/null and hex conversions, enum/string conversions, clamp/interpolation/packed values, MD5/SHA-1/SHA-256, PBKDF2-HMAC-SHA1, timestamps, IP/DNS, region handles, random values, and cross-platform platform detection. - Corrected mutable byte-array mappings and kept the independent compile fixture generic bound explicit. - Updated documentation and native coverage to 35 Types / 821 members; the remaining 10 Types are precisely the collection/cache/token scope of #31. Verification: - 39 libremetaverse-types tests pass, including all enum widths, complete PrimFlags/SoundFlags masks, unknown values/bits, metadata, golden hashes, PBKDF2 vector, byte/string sentinels, and destination mutation. - Translated UtilsConversionsTests.StringToBytes now passes; TypeTests quaternion/matrix/UUID/vector cases remain green. - Workspace build and test compilation pass. - Workspace Clippy with -D warnings and rustdoc with -D warnings pass. - API mapping/shim regeneration checks, API coverage, downstream API compile fixture, parity, pinned-source surface, and controlled red-suite audit pass. - Controlled audit: 64 passes and 1,281 expected standardized failures; no unrelated assertion, fixture, or symbol failures.
hugo closed this issue 2026-08-08 23:22:39 +00:00
Sign in to join this conversation.