PyPPMd ChangeLog

All notable changes to this project will be documented in this file.

Unreleased

v0.18.3

Added

  • Release wheel for python 3.11 beta

Fixed

  • CI: update setuptools before test run (#115)

  • CI: fix error on tox test on aarch64.

Changed

v0.18.2

Fixed

  • Publish wheel package for python 3.10 on macos.

  • pyproject.toml: add “version” as dynamic (#100)

Changed

  • Update security policy to support version to be 0.18.x

  • Move old changelog to Chanlog.old.rst

v0.18.1

Fixed

  • Installation error with recent pip version (#94, #95) * Add metadata in pyproject.toml

  • PPMd8: check double flush(#96)

v0.18.0

Fixed

  • 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)

Security

  • PPMd7,PPMd8: fix struct definition by include process.h in windows This may cause crash on 32bit version of python on windows(#86)

Changed

  • PPMd7: decompressor use threading(#85)

Added

  • doc: Explanation of Extra silent null byte in README

v0.17.4

Fixed

  • ppmd7: allow multiple decode without additional input data (#84)

  • ppmd8: test: Fix fuzzer test program (#82)

Changed

v0.17.3

Fixed

  • Build on MingW/MSYS2(#68,#69)

Added

  • Test on Python 3.10.0, PyPY-3.6 and PyPy-3.7 (#71)

Changed

  • 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

v0.17.1

Added

  • Wheels for python 3.10

v0.17.0

Added

  • unified API for variation H and I

  • ppmd7, ppmd8: flag to control endmark(-1) addtions. defaults: ppmd7 without endmark, ppmd8: with endmark.

Changed

  • 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.

Fixed

  • More robust PPMd8Decompressor by taking thread control variables and buffers from heap, and remove global variables.(#54)

  • PPMD8Decoder: Deadlock on Windows(#67 and more)

Deprecated

Removed

  • End-mark (0x01 0x00) mode(#62)

Security

v0.16.1

Added

  • CI: add macOS as test matrix(#51)

Fixed

  • Fix osX bulid error(#49,#50)

v0.16.0

Added

  • PPMd8: support endmark option(#39)

  • PPMd8: support restore_method option(#24, @cielavenir)

  • Add pthread wrapper for macOS and Windows(#33)

Changed

  • PPMd8: decompressor use threading(#24,#33)

Fixed

  • 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

v0.15.2

Added

  • Add development note using cmake

Fixed

  • Make CMake build script working

Security

  • Hardening for multiplexing overflow(scan#1)

v0.15.1

Added

  • Badge for conda-forge package(#19)

Changed

  • Test document with tox

Fixed

  • 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.

v0.15.0

  • Now development status is Beta.

Added

  • Introduce PpmdCompressor and PpmdDecompressor class for stream compression.

  • Introduce decompress_str() one-shot utility to return str object.

Changed

  • decompress() always return bytes object.

Deprecated

  • PPMd8: drop length mode for decompression and always use end mark mode.

  • PPMd8: drop flush() method for decompression.

v0.14.0

Added

  • 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

Changed

  • C: Limit initial output buffer size as same as specified length.

  • C: Allow python thread when decode/encode loop running.

v0.13.0

Added

  • Benchmark test to show performance

Changed

  • Change folder structures in source.

  • Release resources on flush()

Fixed

  • Fix input buffer overrun(#8)

v0.12.1

Fixed

  • Fix dist of typing stubs

v0.12.0

Added

  • add PPMd varietion I (PPMd8) - Ppmd8Encoder, Ppmd8Decoder class

  • MyPy typing stubs

Changed

  • switch to LGPLv2.1+ License

  • Introduce flush() method for decode class.

Fixed

  • Fix build error on Windows.

v0.11.1

Fixed

  • Fix Packaging configuration

v0.11.0

Fixed

  • Better error handling for memory management.

Changed

  • Skip hypothesis tests on windows

  • Limit hypothesis tests parameter under available memory.

v0.10.0

  • First Alpha