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.2.1 - 2026-03-06#
Added#
Add support for the Android wheel for Python 3.14.
Removed#
Drop support for Python 3.9, as it has reached the end of life on 2025-10-31.
5.2.0 - 2025-07-29#
Added#
Add support for Python 3.14, including 3.14t (no-GIL) wheels. However, thread safety for the no-GIL variant is not fully tested yet. Please report any issues you encounter (#134, #136).
Add support for Android (Python 3.13 only) and iOS (Python 3.13 and 3.14) wheels, enabled by the major version update of cibuildwheel (#135).
5.1.0 - 2025-01-25#
Added#
Improve the performance of
hash128(),hash64(), andhash_bytes()by using METH_FASTCALL, reducing the overhead of function calls (#116).Add the software paper for this library (doi:10.21105/joss.06124), following its publication in the Journal of Open Source Software (#118).
Removed#
Drop support for Python 3.8, as it has reached the end of life on 2024-10-07 (#117).
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
digestfunctions that support the new buffer protocol (PEP 688) as input (#75). These functions are implemented withMETH_FASTCALLtoo, 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
seedargument is now strictly validated to ensure it falls within the range [0, 0xFFFFFFFF]. AValueErroris 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 arguments has been changed from
booltoAny(#84).Change the format of CHANGELOG.md to conform to the Keep a Changelog standard (#63).
Deprecated#
Deprecate the
hash_from_buffer()function. Usemmh3_32_sintdigest()ormmh3_32_uintdigest()as alternatives (#84).
Fixed#
4.1.0 - 2024-01-09#
Added#
Add support for Python 3.12.
Fixed#
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, andmacosx_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). Useimportlib.metadatainstead.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 32-bit architectures such as
i686andarmv7l. From now on,hash()andhash_from_buffer()on these architectures will generate the same hash values as those on other environments (#40).In relation to the above,
manylinux2014_i686wheels 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, andmacosx_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#
As Softpedia collected mmh3 1.0 on April 27, 2011, it must have been uploaded to PyPI on or slightly before this date.