1.29.0 REDLINE · Linux x86-64 · released 2026-09-08
ZJX
Lossless archives for structured data.
Compact when size matters. Fast when balance matters. Ultrafast when wall time matters.
Three objectives
Choose what each archive optimizes for.
One format, one integrity contract, three creation schedules. Compact and fast are unchanged from 1.28.0; ultrafast is new in 1.29.0.
when size matters
Compact
The size-first default. Tries several representations of each input and keeps whichever produces the smallest complete archive. Unchanged from 1.28.0: on the qualification corpora its archives are byte-identical to 1.28.0's.
Creating archiveswhen balance matters
Fast
A fixed reduced schedule for less creation time with a size-first result. Unchanged from 1.28.0: byte-identical archives on the qualification corpora, no measured slowdown.
Creating archiveswhen wall time matters
Ultrafast
New in 1.29. One Zstandard level-1 attempt per unit with pass-through as the fallback; no candidate search, no solid encoding, no dictionary training. A deterministic parallel packer and a streaming parallel verifier, four workers by default and up to eight. Archives are larger than compact or fast; every integrity guarantee is kept.
The 1.29 support contract
Measured result
One dataset, complete archive sizes.
Real service telemetry archived by ZJX on the compact objective, which writes the same bytes in 1.28.0 and 1.29.0, and by fourteen comparator configurations at strong settings. Pick a configuration; the bars, values, and difference change together.
38.1% smaller zpaq -m5
ZJX 1.29.0 compact: 4,412,984 bytes. zpaq -m5: 7,125,674 bytes. ZJX is 38.1% smaller.
One telemetry datasetComplete archive sizesResults vary by workload
Campaign source noteAll 14 comparator configurations
Every configuration as a table
| Configuration | Archive bytes | Compared with ZJX compact | Restored and matched |
|---|---|---|---|
| ZJX 1.29.0 compact | 4,412,984 | ZJX result | yes |
| ZJX 1.29.0 fast | 4,412,984 | ZJX result | yes |
| zpaq -m5 | 7,125,674 | ZJX is 38.1% smaller (strongest comparator) | yes |
| zstd --ultra -22 --long=31 (tar) | 7,280,110 | ZJX is 39.4% smaller | yes |
| brotli -q 11 (tar) | 7,345,538 | ZJX is 39.9% smaller | yes |
| xz -9e (tar) | 7,612,052 | ZJX is 42.0% smaller | yes |
| zstd -19 --long=31 (tar) | 7,800,328 | ZJX is 43.4% smaller | yes |
| zstd -19 (tar) | 8,149,050 | ZJX is 45.8% smaller | yes |
| 7-Zip LZMA2 -mx=9, single thread | 9,392,518 | ZJX is 53.0% smaller | yes |
| 7-Zip LZMA2 -mx=9 | 9,666,962 | ZJX is 54.3% smaller | yes |
| RAR5 -m5 | 9,842,920 | ZJX is 55.2% smaller | yes |
| 7-Zip PPMd -mx=9 | 12,612,270 | ZJX is 65.0% smaller | yes |
| bzip2 -9 (tar) | 34,456,468 | ZJX is 87.2% smaller | yes |
| gzip -9 (tar) | 40,176,031 | ZJX is 89.0% smaller | yes |
| zip -9 (deflate) | 40,176,334 | ZJX is 89.0% smaller | yes |
| lz4 -12 (tar) | 56,999,958 | ZJX is 92.3% smaller | yes |
Qualified speed result
Ultrafast, measured on two cohorts.
Verified creation of the 1.29.0 default invocation against default tar | zstd -1 on a quiesced laboratory host. Two campaigns, two figures, never one statistic.
Development cohort (RG017)
Sealed development cohort: silesia, enwik8, and a synthetic deduplication case; 12 paired rounds, 468 of 468 cells usable. Development cohort, not held out; the recipe was calibrated on these corpora.
1.247x the verified-creation speed of default tar | zstd -195% [1.223, 1.267]; Bonferroni over the three preregistered primary comparisons, lower bound 1.221; archive bytes 1.0005x the comparator's
Against default tar | zstd -1
Primary comparison: 95% [1.223, 1.267], Bonferroni-adjusted lower bound 1.221. About 1.19x the comparator's CPU.
Against the matched thread budget
ZJX keeps 82.0% of the four-thread comparator's throughput, 95% [0.807, 0.832]; -T0 measured the same. Exploratory comparison, disclosed because it is a loss.
Held-out cohort (RG018, one shot)
Four sealed members plus six privately held-out cases (about 1.86 GB, six workload classes) selected by a rule frozen before any measurement; ten classes, 12 paired rounds, 360 of 360 cells usable, run once. Held out and unseen at the freeze. The gate passed on its preregistered class structure with a thin margin; the six held-out cases alone would not have met the lower bound.
1.1959x the verified-creation speed of default tar | zstd -195% [1.1867, 1.2043]; 6 of 6 held-out cases restored exactly before the timed rounds
Against default tar | zstd -1
Reported lane: 95% [1.1867, 1.2043]. Faster on seven of ten cases, slower on the three smallest archives.
The preregistered gate: matched thread budget
Class-weighted point 0.8236; 95% bootstrap interval on a single preregistered comparison; no familywise adjustment: lower bound 0.8170 against a required 0.80. The gate passed by a thin margin. ZJX was slower on 7 of 10 cases, and the six held-out cases alone read 0.7917 [0.7832, 0.8004].
Two campaigns, reported apartSlower than tar | zstd -1 -T4No leadership claimLarger archives than compact
Both campaigns in fullPublic release recordRelease Chronicle (free)
Interactive archive walkthrough
Handle a recorded archive.
Recorded example. This page does not run ZJX or upload files.
A small synthetic project tree, archived once with the released 1.28.0 package, then inspected member by member and restored. Every control replays a saved outcome.
1Create
Recorded input: 6 files, 1 symbolic link, and 6 directories, 51,849 bytes in total. Synthetic, public-safe fixture generated by a seeded script: made-up service events, a settings file, a latency summary, a rotation script, and one relative symbolic link. No customer data.
- Product
- ZJX 1.28.0 LOCKWIRE, released package (executable SHA-256 prefix 10ee0d9e)
- Objective and profile
- compact objective, exact metadata profile
- Recorded archive
- 5,164 bytes, digest prefix 8cdc660a4fad
- Publication
- committed, cleanup complete, durability synchronized
- Metadata loss
- none (nothing was refused or dropped)
| Member | Type | Bytes or target | Mode | Modified (UTC) |
|---|---|---|---|---|
| README.md | file | 730 | 0644 | 2026-09-05T07:00:00.123456789Z |
| config/ | directory | 0755 | 2026-09-05T07:00:00.000000000Z | |
| config/settings.json | file | 303 | 0644 | 2026-09-05T07:01:00.000000000Z |
| docs/ | directory | 0755 | 2026-09-05T07:00:00.000000000Z | |
| docs/latest-readme.md | symbolic link | ../README.md | link | 2026-09-05T07:00:00.123456789Z |
| logs/ | directory | 0755 | 2026-09-05T07:00:00.000000000Z | |
| logs/service-2026-09-01.jsonl | file | 23,914 | 0644 | 2026-09-06T07:59:59.987654321Z |
| logs/service-2026-09-02.jsonl | file | 26,466 | 0644 | 2026-09-07T07:59:59.500000000Z |
| reports/ | directory | 0755 | 2026-09-05T07:00:00.000000000Z | |
| reports/latency-summary.csv | file | 197 | 0644 | 2026-09-07T08:02:00.250000000Z |
| scripts/ | directory | 0755 | 2026-09-05T07:00:00.000000000Z | |
| scripts/rotate-logs.sh | file | 239 | 0755 | 2026-09-05T07:02:00.000000001Z |
2Inspect
Recorded inspection of the archive: listing complete with 13 members, decoder readiness ready, manifest integrity sha256-prefix-16, payload digests verified without extracting (51,849 file bytes).
Select a member in the list to see its recorded metadata.
- Member
- Type
- Size or target
- Mode
- Modified (UTC)
- Content digest
3Restore
Recorded full restore into a fresh destination: 6 files and 1 link, 51,849 bytes, publication committed. Dry run first reported destination absent and 6 planned files.
Recorded match: every member compared equal to its source
| Member | Compared | Content or target | Permission bits | Modified time (ns) |
|---|---|---|---|---|
| README.md | contents (SHA-256) | match | match | match |
| config/ | directory | n/a | match | match |
| config/settings.json | contents (SHA-256) | match | match | match |
| docs/ | directory | n/a | match | match |
| docs/latest-readme.md | link target | match | not stored | match |
| logs/ | directory | n/a | match | match |
| logs/service-2026-09-01.jsonl | contents (SHA-256) | match | match | match |
| logs/service-2026-09-02.jsonl | contents (SHA-256) | match | match | match |
| reports/ | directory | n/a | match | match |
| reports/latency-summary.csv | contents (SHA-256) | match | match | match |
| scripts/ | directory | n/a | match | match |
| scripts/rotate-logs.sh | contents (SHA-256) | match | match | match |
Selected restore
One member, logs/service-2026-09-02.jsonl, restored on its own: 26,466 bytes, contents match, permission bits match, modified time match. The whole archive is verified before a selection is published.
Owner and group are never stored. Parent folders created by the selected restore carry the restore time, as the support matrix describes. Listing, testing, and comparing restored content are separate recorded facts; none stands in for another.
Capabilities
What an archive holds.
Four points on one schematic. Each opens the short version; the documentation carries the full support contract.
Members
Files, directory trees, and safe relative symbolic links from one input or many, with file lists and include and exclude filters. Members list without extracting.
Creating and listing archivesVerification
Every payload carries a digest and every archive since 1.28 carries a manifest digest footer. Testing checks them without extracting; a restore verifies the whole archive before anything is published.
Inspecting and verifyingProtection
A password-protected archive wraps an ordinary archive in an authenticated-encryption envelope, so names and metadata are encrypted with the contents. Qualified on Linux; a lost password cannot be recovered.
Password-protected archivesRestore
Restore everything or selected members into a fresh destination published with one atomic rename. Contents, permission bits, nanosecond timestamps, and safe links come back under the exact profile.
Restoring and the fidelity contract
Current release
ZJX 1.29.0 REDLINE
Released 2026-09-08Linux x86-64Tag v1.29.0Package literal 1.29.0-rc3
ZJX 1.29 REDLINE is the current release line. It adds the ultrafast objective beside compact and fast, with four workers by default; every REDLINE product gate passed on the frozen candidate and ZJX 1.29.0 was released on 2026-09-08. The published package is the qualified candidate promoted unchanged.
Release historyRelease ChronicleCommercial evaluationStorage economics
Demo reel
Watch the desktop wrapper in three minutes.
Recorded with the ZJX desktop wrapper, which is laboratory tooling and not a supported download. The narration quotes the published 2026-09-06 size campaign; the software shown is 1.28.0 and the title cards use the 1.29 REDLINE codename art.