You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Refactor: zero-copy pipeline — Bytes as universal currency, Framer/Aggregator model #303
Redesign the read → parse → scan pipeline to eliminate unnecessary copies. Based on research of Vector, Fluent Bit, simdjson, and simd-json architectures.
Current status
The streaming StructuralIndex prototype is working (structural.rs on feat/structural-index-continued). Key sub-issues:
Benchmark results from #313 change the framing architecture. Instead of separate passes (memchr for newlines + ChunkIndex for quotes/backslashes), we'll extend ChunkIndex into a StructuralIndex that detects all structural characters in one SIMD pass.
Scaling is linear at ~28µs per character. The unified approach is viable.
Data flow changes:
Reader → Bytes → StructuralIndex::new(buf) [ONE SIMD pass]
→ Framer consumes newline bitmask → line ranges
→ CRI consumes space bitmask → field ranges
→ Scanner consumes quote/backslash/comma/colon bitmasks
→ All zero-copy, all O(1) lookups into pre-computed bitmasks
This eliminates the separate memchr newline pass and makes CRI field extraction and future CSV parsing essentially free — the bitmasks are already computed.
Activity
docs: zero-copy pipeline design based on Vector/simdjson research
strawgate commentedon Mar 31, 2026
Architecture update: unified SIMD StructuralIndex
Benchmark results from #313 change the framing architecture. Instead of separate passes (memchr for newlines + ChunkIndex for quotes/backslashes), we'll extend ChunkIndex into a StructuralIndex that detects all structural characters in one SIMD pass.
Benchmark (NEON, ~760KB NDJSON):
Scaling is linear at ~28µs per character. The unified approach is viable.
Data flow changes:
This eliminates the separate memchr newline pass and makes CRI field extraction and future CSV parsing essentially free — the bitmasks are already computed.
refactor: pipeline bypasses format.rs — raw bytes to scanner (#303, #335
refactor: pipeline bypasses format.rs — raw bytes to scanner (#303, #335
strawgate commentedon Mar 31, 2026
Implemented in PR #399. Pipeline now bypasses format.rs — raw bytes go directly to scanner. CRI uses parse_cri_line + CriAggregator.
refactor: pipeline bypasses format.rs — raw bytes to scanner (#303, #335
refactor: pipeline bypasses format.rs — raw bytes to scanner (#303, #335
refactor: pipeline bypasses format.rs — raw bytes to scanner (#303, #335
refactor: pipeline bypasses format.rs, delete FormatParser (#303, #335)
refactor: pipeline bypasses format.rs, delete FormatParser (#303, #335)
refactor: pipeline bypasses format.rs, delete FormatParser (#303, #335)
refactor: pipeline bypasses format.rs — raw bytes to scanner (#303, #335