NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1261 most downloaded on PyPI
PPMd compression/decompression library
Last release 10 months ago
27 Nov 2025
Release timing varies
gaps range from 1 weeks to 1.3 years
Nearly every release is documented
notes for 23 of 23 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
26 releases · first in 2021
One column per quarter.
Fix publish CI/CD configuration
Bump musllinux image musllinux_1_2
Bump manylinux image manylinux_2_28
Add Windows on Arm64, Linux on aarch64 support
Add Windows on Arm64, Linux on aarch64 support
Released from GitHub Actions as trusted platform
Signed-off-by: Hiroshi Miura miurahr@linux.com
Signed-off-by: Hiroshi Miura miurahr@linux.com
Add Python 3.13 support
Minimum required python to be 3.9
Support CPython versions: 3.12, 3.11, 3.10, 3.9, 3.8
Signed-off-by: Hiroshi Miura miurahr@linux.com
Add Python 3.12 support
Minimum required python to be 3.8
Export PPMD8_RESTORE_METHOD_* constants
Drop setup.cfg
Drop github actions workflows
README: Add SPDX identifier
CI run on python 3.10, 3.11 and 3.12
Support CPython versions: 3.12, 3.11, 3.10, 3.9, 3.8
Signed-off-by: Hiroshi Miura miurahr@linux.com
Signed-off-by: Hiroshi Miura miurahr@linux.com
Signed-off-by: Hiroshi Miura miurahr@linux.com
Fix publish script to make sdist and upload it.
Move CI on Azure pipelines
Migrate forge site to CodeBerg.org
Drop release-note and stale actions
Signed-off-by: Hiroshi Miura miurahr@linux.com
Signed-off-by: Hiroshi Miura miurahr@linux.com
Signed-off-by: Hiroshi Miura miurahr@linux.com
Signed-off-by: Hiroshi Miura miurahr@linux.com
Release wheel for python 3.11 beta
Release wheel for python 3.11 beta
CI: update setuptools before test run (#115)
CI: fix error on tox test on aarch64.
Bump pypa/cibuildwheel@2.7.0 (#116)
Bump actions/setup-python@v4 (#114)
Bump actions/download-artifact, actions/upload-artifact@v3 (#105,#106)
CI: Test with python 3.11 beta(#112)
Update license notifications
Move C sources under src/lib folder
Release wheel for python 3.11 beta
CI: update setuptools before test run (#115)
CI: fix error on tox test on aarch64.
Bump pypa/cibuildwheel @ 2 . 7 . 0 (#116)
Bump actions/setup-python @ v4 (#114)
Bump actions/download-artifact, actions/upload-artifact @ v3 (#105,#106)
CI: Test with python 3.11 beta(#112)
Update license notifications
Move C sources under src/lib folder
Publish wheel package for python 3.10 on macos.
Publish wheel package for python 3.10 on macos.
pyproject.toml: add "version" as dynamic (#100)
Update security policy to support version to be 0.18.x
Move old changelog to Chanlog.old.rst
Installation error with recent pip version (#94, #95)
Installation error with recent pip version (#94, #95) * Add metadata in pyproject.toml
PPMd8: check double flush(#96)
test: Fix fuzzer error with silent null byte
test: Fix fuzzer error with silent null byte (#89)
test: 32bit test memory parameter too large(#90)
PPMd7: avoid access violation on dealloc when failed in allocation (#91)
PPMd7: decoder.eof and decoder.needs_input return proper value(#92)
PPMd7,PPMd8: fix struct definition by include process.h in windows This may cause crash on 32bit version of python on windows(#86)
PPMd7: decompressor use threading(#85)
doc: Explanation of Extra silent null byte in README
- ppmd7: allow multiple decode without additional input data
ppmd7: allow multiple decode without additional input data (#84)
ppmd8: test: Fix fuzzer test program (#82)
CI: bump actions/checkout @ v3 (#81)
CI: bump actions/setup-python @ v3 (#80)
CI: bump pypa/cibuildwheel @ 2 . 3 . 1 (#78)
Update 32bit detection logic
ppmd7: allow multiple decode without additional input data (#84)
ppmd8: test: Fix fuzzer test program (#82)
CI: bump actions/checkout@v3 (#81)
CI: bump actions/setup-python@v3 (#80)
CI: bump pypa/cibuildwheel@2.3.1 (#78)
Update 32bit detection logic
- Build on MingW/MSYS2(#68,#69)
Build on MingW/MSYS2(#68,#69)
Test on Python 3.10.0, PyPY-3.6 and PyPy-3.7 (#71)
CI: use pypa/ciwheelbuild(#70)
CI: add dependabot(#70)
Bump versions
CI: pypa/ciwheelbuild @ 2 . 2 . 2 - CI: run-on-arch @ 2 . 1 . 1 - CI: actions/stale@4
CI: exclude pypy on windows
CI: exclude cp310-macos because python 3.10 for macos is superceded
CI: publish musllinux wheel
CI: improve cibuildwheel performance
### Added - Wheels for python 3.10
Wheels for python 3.10
- unified API for variation H and I
unified API for variation H and I
ppmd7, ppmd8: flag to control endmark(-1) addtions. defaults: ppmd7 without endmark, ppmd8: with endmark.
Unified API to use Variant H, and Varant I version 2 from simple API. User can provide variant argument to the constractor. (#59)
Allocate PPMD7Decompressor buffer variables from heap(#52)
Replace pthread wrapper library to the verison of one made by Lockless. Inc. (#67)
Refactoring internal variable namees, move thread shared variable into ThreadControl structure.
More robust PPMd8Decompressor by taking thread control variables and buffers from heap, and remove global variables.(#54)
PPMD8Decoder: Deadlock on Windows(#67 and more)
End-mark (0x01 0x00) mode(#62)
### Added - CI: add macOS as test matrix(#51) ### Fixed - Fix osX bulid error(#49,#50)
CI: add macOS as test matrix(#51)
Fix osX bulid error(#49,#50)
- PPMd8: support endmark option
PPMd8: support endmark option(#39)
PPMd8: support restore_method option(#24, @cielavenir)
Add pthread wrapper for macOS and Windows(#33)
PPMd8: decompressor use threading(#24,#33)
PPMd8: Decompressor become wrong status when memory_size is smaller than file size(#24,#25,#28,#33,#45,#46)
PPMd8: Decompressor allocate buffers by PyMem_Malloc() (#42)
CMake: support CFFI extension generation(#30)
CMake: support debug flag for extension development(#27)
CMake: support pytest_runner on windows
CI: run tox test on pull_request
- Add development note using cmake
Add development note using cmake
Make CMake build script working
Hardening for multiplexing overflow(scan#1)
- Badge for conda-forge package
Badge for conda-forge package(#19)
Test document with tox
Fix setup.py: pyppmd.egg-info/SOURCES.txt not including full path
Fix source package not include .git* files(#20)
Fix compiler warning by cast.
- Now development status is Beta.
Now development status is Beta.
Introduce PpmdCompressor and PpmdDecompressor class for stream compression.
Introduce decompress_str() one-shot utility to return str object.
decompress() always return bytes object.
PPMd8: drop length mode for decompression and always use end mark mode.
PPMd8: drop flush() method for decompression.
- Introduce compress() and decompress() one-shot utility
Introduce compress() and decompress() one-shot utility
compress() accept bytes-like object or string. When string, encode it to UTF-8 first.
decompress() has an argument encoding, if specified, it returns string.
C: CFFI: Introduce End-Mark mode for PPMd8
C: Limit initial output buffer size as same as specified length.
C: Allow python thread when decode/encode loop running.
- Benchmark test to show performance
Benchmark test to show performance
Change folder structures in source.
Release resources on flush()
Fix input buffer overrun(#8)
### Fixed - Fix dist of typing stubs
Fix dist of typing stubs
Ppmd8Encoder, Ppmd8Decoder class
add PPMd varietion I (PPMd8)
Ppmd8Encoder, Ppmd8Decoder class
MyPy typing stubs
switch to LGPLv2.1+ License
Introduce flush() method for decode class.
Fix build error on Windows.
### Fixed - Fix Packaging configuration
Fix Packaging configuration
Your coding agent can read these notes before it upgrades. Set up the MCP server →