nordisk/znippy
Commits
9f09e873b026Merge znfix/bugs-20261101 (ZNIPPY-FIX): decompress runs under NOFILE 1024, corrupt/truncated/missing-member are clean exit-1 errors and leave no bad memberf2ffe31cd3f1GREEN: decompress opens each output file per chunk and closes it at once, and removes a bad member (bugs 1 and 2, ZNIPPY-FIX)ee2efdddb0b3GREEN: a truncated archive is reported as truncated, not as v0.6 (bug 3, ZNIPPY-FIX)e78a37f467f2GREEN: an error from the znippy binary is a clean exit 1 with the error chain on stderr, never an unwrap panic (bug 4, get of a missing member; ZNIPPY-FIX)381b7e5e6eddRED: the znippy binary fails cleanly on a missing member, a truncated or corrupt archive, and decompresses 3,000 files under NOFILE 1024 (ZNIPPY-FIX)26ede827c22aMerge gitidx/client-bases-fold (ZNIPPY-CLIENT-BASES-FOLD): znippy-plugin-git 0.2.4 — the thin-fetch voucher answers from the last committed fold while the indexer holds the gate; 313 plugin-git tests pass78f9ba82122cGREEN: client_bases answers from the last committed fold while the indexer holds the gate (znippy-plugin-git 0.2.4, ZNIPPY-CLIENT-BASES-FOLD)cae10329952bRED: client_bases must answer from the last committed fold while the indexer holds the gate (ZNIPPY-CLIENT-BASES-FOLD)12af82f5e61cgit-index-design: the sweep of the other operations, what was done and what is left (lane gitidx)4e1f0126109ctest: the chain memo answers the chain's bytes, a hit walks no link, and it never exceeds its cap (lane gitidx)2e4198aa97f8Merge gitidx/reach (lane gitidx, GUN-PERF-ZNIPPY): znippy-plugin-git 0.2.3 — the reachability index in integers, append-only ordinals, git's skip-rule builder, extended in the fold, persisted; git.git select of all tips 83 s -> 25 ms, build 151 s -> 21 s, restart 104 s -> 0.3 s. Gate: plugin-git 311 tests pass (the 5 io_uring/ceiling tests fail on master in the dwarf container too), doctests green, clippy clean in the crate (znippy-common's pre-existing lints with clippy 1.97 unchanged), lock: one version linec2f692dad2fagitidx: refs() stays as it was (a single-pass variant could not be shown faster); the design note carries the measured rows for git.git and gunnar7df02d13fbdeGREEN: the reachability index in integers, append-only ordinals, git's skip-rule builder, extended in the fold, persisted (znippy-plugin-git 0.2.3, lane gitidx)48e1f224175fRED: a push of any size extends the reach table, a reopen reads it back, hostile objects.reach is rebuilt (lane gitidx, GUN-PERF-ZNIPPY)6ecb049e93bbMerge ossfsilver/lockfollow-2 (lane OSSF-SILVER-CODE): the locks follow the sibling mains after gix 0.90 and russh 0.658369958c8a52lock follow: the sibling mains after gix 0.90 and russh 0.65 (lane OSSF-SILVER-CODE)99500aba14e7Merge ossfsilver/russh-065 (lane OSSF-SILVER-CODE): locks follow nornir-git 0.2.4 on russh 0.65 (the 2026-10-30 russh advisories)88f7a5f733d6lock follow: edda main 01f6d63, nornir-git 0.2.4 on russh 0.65 (lane OSSF-SILVER-CODE; GHSA-fw5c-8223-6h42 and the other 2026-10-30 russh advisories)7fadad1e36f9Merge gunguard/ipc-guard into master (lane GUNGUARD): every Arrow IPC read in znippy-plugin-git goes through znippy-common's ipc_guard; znippy-common 0.10.5, znippy-plugin-git 0.2.2c2074e89376dznippy-plugin-git fuzz: rustfmt the target and the seed writer (gunguard)c18eb8885031PERF znippy-common: the IPC guard reads a record batch's field nodes and buffers in place instead of collecting them (gunguard)298b9c9796c2GREEN znippy-plugin-git: an exploded table's index size hint is capped by each batch's length in bytes, so a hostile row count cannot size it past the file (gunguard)083f9ae13bd4RED znippy-plugin-git: an exploded table whose batch declares 2^31 rows must not size its index by that count (fuzz find, gunguard)763f908607c5znippy-common 0.10.5 and znippy-plugin-git 0.2.2: the IPC guard on every plugin-git read path (gunguard)b1c17bc4daf7znippy-plugin-git: a cargo-fuzz target over every Arrow IPC read path (graph, reach, push-log frames, journal, exploded table, persisted index), seeded from valid encodings and the hostile fixtures (gunguard)56ff70150c86GREEN znippy-plugin-git: every Arrow IPC read goes through znippy-common's ipc_guard (gunguard)db566c3bd236RED znippy-plugin-git: hostile Arrow IPC on every read path (graph, reach, push log, sealed section, journal, persisted index, exploded table) must be an Err, never a panic or an abort (gunguard)ac7e1b129b78GREEN znippy-common: ipc_guard::check_batches_after_schema checks batches fed to a StreamDecoder under a schema message held apart (gunguard)2972da30a163RED znippy-common: a record batch read under a separate schema message must pass the IPC guard (gunguard)275017f56bc2znippy-common 0.10.4: the OpenZL frame bound and allocation budget (gatwasm), for crates.io and Holger's bundle verifierbdbfe783191aGREEN znippy-common: a verified read decodes each chunk under an OpenZL allocation budget (gatwasm)4f2e545911aeRED znippy-common: a verified read must cap what OpenZL allocates for a chunk (gatwasm)64014b502d02GREEN znippy-common: an OpenZL frame may not decode to more than its chunk declares (gatwasm)9fd2278d8966RED znippy-common: a frame that decodes past its chunk's declared size must be refused before its buffer exists (gatwasm)7907804ef25flock follows znippy-common 0.10.3, lockfollow98a83648efe1GREEN znippy-common: read_multi_index refuses a sub-index with fewer columns than the first instead of panicking in concat_batches (arrowcrash)4ea2afc2a89aRED znippy-tests: a second sub-index with fewer columns panics read_multi_index's concat (arrowcrash fuzz find)b273300b0de0znippy-common 0.10.3: the Arrow IPC guard (arrowcrash), for crates.io and Holger's bundle verifieraa99e7f80004GREEN znippy-common: every Arrow IPC read goes through ipc_guard, which checks what arrow-ipc trusts (arrowcrash)3b6f08b40887RED znippy-tests: hostile Arrow IPC in an archive aborts or panics the reader (arrowcrash)12f7f700601block follows edda: nornir-git 0.2.3 (russh 0.64.1), lockfollow6d5b1b357f81znippy-common 0.10.2: the whole-body read reserves its result and reads stored chunks in place (1a9d102, holger HOL-PERF-3), for crates.io1a9d10211c03Merge holperf/reserve into master (lane HOL-PERF, holger HOL-PERF-3): a whole-body read reserves its result and reads stored chunks in place13d2248a0621GREEN znippy-common: a whole-body read reserves its result and reads stored chunks in place (holger HOL-PERF-3)37bf6ea0e1fbRED znippy-common: a whole-body read allocates the body three times (holger HOL-PERF-3)cc37b86627b3Merge smallrows/qxml2-exclusions into master (lane SMALL-ROWS): pom exclusions no longer overwrite the dependency's coordinate (QXML-2)834d76fd070bGREEN znippy-plugin-maven pom: only a <dependency>'s own children make its coordinate (QXML-2)f57bf1ae08deRED znippy-plugin-maven pom: an <exclusion> overwrites its dependency's groupId/artifactId (QXML-2)c410c1681abdMerge qxml/quick-xml-0.41 into master (lane QXML): znippy-plugin-maven 0.10.1 on quick-xml 0.41 (RUSTSEC-2026-0194/-0195)12b8b79783a9GREEN znippy-plugin-maven 0.10.1: quick-xml 0.36 -> 0.41 (RUSTSEC-2026-0194, RUSTSEC-2026-0195)