VaptVupt v2.65.9
·
17 commits
to v260-master
since this release
Performance, correctness, and release-infrastructure maintenance. The frame
layout is unchanged from v2.65.8, and streams v2.65.8 encoded validly remain
compatible. The rare formerly undecodable SEQ candidate described below now
selects a different, lossless fallback representation.
- Sequence tANS decode tables are now built directly in their final storage
rather than through a 4 KiB spread array. Per-block sequence-table scratch
drops from 52 KiB to 48 KiB. A test compares the direct and historical
builders entry-for-entry across 256 deterministic normalized tables, and the
established ANS, roundtrip, SEQ, safe-zone, and exact-buffer regressions pass. - Fixed a rare SEQ-encoder data-integrity defect. The wire carries one global
match_count, so a literal run over 65,535 bytes before a later match cannot
be split into a zero-match midstream entry: the decoder assigns real matches
to the firstmatch_countLL entries. The encoder now rejects that ambiguous
SEQ candidate and losslessly falls back to another block representation;
terminal long literal runs remain representable as trailing LL-only entries.
test_seq_v2is now 21/21 with a direct rejection case and a deterministic
end-to-end sparse/random reproducer. - Paired pinned in-process decode measurements found +0.40% on text and +1.21%
on JSON, about +0.80% geometric mean. This is a modest, workload-dependent
improvement; it does not change the stream or justify a universal speed
claim. - Streaming decode now performs the selected BCJ inverse exactly once when a
frame completes: after a present footer and checksum have been validated, or
immediately after the final block for a checksumless frame. Permanent
roundtrips cover whole and split input for both x86 and AArch64 filters with
checksum on and off. vv_compressnow rejects mode values outside the three public enum constants
and rejects simultaneous x86 and AArch64 filter requests, including for
empty input, withVV_ERR_PARAM. The existing 10..24 window-range check now
runs before any requested BCJ allocation or transform. One-shot decode,
streaming decode, and frame-info parsing reject input headers that set both
BCJ architecture bits. The streaming encoder, which cannot transform a whole
frame while emitting incremental blocks, now rejects invalid modes and all
BCJ options instead of silently accepting ignored filter requests.- Restored reference-decoder parity: Python and JavaScript now consume trailing
LL-only entries after all matches with the C-equivalent iteration bound,
avoiding both premature termination and corrupt-input hangs. Both references
reject contradictory dual-BCJ headers, implement the exact x86/AArch64 BCJ
inverse after checksum validation, and reproduce current encoder output in
checksum-on/off cross-language fixtures. C remains canonical for legacy
H/A/I/C; Python retains limited A-tag support and JavaScript omits the legacy
tags. - The OOM sweep now requires its randomized baseline fixture to roundtrip before
allocation failure is injected, so a codec correctness regression cannot be
misreported as an injector-initialization failure. - The one-shot BCJ path now calls
vv_secure_zeroon its private full-input
working copy beforefree(), bringing it under the tracked plaintext-buffer
hygiene policy.test_secure_zeroexercises BCJ cleanup completion and
byte-exact roundtrip under sanitizers; it does not directly inspect freed
memory contents. - Corrected CLI help for
-A 0: zero selects the automatic factor, fast=2 and
balanced/extreme=1; it is not the old hard-off setting. - Added the deterministic
generated-v1competitive suite. It generates four
dependency-free fixtures, requires the vv-fast/vv-balanced/lz4-1/zstd-1/
zstd-3 matrix by default, reports medians after configurable warm-ups, checks
every decode by SHA-256, and emits CSV plus provenance-rich JSON. The README
and comparison guide carry a fresh seven-run pinned-core table separately
from the retained July 2026 11-file history. - Updated release, integration, format, security, and verification documents
for v2.65.9. The formal-audit update records regression/dynamic validation of
the delta and explicitly inherits the earlier formal baseline; it does not
claim a new full formal-tool run. Release publication now lists only the
sourcetar.gzartifact.
Source archive
vaptvupt-2.65.9-src.tar.gz- SHA-256:
436e988b53ce29d3ffa9c02e5763a78002b44b02ef78a8573a581e79f83e0a53 - The Git tag is signed; verify it with
git tag -v v2.65.9.