Skip to content

Latest commit

 

History

History
286 lines (201 loc) · 9.12 KB

CHANGELOG.md

File metadata and controls

286 lines (201 loc) · 9.12 KB

Changelog

All notable changes to this project will be documented here. For a list of contributors, see the Contributors page.

The format is based on Keep a Changelog 1.1.0. This project has adhered to Semantic Versioning 2.0.0 since version 3.0.0.

5.0.1 - 2024-09-22

Fixed

  • Fix the issue that the package cannot be built from the source distribution (#90).

5.0.0 - 2024-09-18

Added

  • Add support for Python 3.13.
  • Improve the performance of the hash() function with METH_FASTCALL, reducing the overhead of function calls. For data sizes between 1–2 KB (e.g., 48x48 favicons), performance is 10%–20% faster. For smaller data (~500 bytes, like 16x16 favicons), performance increases by approximately 30% (#87).
  • Add digest functions that support the new buffer protocol (PEP 688) as input (#75). These functions are implemented with METH_FASTCALL too, offering improved performance (#84).
  • Slightly improve the performance of the hash_bytes() function (#88)
  • Add Read the Docs documentation (#54).
  • Document benchmark results (#53).

Changed

  • Backward-incompatible: The seed argument is now strictly validated to ensure it falls within the range [0, 0xFFFFFFFF]. A ValueError is raised if the seed is out of range (#84).
  • Backward-incompatible: Change the constructors of hasher classes to accept a buffer as the first argument (#83).
  • The type of flag argumens has been changed from bool to Any (#84).
  • Change the format of CHANGELOG.md to conform to the Keep a Changelog standard (#63).

Deprecated

  • Deprecate the hash_from_buffer() function. Use mmh3_32_sintdigest() or mmh3_32_uintdigest() as alternatives (#84).

Fixed

  • Fix a reference leak in the hash_from_buffer() function (#75).
  • Fix type hints (#76, #77, #84).

4.1.0 - 2024-01-09

Added

  • Add support for Python 3.12.

Fixed

  • Fix issues with Bazel by changing the directory structure of the project (#50).
  • Fix incorrect type hints (#51).
  • Fix invalid results on s390x when the arg x64arch of hash64 or hash_bytes() is set to False (#52).

4.0.1 - 2023-07-14

Changed

  • Refactor the project structure (#48).

Fixed

  • Fix incorrect type hints.

4.0.0 - 2023-05-22

Added

  • Add experimental support for hashlib-compliant hasher classes (#39). Note that they are not yet fully tuned for performance.
  • Add support for type hints (#44).
  • Add wheels for more platforms (musllinux, s390x, win_arm64, and macosx_universal2).
  • Add a code of conduct (the ACM Code of Ethics and Professional Conduct).

Changed

  • Switch license from CC0 to MIT (#43).

Removed

  • Backward-incompatible: A hash function now returns the same value under big-endian platforms as that under little-endian ones (#47).
  • Backward-incompatible: Remove the __version__ constant from the module (#42). Use importlib.metadata instead.
  • Drop support for Python 3.7, as it will reach the end of life on 2023-06-27.

3.1.0 - 2023-03-24

Added

  • Add support for Python 3.10 and 3.11 (#35, #37).
  • Add support for 32-bit architectures such as i686 and armv7l. From now on, hash() and hash_from_buffer() on these architectures will generate the same hash values as those on other environments (#40).
  • In relation to the above, manylinux2014_i686 wheels are now available.
  • Support for hashing huge data (>16GB) (#34).

Removed

  • Drop support for Python 3.6; remove legacy code for Python 2.x at the source code level.

3.0.0 - 2021-02-23

Added

  • Python wheels are now available, thanks to the power of cibuildwheel.
    • Supported platforms are manylinux1_x86_64, manylinux2010_x86_64, manylinux2014_aarch64, win32, win_amd64, macosx_10_9_x86_64, and macosx_11_0_arm64 (Apple Silicon).
  • Add support for newer macOS environments (#22).
  • Add support for Python 3.7, 3.8, and 3.9.

Changed

  • Migrate CI from Travis CI and AppVeyor to GitHub Actions.

Removed

  • Drop support for Python 2.7, 3.3, 3.4, and 3.5.

2.5.1 - 2017-10-31

Fixed

  • Bugfix for hash_bytes() (#15).

2.5 - 2017-10-28

Added

  • Add hash_from_buffer() (#13).
  • Add a keyword argument signed.

2.4 - 2017-05-27

Added

  • Support seeds with 32-bit unsigned integers (#6).
  • Support 64-bit data (under 64-bit environments)
  • Add unit testing and continuous integration with Travis CI and AppVeyor.

Fixed

  • Fix compile errors for Python 3.6 under Windows systems.

2.3.2 - 2017-05-26

Changed

  • Relicensed from public domain to CC0-1.0.

2.3.1 - 2015-06-07

Fixed

  • Fix compile errors for gcc >=5.

2.3 - 2013-12-08

Added

  • Add hash128(), which returns a 128-bit signed integer (#3).

Fixed

  • Fix a misplaced operator which could cause memory leak in a rare condition (#2).
  • Fix a malformed value to a Python/C API function which may cause runtime errors in recent Python 3.x versions.

2.2 - 2013-03-03

Added

  • Improve portability to support systems with old gcc (version < 4.4) such as CentOS/RHEL 5.x (#1).

2.1 - 2013-02-25

Added

  • Add __version__ constant. Check if it exists when the following revision matters for your application.

Changed

  • Incorporate the revision r147, which includes robustness improvement and minor tweaks.

Beware that due to this revision, the result of 32-bit version of 2.1 is NOT the same as that of 2.0. E.g.,:

>>> mmh3.hash("foo") # in mmh3 2.0
-292180858
>>> mmh3.hash("foo") # in mmh3 2.1
-156908512

The results of hash64 and hash_bytes remain unchanged. Austin Appleby, the author of Murmurhash, ensured this revision was the final modification to MurmurHash3's results and any future changes would be to improve performance only.

2.0 - 2011-06-07

Added

  • Support both Python 2.7 and 3.x.

Changed

  • Change the module interface.

1.0 - 2011-04-27

Added