.. include:: ../Changelog.rst

.. past changelog before v0.18.0

`v0.17.4`_
==========
Fixed
-----
* ppmd7: allow multiple decode without additional input data (#84)
* ppmd8: test: Fix fuzzer test program (#82)

Changed
-------
* 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

`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

.. History links
.. _v0.18.0: https://github.com/miurahr/pyppmd/compare/v0.17.4...v0.18.0
.. _v0.17.4: https://github.com/miurahr/pyppmd/compare/v0.17.3...v0.17.4
.. _v0.17.3: https://github.com/miurahr/pyppmd/compare/v0.17.1...v0.17.3
.. _v0.17.1: https://github.com/miurahr/pyppmd/compare/v0.17.0...v0.17.1
.. _v0.17.0: https://github.com/miurahr/pyppmd/compare/v0.16.1...v0.17.0
.. _v0.16.1: https://github.com/miurahr/pyppmd/compare/v0.16.0...v0.16.1
.. _v0.16.0: https://github.com/miurahr/pyppmd/compare/v0.15.2...v0.16.0
.. _v0.15.2: https://github.com/miurahr/pyppmd/compare/v0.15.1...v0.15.2
.. _v0.15.1: https://github.com/miurahr/pyppmd/compare/v0.15.0...v0.15.1
.. _v0.15.0: https://github.com/miurahr/pyppmd/compare/v0.14.0...v0.15.0
.. _v0.14.0: https://github.com/miurahr/pyppmd/compare/v0.13.0...v0.14.0
.. _v0.13.0: https://github.com/miurahr/pyppmd/compare/v0.12.1...v0.13.0
.. _v0.12.1: https://github.com/miurahr/pyppmd/compare/v0.12.0...v0.12.1
.. _v0.12.0: https://github.com/miurahr/pyppmd/compare/v0.11.1...v0.12.0
.. _v0.11.1: https://github.com/miurahr/pyppmd/compare/v0.11.0...v0.11.1
.. _v0.11.0: https://github.com/miurahr/pyppmd/compare/v0.10.0...v0.11.0
