v0.9.0
Per-file indexing cap 10 MiB → 100 MiB. New byte-weighted read semaphore caps reader-buffer RAM at ~600 MiB. Drop-in upgrade from v0.8.0 — no CLI or cache-layout changes.
Highlights
maxIndexedDocumentBytes10 MiB → 100 MiB. Vendored libraries, minified bundles, generated JSON/CSV, lockfiles, large protobufs now indexable. Overflow files skipped withslog.Warn.- Bounded in-flight memory. A new byte-weighted semaphore caps total bytes resident in reader buffers across all workers at ~600 MiB, so the larger per-file cap does not balloon RSS under bursts of large files.
- Auto-scaling ceiling.
maxInFlightBytes = inFlightHeadroomFiles (6) × maxIndexedDocumentBytes. Bumping the per-file cap scales the in-flight budget for free. TuneinFlightHeadroomFilesfor tighter or looser ceilings.
Development
- New
cmd/seek/read_semaphore.goplus lifecycle tests covering leak-free drain on builder errors, panic safety, and ctx cancellation mid-read. - Reader weight is released by the consumer after
builder.Finish()returns, because Zoekt's shard writers retainContentreferences until then. - New dep:
golang.org/x/sync v0.20.0.
Notes
- Synchronous folder-delta reads stay unbounded by the semaphore (documented as future work).
Full changelog: v0.8.0...v0.9.0