Skip to content

Gleipnir 1.0.1

Choose a tag to compare

@github-actions github-actions released this 31 Aug 22:39
· 33 commits to main since this release

Gleipnir is a context-mixing lossless compressor and archiver in one C file. It
predicts each bit with 27 statistical models, blends them with a learned mixer,
and codes the result with an arithmetic coder. There is no dictionary in the
output at all.

New here? Download and install instructions are in the README — plain numbered steps for Windows and Linux.

What's new in 1.0.1

The engine is unchanged from 1.0.0 — output is byte-identical and archives are
compatible in both directions. This release is about getting it into people's
hands:

  • One-click Windows installer (gleipnir-1.0.1-setup.exe) — per-user, no
    administrator prompt. Adds gleipnir to your PATH and a Compress with
    Gleipnir
    entry to the File Explorer right-click menu (plus Extract / Verify
    / List on .gl files).
  • The Linux binary is now statically linked, so it runs on any x86-64 Linux
    with nothing to install — no glibc version requirement, no libz.so.1.
  • Every artifact here is built and tested by CI for this exact commit
    (Linux + Windows build, round-trip, corruption fuzz, and a cross-platform
    read check), so each hash below is checkable against that run.

Silesia

211,938,580 bytes, one machine, single thread, every gleipnir row round-trip
verified against its SHA-256.

                      total       ratio     bpc     comp     decomp          peak
gleipnir -9           35,582,296       5.96x   1.343     597s       672s       1055 MB
gleipnir -7           36,493,092       5.81x   1.377     451s       467s        922 MB
gleipnir -5           38,273,415       5.54x   1.445     337s       342s        483 MB
zpaq -m5         39,113,069       5.42x   1.476     559s       582s      839 MB *
gleipnir -3           39,510,297       5.36x   1.491     248s       248s        305 MB
lpaq1 -6         43,006,234       4.93x   1.623     173s       186s      199 MB *
gleipnir -1           43,207,157       4.91x   1.631     139s       139s        196 MB
xz -9e           48,456,100       4.37x   1.829     114s         2s      509 MB *

Codecs marked * do not report their own peak RSS, so those figures are sampled
at 50 ms and are a lower bound. The peak column is compression; decompression
peaks 37-40 MB higher at every preset.

Decompression costs the same as compression, because the decoder runs the
same model. That is inherent to context mixing and it is why this is built for
data you keep and rarely read, not for general-purpose use.

Integrity

The gate is that for any input, damaged or not, Gleipnir either exits 0 with
byte-exact output or exits non-zero with a diagnostic.

  • 648 round trips, all exact
  • 60 round trips across 6 thread counts, all exact
  • 300 randomized corruption trials across 7 damage models: no crash, no hang,
    and no case of exit 0 with wrong output

CI builds and fuzzes on Linux and Windows, and verifies that an archive written
on Linux reads on Windows.

Downloads

gleipnir-1.0.1-setup.exe      b577e5f2a6355568cf105c72df45e268d9db35267cf69d7cba4e38141289cb12
gleipnir.exe                  ab04043c4df4ee39aa14079ce2672d82a53c4527205c9af97532278093c6e00b
gleipnir-windows-x86_64.zip   f54e4149fac903bbdcbf6bbe516c890b895ec9a3536ef8eaaf06c6ae96039a4f
gleipnir-linux-x86_64         7d552c810cb47f156a0153e39c9956aa4020685b5d6613df534e2f6af8c85e5e
  • gleipnir-1.0.1-setup.exe — Windows one-click installer (recommended). Double-click, click through, done. Per-user, so no administrator prompt. Not code-signed, so SmartScreen warns the first time: More info → Run anyway.
  • gleipnir.exe — the whole program in one file, no installer. Statically linked, KERNEL32 and the UCRT only, so it runs on Windows 10 and later with nothing else.
  • gleipnir-windows-x86_64.zip — the same gleipnir.exe plus a script install (install.ps1) for people who would rather not run an unsigned installer.
  • gleipnir-linux-x86_64 — statically linked, so it runs on any x86-64 Linux with nothing to install. chmod +x it and go.

The binaries are built -march=x86-64-v2 (SSE4.2/POPCNT, any x86-64 CPU from roughly 2009 on), never -march=native.

Licence

GPL-3.0-or-later. First published under the Business Source License 1.1 (as
Nyx 1.0.0) with a Change Date of 2030-08-04; that conversion has been brought
forward and the BSL terms no longer apply to any version.

The engine's lineage is PAQ, ZPAQ and lpaq. Bit-history states, logistic mixing
in the stretched domain, ISSE chains and SSE/APM refinement are all from Matt
Mahoney's work. No PAQ code is used here, but the ideas are not mine.