Compatible decoder arenas — PIZD 4.2.1

Dany Cohen • Data Engineer, Israel

PIZD Research Project

Research manuscript draft

Abstract —

Shipped change

This patch integrates the measured dictionary and integer arenas into the production decoder. Mode9 dictionaries reconstruct prefix-coded entries in one checked buffer plus ranges and existing row IDs. If expanded dictionary storage exceeds the ordinary output budget because of unused entries, the previous owned dictionary path remains available for archive compatibility. All dictionary prefixes, suffix separators, indices and referenced output lengths are validated.

Mode6 numeric columns reuse one arena for existing integer-delta and integer-FoR streams. Signed canonical decimal bytes are generated in a stack buffer; wrapping deltas/strides, canonical varints, exact input consumption and record/output budgets remain enforced. Timestamp, prefix and other Novel models retain their prior paths. The archive writer, routing policies, entropy coders and checksum choices are unchanged.

Typical reconstruction costs O(dictionary decoded bytes + records) time/storage for dictionaries and O(decimal output bytes + records) for integers, apart from existing FoR unpacking. Memory usage has not been benchmarked; fewer allocations do not establish a lower peak RSS. No zero-copy or universal speed claim is made.

Matched complete verified-decoder measurements

Three alternating frozen 4.2.0 /4.2.1 panel pairs, each with three warmups and three rotated measured rounds over 30 inputs and 18 codec configurations. Aggregate times are medians of the three per-panel sums. These are full verified decode timings, including source checksum and production archive validation. Inputs are the same bounded development excerpts used previously, not held out. No confidence intervals are claimed.

ConfigurationArchive bytes (both versions)Encode time changeVerified decode ms old → newDecode time change
PIZD_hybrid_default997,105-0.21%13.456 → 12.698-5.63%
PIZD_hybrid_fast973,161-2.18%16.504 → 16.266-1.44%
PIZD_hybrid_thin_L9756,241+0.97%33.259 → 25.138-24.42%
PIZD_native_default1,353,762-2.18%22.677 → 21.143-6.76%
PIZD_native_fast1,374,345-0.06%25.543 → 25.492-0.20%
PIZD_native_thin_L0826,197+2.42%38.286 → 30.723-19.76%

Encoding was not changed; its observed shifts are retained as timing context, not intentional compression-speed gains. Reference-codec shifts disclose session drift:

ReferenceEncode time changeVerified decode time change
Zstd_L3+1.68%-4.32%
Zstd_L9+0.31%-8.31%
Gzip_L6-0.57%-1.01%
Brotli_Q9+0.07%-0.94%

Per-file thin results

Archive bytes do not change. Negative time changes indicate faster decoding. All inputs, including weak gains and slower observations, are retained.

InputEngineOld verified msNew verified msTime change
01_loghub_hdfs.logPIZD_hybrid_thin_L92.5651.428-44.34%
01_loghub_hdfs.logPIZD_native_thin_L02.9191.735-40.57%
02_loghub_hadoop.logPIZD_hybrid_thin_L90.7220.591-18.16%
02_loghub_hadoop.logPIZD_native_thin_L00.8680.634-26.92%
03_loghub_spark.logPIZD_hybrid_thin_L91.7581.307-25.62%
03_loghub_spark.logPIZD_native_thin_L01.9831.494-24.64%
04_loghub_zookeeper.logPIZD_hybrid_thin_L91.2261.053-14.11%
04_loghub_zookeeper.logPIZD_native_thin_L01.3501.175-12.91%
05_loghub_openstack.logPIZD_hybrid_thin_L91.0890.816-25.00%
05_loghub_openstack.logPIZD_native_thin_L01.3791.298-5.87%
06_loghub_bgl.logPIZD_hybrid_thin_L91.5821.103-30.28%
06_loghub_bgl.logPIZD_native_thin_L01.4791.019-31.06%
07_loghub_hpc.logPIZD_hybrid_thin_L92.0551.551-24.53%
07_loghub_hpc.logPIZD_native_thin_L02.1461.711-20.28%
08_loghub_thunderbird.logPIZD_hybrid_thin_L91.7291.379-20.29%
08_loghub_thunderbird.logPIZD_native_thin_L02.1111.474-30.16%
09_loghub_windows.logPIZD_hybrid_thin_L91.5061.183-21.47%
09_loghub_windows.logPIZD_native_thin_L01.5831.253-20.87%
10_loghub_linux.logPIZD_hybrid_thin_L91.6790.934-44.35%
10_loghub_linux.logPIZD_native_thin_L01.9531.173-39.95%
11_loghub_mac.logPIZD_hybrid_thin_L91.3341.016-23.82%
11_loghub_mac.logPIZD_native_thin_L01.5341.208-21.25%
12_loghub_android.logPIZD_hybrid_thin_L91.8271.545-15.43%
12_loghub_android.logPIZD_native_thin_L02.1541.879-12.75%
13_loghub_healthapp.logPIZD_hybrid_thin_L90.5990.610+1.84%
13_loghub_healthapp.logPIZD_native_thin_L00.9630.976+1.33%
14_loghub_apache.logPIZD_hybrid_thin_L92.4261.692-30.26%
14_loghub_apache.logPIZD_native_thin_L02.5652.152-16.08%
15_loghub_openssh.logPIZD_hybrid_thin_L91.1950.855-28.47%
15_loghub_openssh.logPIZD_native_thin_L01.4211.041-26.73%
16_loghub_proxifier.logPIZD_hybrid_thin_L91.3920.968-30.47%
16_loghub_proxifier.logPIZD_native_thin_L01.6521.177-28.73%
17_beats_nginx_access.logPIZD_hybrid_thin_L90.0270.024-11.18%
17_beats_nginx_access.logPIZD_native_thin_L00.0300.028-8.72%
18_beats_nginx_error.logPIZD_hybrid_thin_L90.0090.008-10.20%
18_beats_nginx_error.logPIZD_native_thin_L00.0130.013+0.08%
19_beats_postgresql_log.logPIZD_hybrid_thin_L90.1880.129-31.30%
19_beats_postgresql_log.logPIZD_native_thin_L00.1780.119-33.25%
20_beats_mysql_slowlog.logPIZD_hybrid_thin_L90.0600.059-2.25%
20_beats_mysql_slowlog.logPIZD_native_thin_L00.0830.082-0.29%
21_beats_mongodb_log.logPIZD_hybrid_thin_L90.0280.028+1.15%
21_beats_mongodb_log.logPIZD_native_thin_L00.0550.052-5.90%
22_beats_redis_log.logPIZD_hybrid_thin_L92.4581.641-33.26%
22_beats_redis_log.logPIZD_native_thin_L02.4551.655-32.60%
23_beats_elasticsearch_audit.logPIZD_hybrid_thin_L90.0160.015-2.25%
23_beats_elasticsearch_audit.logPIZD_native_thin_L00.0470.044-6.46%
24_beats_traefik_access.logPIZD_hybrid_thin_L90.0100.009-5.12%
24_beats_traefik_access.logPIZD_native_thin_L00.0160.017+3.86%
25_nasa_http_jul95.logPIZD_hybrid_thin_L91.6011.343-16.08%
25_nasa_http_jul95.logPIZD_native_thin_L01.8441.511-18.03%
26_nasa_http_aug95.logPIZD_hybrid_thin_L91.4991.242-17.10%
26_nasa_http_aug95.logPIZD_native_thin_L01.7771.395-21.50%
27_github_events_20150101_00.jsonlPIZD_hybrid_thin_L90.6490.618-4.87%
27_github_events_20150101_00.jsonlPIZD_native_thin_L01.1971.188-0.80%
28_github_events_20150101_06.jsonlPIZD_hybrid_thin_L90.5690.609+6.94%
28_github_events_20150101_06.jsonlPIZD_native_thin_L01.1631.168+0.43%
29_github_events_20150101_12.jsonlPIZD_hybrid_thin_L90.6230.568-8.82%
29_github_events_20150101_12.jsonlPIZD_native_thin_L01.0481.005-4.12%
30_github_events_20150101_18.jsonlPIZD_hybrid_thin_L90.7240.878+21.28%
30_github_events_20150101_18.jsonlPIZD_native_thin_L01.1441.156+1.01%

Validation and practical limits

All 251 existing tests and five new arena tests pass (256 total). The new cases cover signed extremes and wrapping, zero-/64-bit FoR, precise output budgets, malformed/truncated/noncanonical streams, strict capability enforcement, dictionary indices/prefixes/separators, empty values, unused oversized entries and dependent-column access. The paired measurement retains 19,440 archive emissions, 38,880 exact restores and 19,440 independent SHA-256 checks. All 540 source/configuration archive identities agree across binaries, including all 180 PIZD configurations. The actual CLI generates 180 archives byte-identical to saved 4.2.0 output; each is checked with the previous reader, and every old archive is restored with the new reader. This compatibility result is separate from the benchmark worker.

This is a decoder-speed correction, not an improvement in compression density. The retained Spark/MongoDB size regressions and four GH Archive JSON losses from 4.2.0 remain. Zstandard can still decode faster; use the complete reference tables rather than inferring a universal ranking. Row assembly and noninteger column models remain CPU costs. The small parser fixtures and historical HTTP windows are labeled separately from LogHub and JSON inputs.

Evidence and reproduction

cargo test --offline --locked --lib --tests
cargo build --release --offline --locked --bin pizd --example public_log_panel
python3 tools/run_public_log_panel.py --workspace-build
python3 tools/benchmark_decoder_arenas.py
python3 tools/validate_decoder_arenas.py
python3 tools/render_decoder_arenas.py

The public runner requires the pinned corpus manifest and cached verified inputs. The paired script requires the retained 4.2.0 control worker. paired_manifest.json, paired_summary.json, paired_per_file.json, paired_validation.json, six raw CSVs and compressed per-round logs retain the comparison. cli_validation.json records real archive/source identities. The current public report retains the source snapshot and build/input hashes. Frozen4.2.0 reports and research prototypes remain separately labeled.