Skip to main content

Pip Prs Github

What does it do?

This module performs a fast bitwise hamming distance of two hexadecimal strings.

This looks like:

DEADBEEF = 11011110101011011011111011101111
00000000 = 00000000000000000000000000000000
XOR      = 11011110101011011011111011101111
Hamming  = number of ones in DEADBEEF ^ 00000000 = 24

This essentially amounts to

>>> import gmpy
>>> gmpy.popcount(0xdeadbeef ^ 0x00000000)
24

except with Python strings, so

>>> import gmpy
>>> gmpy.popcount(int("deadbeef", 16) ^ int("00000000", 16))
24

A few assumptions are made and enforced:

  • this is a valid hexadecimal string (i.e., [a-fA-F0-9]+)

  • the strings are the same length

  • the strings do not begin with "0x"

Why yet another Hamming distance library?

There are a lot of fantastic (python) libraries that offer methods to calculate various edit distances, including Hamming distances: Distance, textdistance, scipy, jellyfish, etc.

In this case, I needed a hamming distance library that worked on hexadecimal strings (i.e., a Python str) and performed blazingly fast. Furthermore, I often did not care about hex strings greater than 256 bits. That length constraint is different vs all the other libraries and enabled me to explore vectorization techniques via SSE/AVX and NEON intrinsics.

Lastly, I wanted to minimize dependencies, meaning you do not need to install numpy, gmpy, cython, pypy, pythran, etc.

As of v3.0.0, hexhamming is written in Rust using PyO3 and maturin, providing memory safety, GIL release during computation, and free-threaded Python support while maintaining the same SIMD-accelerated performance (SSE4.1, AVX2, NEON).

Installation

To install, ensure you have Python 3.10+. Run

pip install hexhamming

or to install from source (requires Rust toolchain)

git clone https://github.com/mrecachinas/hexhamming
cd hexhamming
pip install .

If you want to contribute to hexhamming, you should install the dev dependencies

pip install -r requirements-dev.txt

and make sure the tests pass with

python -m pytest -vls .

Example

Using hexhamming is as simple as

>>> from hexhamming import hamming_distance_string
>>> hamming_distance_string("deadbeef", "00000000")
24

New in v2.0.0 : hexhamming now supports byte``s via ``hamming_distance_bytes. You use it in the exact same way as before, except you pass in a byte string.

>>> from hexhamming import hamming_distance_bytes
>>> hamming_distance_bytes(b"\xde\xad\xbe\xef", b"\x00\x00\x00\x00")
24

We also provide a method for a quick boolean check of whether two hexadecimal strings are within a given Hamming distance.

>>> from hexhamming import check_hexstrings_within_dist
>>> check_hexstrings_within_dist("ffff", "fffe", 2)
True
>>> check_hexstrings_within_dist("ffff", "0000", 2)
False

Similarly, hexhamming supports a quick byte array check via check_bytes_within_dist, which has a similar API as check_hexstrings_within_dist, except it expects a bytes array.

The API described above is targeted at comparing two individual records and calculating their hamming distance quickly. For many applications the goal is to compare a given record to an array of other records and to find out if there are elements in the array that are within a given hamming distance of the search record. To support these application cases hexhamming has a set of array APIs. Given that these operations are often speed critical and require preparing data anyway, they are only available for bytes strings, not for hex strings.

They all have the same signature, they take two bytes arrays and the max_dist to consider. The difference is, that the first bytes string should be a concatenation of a number of records to compare to, i.e. the length needs to be a multiple of the length of the second bytes string.

There are three functions that return different results, depending on what is needed by the application.

check_bytes_arrays_first_within_dist returns the index of the first element that has a hamming distance less than max_dist.

>>> from hexhamming import check_bytes_arrays_first_within_dist
>>> check_bytes_arrays_first_within_dist(b"\xaa\xaa\xbb\xbb\xcc\xcc\xdd\xdd\xee\xee\xff\xff", b"\xff\xff", 4)
1

check_bytes_arrays_best_within_dist returns a tuple with the distance and the index of the element that has the lowest hamming distance less than max_dist, or (-1,-1) if none do.

>>> from hexhamming import check_bytes_arrays_best_within_dist
>>> check_bytes_arrays_best_within_dist(b"\xaa\xaa\xbb\xbb\xcc\xcc\xdd\xdd\xee\xee\xff\xff", b"\xff\xff", 4)
(0, 5)

>>> check_bytes_arrays_best_within_dist(b"\xaa\xaa\xbb\xbb\xcc\xcc\xdd\xdd\xee\xee\xff\xff", b"\xef\xfe", 4)
(2, 4)

check_bytes_arrays_all_within_dist returns a list of tuples with the distance and the index of the element that have a hamming distance less than max_dist, or [] if none do.

>>> from hexhamming import check_bytes_arrays_all_within_dist
>>> check_bytes_arrays_all_within_dist(b"\xaa\xaa\xbb\xbb\xcc\xcc\xdd\xdd\xee\xee\xff\xff", b"\xff\xff", 4)
[(4, 1), (4, 3), (4, 4), (0, 5)]

Tip: When you’re assembling the long array of records to compare against, don’t concatenate the different bytes together. As they’re immutable that is a very slow operation. Use a bytearray instead, and cast it to bytes at the end. See https://www.guyrutenberg.com/2020/04/04/fast-bytes-concatenation-in-python/ for more info and tests.

Benchmark

Below is a benchmark using pytest-benchmark with hexhamming v3.0.0 on Apple M-series (ARM64) with Python 3.14 and rustc 1.85.

String and bytes hamming distance

Name

Mean (ns)

Std (ns)

hamming_distance_string [3 chars, same]

48.8

10.1

hamming_distance_string [3 chars, diff]

48.4

4.4

hamming_distance_string [64 chars, diff]

88.2

16.0

hamming_distance_string [1000 chars, same]

754.7

251.2

hamming_distance_string [1000 chars, diff]

762.3

75.7

hamming_distance_string [1024 chars, same]

775.1

62.8

hamming_distance_string [1024 chars, diff]

785.0

137.1

hamming_distance_bytes [3 bytes, same]

48.5

5.5

hamming_distance_bytes [3 bytes, diff]

49.0

5.2

hamming_distance_bytes [64 bytes, diff]

50.3

8.4

hamming_distance_bytes [1000 bytes, same]

64.9

5.4

hamming_distance_bytes [1000 bytes, diff]

64.9

11.7

hamming_distance_bytes [1024 bytes, same]

63.2

35.3

hamming_distance_bytes [1024 bytes, diff]

69.1

16.0

check_bytes_within_dist [16 bytes]

52.1

8.9

check_bytes_within_dist [64 bytes]

51.2

23.2

check_bytes_within_dist [127 bytes]

53.4

5.3

Release files for hexhamming 3.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hexhamming 3.0.0
File Size Uploaded
hexhamming-3.0.0.tar.gz 57.3 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for hexhamming 3.0.0
File
hexhamming-3.0.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.17+ x86-64 Details
hexhamming-3.0.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl PyPy 3.11 PyPy 3.11 7.3 Linux glibc 2.17+ ARM64 Details
hexhamming-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl PyPy 3.10 PyPy 3.10 7.3 Linux glibc 2.17+ ARM64 Details
hexhamming-3.0.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64 Details
hexhamming-3.0.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ x86-64 Details
hexhamming-3.0.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.14 CPython 3.14 Linux glibc 2.17+ ARM64 Details
hexhamming-3.0.0-cp314-cp314-macosx_11_0_arm64.whl CPython 3.14 CPython 3.14 macOS 11.0+ ARM64 Details
hexhamming-3.0.0-cp314-cp314-macosx_10_12_x86_64.whl CPython 3.14 CPython 3.14 macOS 10.12+ x86-64 Details
hexhamming-3.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 free-threading Linux glibc 2.17+ ARM64 Details
hexhamming-3.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
hexhamming-3.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ ARM64 Details
hexhamming-3.0.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
hexhamming-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
hexhamming-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
hexhamming-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
hexhamming-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
hexhamming-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
hexhamming-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details

Total release size: 4.3 MB

Release files / hexhamming-3.0.0.tar.gz

Download URL hexhamming-3.0.0.tar.gz
Size 57.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c56b16d0e111993c021a53d2bcdb805598539ae96036b81567d814271a3c9e8b
BLAKE2b-256 checksum
How to use checksums
55dab9664c3f4e03dabd209a495f9ed475c8670a7dab72d2de7b9029836fade5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL hexhamming-3.0.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 250.9 kB
Tags Linux glibc 2.17+ x86-64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
20d2d3e78c69d83eae8c88d1f5aa53e21fb3619040811f6e7cc8f08b79b39738
BLAKE2b-256 checksum
How to use checksums
0adc7a4a26f80947fe56f0da02b800e746f46f0959c402d223328d76b911540b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL hexhamming-3.0.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 237.7 kB
Tags Linux glibc 2.17+ ARM64 PyPy 3.11 PyPy 3.11 7.3
SHA-256 checksum
How to use checksums
83a0b604d1d805fc71cbf326202713da86520ec2e4b77c48181aed4537a3c4ab
BLAKE2b-256 checksum
How to use checksums
229120e5ad245638b35d9d30ad0183ff0e274742f4c8eb57ed851f4042e15e22
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL hexhamming-3.0.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 238.1 kB
Tags Linux glibc 2.17+ ARM64 PyPy 3.10 PyPy 3.10 7.3
SHA-256 checksum
How to use checksums
3c77d75f279b2aba4446ac851d9a8a80f64c957cf60e98ac12c89806d90b572e
BLAKE2b-256 checksum
How to use checksums
1b7a158285fb66ebe300bb01e062a9cf9b27884804c2ef5ed6394734cae9e9bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL hexhamming-3.0.0-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 235.6 kB
Tags CPython 3.14 CPython 3.14 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
f86325ec22624eff47c7aa5b32d971d05bb0030e790d90c30b70cd961b1abaab
BLAKE2b-256 checksum
How to use checksums
f12a01be74b1b1e24147f1661d55a6b8425b76cc200f281839f555feca7b1f44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL hexhamming-3.0.0-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 249.4 kB
Tags CPython 3.14 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
cbab3b44b22b3890cdb06483bc35053c59bf045c9868a0afc32aadfdf361d96e
BLAKE2b-256 checksum
How to use checksums
93fd904e8d3a2ce5a485aad649a485932f0eb3e2630427114ee4f8bba80c1124
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL hexhamming-3.0.0-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 236.2 kB
Tags CPython 3.14 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
f56fe7f65288abcc4a8519e866d8a7806f5e68b44eb82ccd068369e86f95a53d
BLAKE2b-256 checksum
How to use checksums
3f44edebe44074cc8c2715b13fefaff95a86385c425c03973621df66cf8c7a2d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp314-cp314-macosx_11_0_arm64.whl

Download URL hexhamming-3.0.0-cp314-cp314-macosx_11_0_arm64.whl
Size 221.1 kB
Tags CPython 3.14 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3781ddd4f7b1d8357efaf8c34da454e5757a702983f64f4a5e022c8d3770657f
BLAKE2b-256 checksum
How to use checksums
e5e31f5689fa63ee918670424c735535410e51fd6fd2d2c0607f91df59ce638a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp314-cp314-macosx_10_12_x86_64.whl

Download URL hexhamming-3.0.0-cp314-cp314-macosx_10_12_x86_64.whl
Size 238.5 kB
Tags CPython 3.14 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
79e6028ce7755f119eab870f6df3b0f80ae3d63cdb1422ed7dfd75ecba4dc282
BLAKE2b-256 checksum
How to use checksums
50ddf17cbaf3700f8e2482ff9f31647e152715f75e71436bb428254cc2ee8b23
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL hexhamming-3.0.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 235.8 kB
Tags CPython 3.13 CPython 3.13 free-threading Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
37122607ab42b139d2f016207a6c97fe1c6fa3d6f1c1589e40d7222ad52c338f
BLAKE2b-256 checksum
How to use checksums
5c41f28a8a23c3eb390dc84ecd9a5f0d9838155b7724b17bdf579e7cc5a4b294
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL hexhamming-3.0.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 249.6 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d3af7d5e8519d1a01c12002e755d6144a11f12cc49d9fe16127e468c3cbd91f5
BLAKE2b-256 checksum
How to use checksums
6a04a964ab5c50e9126b920183266cfe034180e17e98121f7db715607d33c2d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL hexhamming-3.0.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 236.4 kB
Tags CPython 3.13 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
8c8711c0d4cbcf2be2aec4decbd55f9768729bb53c5a1b4db32f23ef23bca802
BLAKE2b-256 checksum
How to use checksums
77ec053ecd93812590e50ffd1ecab400a5e95a7e98b4d506d571d569d1a32f1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp312-cp312-win_amd64.whl

Download URL hexhamming-3.0.0-cp312-cp312-win_amd64.whl
Size 138.3 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
152044d5e255e10cc4027167eeab81ce8fef2a700c42cc5f7983e4838b8d224e
BLAKE2b-256 checksum
How to use checksums
86f5ad25bab5ed4708c34a5b43cbb209f48b7dcbaab8dac42a2bd3eccbcd9b8d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL hexhamming-3.0.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 249.7 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
935d66d23f157ec041d420cc01c5c3526c3feeffdf539fd935f19406ea0c656b
BLAKE2b-256 checksum
How to use checksums
7b3e9bcc89f4ff95fc713cf915d4058f5a73ed09b68429a2648ba069f6d855ad
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL hexhamming-3.0.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 236.5 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
d1480266d94310a8559b39d134c54377611a434cbef1de9cd9c9177f463093b3
BLAKE2b-256 checksum
How to use checksums
fa67553d8f83c5552978d3546206b165ba6227f6db6940fa745510bb614c2e6e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL hexhamming-3.0.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 250.2 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
8a4038ab7df534e4919eb384ec7a27d9f39012664d7ee795892b34535c2214c6
BLAKE2b-256 checksum
How to use checksums
d82c2bf88b054d5820d390c3c786384d4c8b91bcb425c821ef0c25b5a3cb4b13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL hexhamming-3.0.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 236.9 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
10d632625c9d135e45ae258d3c5a5a5c8385b29a5b8f10914fab08d1c98dc3c0
BLAKE2b-256 checksum
How to use checksums
200dbbf9ff170e6ef1986bbc2995c0e8abd28b0d6f46c189acd3eb5083351620
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL hexhamming-3.0.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 250.4 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
77d9b6b4d04c3d61c330b5bc440aa73f418eee0c7b52214177190da746a867a8
BLAKE2b-256 checksum
How to use checksums
ce9007572e283d63091524786138a1157af22aa087acc295ad70065c6791b4e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release files / hexhamming-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL hexhamming-3.0.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 237.0 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
7569813d541f086d45bc945df6c493d513c2005f1e14432653ce664a62c71395
BLAKE2b-256 checksum
How to use checksums
2d71a0aaed192addda31251b7965c2944428435e4f76171cd5fe30dbb685fe53
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via maturin/1.12.2

Release history Release notifications | RSS feed

This release

3.0.0 This release

19 release files

2.4.0

36 release files

2.3.1

29 release files

2.2.3

58 release files

2.2.2

31 release files

2.2.0

15 release files

2.0.0

2 release files

1.4.0

3 release files

1.3.2

2 release files

1.3.1

3 release files

1.3.0

3 release files

1.2.0

3 release files

1.1

2 release files

1.0

3 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page