zerodds-flatdata 1.0 — Spec-Coverage

Quelle: docs/specs/zerodds-flatdata-1.0.md (Vendor-Spec, draft 2026-05-04).

§1 FlatStruct-Type-Modell

§1.1 FlatStruct-Trait

§1.2 derive-Macro

§2 SHM-Slot-Layout

§2.1 Header-Struktur

§2.2 Slot-Alignment

§3 Discovery — PID_SHM_LOCATOR

§3.1 Wire-Format (PID 0x8001)

§3.2 Same-Host-Match-Logik

§3.4 SEDP-Push (PID_SHM_LOCATOR via Side-Map)

§3.3 PID_SHM_LOCATOR ohne MUST_UNDERSTAND

§4 Wire-Pfad

§4.1 Same-Host-Pfad: reserve→write→commit

§4.2 Reader-Notify (eventfd / Semaphore)

§4.3 Cross-Host-Fallback parallel

§4.4 Mixed-Vendor-Compat

§5 Lifetime + Refcount

§5.1 reader_mask-Bitmap

§5.2 Reader-Disconnect retroaktiv

§6 Schema-Versioning

§6.1 Type-Hash-Check beim Read

§7 Sicherheit

§7.1 POSIX-Permissions 0600

§7.2 Bounded-Slot-Allocation

§8 API-Surface (DataWriter)

§8.1 DataWriter::write_flat

§8.2 DataWriter::loan_slot + FlatSlot

§9 API-Surface (DataReader)

§9.1 DataReader::read_flat

§9.2 FlatSampleRef::Deref

§9.3 FlatSampleRef::Drop setzt Bit

§10 Test-Strategie

§10.1 Unit: Slot-Allocator

§10.2 Integration: Same-Host-Pub/Sub

§10.3 Cross-Host-Fallback-Test

§10.4 Cyclone-Compat

§10.5 Backpressure

§11 Performance-Targets

§11.1 Same-Host P99 < 5 µs

§11.2 Throughput ~1 GB/s

§11.3 0 Heap-Allokation

§12 Decisions

D-1: Eigener PosixShmTransport statt Iceoryx2-Dep

D-2: Iceoryx2-Bridge als optional Feature

D-3: Same-Host-Detection via hostname-hash + uid

D-4: Vendor-PID ohne MUST_UNDERSTAND

D-5: Parallel-Send Same-Host-SHM + Cross-Host-UDP

D-6: FlatStruct ist Copy + 'static

D-7: Cross-Host-Zero-Copy out-of-scope v1.0

D-8: Phase-1 in-memory + Phase-2 POSIX-mmap (gleiche API)

D-9: Stand-alone Crate vs DCPS-Integration