Skip to content

libasyncio: decouple compression from zstd - #3

Merged
IvanCraft623 merged 5 commits into
masterfrom
decouple-zstd
Aug 21, 2026
Merged

libasyncio: decouple compression from zstd#3
IvanCraft623 merged 5 commits into
masterfrom
decouple-zstd

Conversation

@IvanCraft623

Copy link
Copy Markdown
Member

This changes makes libasyncio support base PMMP

What Changed

New libasyncio\compression subpackage:

  • CompressionFormat enum (ZSTD, DEFLATE, GZIP) with archive file extension and PHP extension mappings
  • Compressor interface with backends: Zstd, Deflate, Gzip
  • Compression factory methods:
    • get() — retrieves a format; throws if extension not loaded
    • auto() — libdeflate-accelerated ZSTD → DEFLATE → GZIP fallback chain
    • fromPath() — detects format from archive filename

Updated compression classes:

  • ZstdRecursiveCompressorRecursiveCompressor (now accepts optional CompressionFormat; zstd-specific constants removed; fully backwards compatible)
  • FileOrDirectoryCompressTask / FileOrDirectoryUncompressTask — now accept optional format and compression level parameters

Breaking Changes

  • composer.json: php: ^8.0^8.1 (matches PM5's minimum; NG runs 8.4)
  • FileOrDirectoryCompressTask / FileOrDirectoryUncompressTask: added optional Compressor $compressor parameter
    • ⚠️ Existing NG code unaffected (uses Compression::auto() which falls back to ZSTD gracefully)

@IvanCraft623
IvanCraft623 merged commit 2615410 into master Aug 21, 2026
16 checks passed
@IvanCraft623
IvanCraft623 deleted the decouple-zstd branch August 21, 2026 04:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants