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
- Fix the issue that the package cannot be built from the source distribution (#90).
5.0.0 - 2024-09-18
- 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 withMETH_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).
- Backward-incompatible: The
seed
argument is now strictly validated to ensure it falls within the range [0, 0xFFFFFFFF]. AValueError
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
toAny
(#84). - Change the format of CHANGELOG.md to conform to the Keep a Changelog standard (#63).
- Deprecate the
hash_from_buffer()
function. Usemmh3_32_sintdigest()
ormmh3_32_uintdigest()
as alternatives (#84).
4.1.0 - 2024-01-09
- Add support for Python 3.12.
- 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
ofhash64
orhash_bytes()
is set toFalse
(#52).
4.0.1 - 2023-07-14
- Refactor the project structure (#48).
- Fix incorrect type hints.
4.0.0 - 2023-05-22
- 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).
- Switch license from CC0 to MIT (#43).
- 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.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
- Add support for Python 3.10 and 3.11 (#35, #37).
- Add support for 32-bit architectures such as
i686
andarmv7l
. 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_i686
wheels are now available. - Support for hashing huge data (>16GB) (#34).
- Drop support for Python 3.6; remove legacy code for Python 2.x at the source code level.
3.0.0 - 2021-02-23
- 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).
- Supported platforms are
- Add support for newer macOS environments (#22).
- Add support for Python 3.7, 3.8, and 3.9.
- Migrate CI from Travis CI and AppVeyor to GitHub Actions.
- Drop support for Python 2.7, 3.3, 3.4, and 3.5.
2.5.1 - 2017-10-31
- Bugfix for
hash_bytes()
(#15).
2.5 - 2017-10-28
- Add
hash_from_buffer()
(#13). - Add a keyword argument
signed
.
2.4 - 2017-05-27
- 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.
- Fix compile errors for Python 3.6 under Windows systems.
2.3.2 - 2017-05-26
- Relicensed from public domain to CC0-1.0.
2.3.1 - 2015-06-07
- Fix compile errors for gcc >=5.
2.3 - 2013-12-08
- Add
hash128()
, which returns a 128-bit signed integer (#3).
- 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
- Improve portability to support systems with old gcc (version < 4.4) such as CentOS/RHEL 5.x (#1).
2.1 - 2013-02-25
- Add
__version__
constant. Check if it exists when the following revision matters for your application.
- 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
- Support both Python 2.7 and 3.x.
- Change the module interface.
1.0 - 2011-04-27
- As Softpedia collected mmh3 1.0 on April 27, 2011, it must have been uploaded to PyPI on or slightly before this date.