You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Add multi-threaded compression via SQ01 multi-block format
The model pipeline is bit-serial within a stream, so parallelism comes
from chunking: the SQ01 container wraps independent SQ02 chunk streams
that compress and decompress concurrently, one model per worker.
- New API: squish_compress_mt / squish_decompress_mt, _alloc_mt and
_file_mt variants, squish_threads(); progress callbacks are
aggregated across chunks and stay monotonic
- Output depends only on the chunk size (default 16 MiB, min 64 KiB),
never on the thread count; inputs no larger than one chunk emit a
plain SQ02 stream, and the compress_bound guarantee is preserved via
a whole-input stored-mode fallback
- Existing decompression entry points read SQ01 transparently; nested
SQ01 containers are rejected
- CLI: -t/--threads (compress defaults to 1, keeping the ratio-optimal
single-block format; decompress uses all cores) and -b/--block MiB;
status line/summary now use a wall clock instead of clock()
- Threads: pthreads on POSIX (-pthread added to Makefile and squish.pc),
native Win32 threads on Windows
- The SQ01 magic previously named an unreleased pre-1.0 draft that no
reader accepted; FORMAT.md documents the reassignment
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
0 commit comments