Skip to main content

SIMD-accelerated string search, sort, hashes, fingerprints, & edit distances

Project description

StringZilla 🦖

StringZilla banner

The world wastes a minimum of $100M annually due to inefficient string operations. A typical codebase processes strings character by character, resulting in too many branches and data-dependencies, neglecting 90% of modern CPU's potential. LibC is different. It attempts to leverage SIMD instructions to boost some operations, and is often used by higher-level languages, runtimes, and databases. But it isn't perfect. 1️⃣ First, even on common hardware, including over a billion 64-bit ARM CPUs, common functions like strstr and memmem only achieve 1/3 of the CPU's throughput. 2️⃣ Second, SIMD coverage is inconsistent: acceleration in forward scans does not guarantee speed in the reverse-order search. 3️⃣ At last, most high-level languages can't always use LibC, as the strings are often not NULL-terminated or may contain the Unicode "Zero" character in the middle of the string. That's why StringZilla was created. To provide predictably high performance, portable to any modern platform, operating system, and programming language.

StringZilla Python installs StringZilla Rust installs GitHub Actions Workflow Status GitHub Actions Workflow Status GitHub Actions Workflow Status GitHub Actions Workflow Status StringZilla code size

StringZilla is the GodZilla of string libraries, using SIMD and SWAR to accelerate string operations on modern CPUs. It is up to 10x faster than the default and even other SIMD-accelerated string libraries in C, C++, Python, and other languages, while covering broad functionality. It accelerates exact and fuzzy string matching, edit distance computations, sorting, lazily-evaluated ranges to avoid memory allocations, and even random-string generators.

  • 🐂 C : Upgrade LibC's <string.h> to <stringzilla.h> in C 99
  • 🐉 C++: Upgrade STL's <string> to <stringzilla.hpp> in C++ 11
  • 🐍 Python: Upgrade your str to faster Str
  • 🍎 Swift: Use the String+StringZilla extension
  • 🦀 Rust: Use the StringZilla traits crate
  • 🐚 Shell: Accelerate common CLI tools with sz_ prefix
  • 📚 Researcher? Jump to Algorithms & Design Decisions
  • 💡 Thinking to contribute? Look for "good first issues"
  • 🤝 And check the guide to setup the environment
  • Want more bindings or features? Let me know!

Who is this for?

  • For data-engineers parsing large datasets, like the CommonCrawl, RedPajama, or LAION.
  • For software engineers optimizing strings in their apps and services.
  • For bioinformaticians and search engineers looking for edit-distances for USearch.
  • For DBMS devs, optimizing LIKE, ORDER BY, and GROUP BY operations.
  • For hardware designers, needing a SWAR baseline for strings-processing functionality.
  • For students studying SIMD/SWAR applications to non-data-parallel operations.

Performance

C C++ Python StringZilla
find the first occurrence of a random word from text, ≅ 5 bytes long
strstr 1
x86: 7.4 · arm: 2.0 GB/s
.find
x86: 2.9 · arm: 1.6 GB/s
.find
x86: 1.1 · arm: 0.6 GB/s
sz_find
x86: 10.6 · arm: 7.1 GB/s
find the last occurrence of a random word from text, ≅ 5 bytes long
.rfind
x86: 0.5 · arm: 0.4 GB/s
.rfind
x86: 0.9 · arm: 0.5 GB/s
sz_rfind
x86: 10.8 · arm: 6.7 GB/s
split lines separated by \n or \r 2
strcspn 1
x86: 5.42 · arm: 2.19 GB/s
.find_first_of
x86: 0.59 · arm: 0.46 GB/s
re.finditer
x86: 0.06 · arm: 0.02 GB/s
sz_find_charset
x86: 4.08 · arm: 3.22 GB/s
find the last occurrence of any of 6 whitespaces 2
.find_last_of
x86: 0.25 · arm: 0.25 GB/s
sz_rfind_charset
x86: 0.43 · arm: 0.23 GB/s
Random string from a given alphabet, 20 bytes long 5
rand() % n
x86: 18.0 · arm: 9.4 MB/s
std::uniform_int_distribution
x86: 47.2 · arm: 20.4 MB/s
join(random.choices(...))
x86: 13.3 · arm: 5.9 MB/s
sz_generate
x86: 56.2 · arm: 25.8 MB/s
Mapping Characters with Look-Up Table Transforms
std::transform
x86: 3.81 · arm: 2.65 GB/s
str.translate
x86: 260.0 · arm: 140.0 MB/s
sz_look_up_transform
x86: 21.2 · arm: 8.5 GB/s
Get sorted order, ≅ 8 million English words 6
qsort_r
x86: 3.55 · arm: 5.77 s
std::sort
x86: 2.79 · arm: 4.02 s
numpy.argsort
x86: 7.58 · arm: 13.00 s
sz_sort
x86: 1.91 · arm: 2.37 s
Levenshtein edit distance, ≅ 5 bytes long
via jellyfish 3
x86: 1,550 · arm: 2,220 ns
sz_edit_distance
x86: 99 · arm: 180 ns
Needleman-Wunsch alignment scores, ≅ 10 K aminoacids long
via biopython 4
x86: 257 · arm: 367 ms
sz_alignment_score
x86: 73 · arm: 177 ms

StringZilla has a lot of functionality, most of which is covered by benchmarks across C, C++, Python and other languages. You can find those in the ./scripts directory, with usage notes listed in the CONTRIBUTING.md file. Notably, if the CPU supports misaligned loads, even the 64-bit SWAR backends are faster than either standard library.

Most benchmarks were conducted on a 1 GB English text corpus, with an average word length of 6 characters. The code was compiled with GCC 12, using glibc v2.35. The benchmarks performed on Arm-based Graviton3 AWS c7g instances and r7iz Intel Sapphire Rapids. Most modern Arm-based 64-bit CPUs will have similar relative speedups. Variance withing x86 CPUs will be larger. 1 Unlike other libraries, LibC requires strings to be NULL-terminated. 2 Six whitespaces in the ASCII set are: \t\n\v\f\r. Python's and other standard libraries have specialized functions for those. 3 Most Python libraries for strings are also implemented in C. 4 Unlike the rest of BioPython, the alignment score computation is implemented in C. 5 All modulo operations were conducted with uint8_t to allow compilers more optimization opportunities. The C++ STL and StringZilla benchmarks used a 64-bit Mersenne Twister as the generator. For C, C++, and StringZilla, an in-place update of the string was used. In Python every string had to be allocated as a new object, which makes it less fair. 6 Contrary to the popular opinion, Python's default sorted function works faster than the C and C++ standard libraries. That holds for large lists or tuples of strings, but fails as soon as you need more complex logic, like sorting dictionaries by a string key, or producing the "sorted order" permutation. The latter is very common in database engines and is most similar to numpy.argsort. Current StringZilla solution can be at least 4x faster without loss of generality.

Functionality

StringZilla is compatible with most modern CPUs, and provides a broad range of functionality.

  • works on both Little-Endian and Big-Endian architectures.
  • works on 32-bit and 64-bit hardware architectures.
  • compatible with ASCII and UTF-8 encoding.

Not all features are available across all bindings. Consider contributing, if you need a feature that's not yet implemented.

Maturity C 99 C++ 11 Python Swift Rust
Substring Search 🌳
Character Set Search 🌳
Edit Distances 🧐
Small String Class 🧐
Sorting & Sequence Operations 🚧
Lazy Ranges, Compressed Arrays 🧐
Hashes & Fingerprints 🚧

🌳 parts are used in production. 🧐 parts are in beta. 🚧 parts are under active development, and are likely to break in subsequent releases. ✅ are implemented. ⚪ are considered. ❌ are not intended.

Quick Start: Python 🐍

Python bindings are available on PyPI, and can be installed with pip. You can immediately check the installed version and the used hardware capabilities with following commands:

pip install stringzilla
python -c "import stringzilla; print(stringzilla.__version__)"
python -c "import stringzilla; print(stringzilla.__capabilities__)"

Basic Usage

If you've ever used the Python str, bytes, bytearray, memoryview class, you'll know what to expect. StringZilla's Str class is a hybrid of those two, providing str-like interface to byte-arrays.

from stringzilla import Str, File

text_from_str = Str('some-string') # no copies, just a view
text_from_bytes = Str(b'some-array') # no copies, just a view
text_from_file = Str(File('some-file.txt')) # memory-mapped file

import numpy as np
alphabet_array = np.arange(ord("a"), ord("z"), dtype=np.uint8)
text_from_array = Str(memoryview(alphabet_array))

The File class memory-maps a file from persistent memory without loading its copy into RAM. The contents of that file would remain immutable, and the mapping can be shared by multiple Python processes simultaneously. A standard dataset pre-processing use case would be to map a sizeable textual dataset like Common Crawl into memory, spawn child processes, and split the job between them.

Basic Operations

  • Length: len(text) -> int
  • Indexing: text[42] -> str
  • Slicing: text[42:46] -> Str
  • Substring check: 'substring' in text -> bool
  • Hashing: hash(text) -> int
  • String conversion: str(text) -> str

Advanced Operations

import sys

x: bool = text.contains('substring', start=0, end=sys.maxsize)
x: int = text.find('substring', start=0, end=sys.maxsize)
x: int = text.count('substring', start=0, end=sys.maxsize, allowoverlap=False)
x: str = text.decode(encoding='utf-8', errors='strict')
x: Strs = text.split(separator=' ', maxsplit=sys.maxsize, keepseparator=False)
x: Strs = text.rsplit(separator=' ', maxsplit=sys.maxsize, keepseparator=False)
x: Strs = text.splitlines(keeplinebreaks=False, maxsplit=sys.maxsize)

It's important to note, that the last function behavior is slightly different from Python's str.splitlines. The native version matches \n, \r, \v or \x0b, \f or \x0c, \x1c, \x1d, \x1e, \x85, \r\n, \u2028, \u2029, including 3x two-bytes-long runes. The StringZilla version matches only \n, \v, \f, \r, \x1c, \x1d, \x1e, \x85, avoiding two-byte-long runes.

Character Set Operations

Python strings don't natively support character set operations. This forces people to use regular expressions, which are slow and hard to read. To avoid the need for re.finditer, StringZilla provides the following interfaces:

x: int = text.find_first_of('chars', start=0, end=sys.maxsize)
x: int = text.find_last_of('chars', start=0, end=sys.maxsize)
x: int = text.find_first_not_of('chars', start=0, end=sys.maxsize)
x: int = text.find_last_not_of('chars', start=0, end=sys.maxsize)
x: Strs = text.split_charset(separator='chars', maxsplit=sys.maxsize, keepseparator=False)
x: Strs = text.rsplit_charset(separator='chars', maxsplit=sys.maxsize, keepseparator=False)

You can also transform the string using Look-Up Tables (LUTs), mapping it to a different character set. This would result in a copy - str for str inputs and bytes for other types.

x: str = text.translate('chars', {}, start=0, end=sys.maxsize, inplace=False)
x: bytes = text.translate(b'chars', {}, start=0, end=sys.maxsize, inplace=False)

For efficiency reasons, pass the LUT as a string or bytes object, not as a dictionary. This can be useful in high-throughput applications dealing with binary data, including bioinformatics and image processing. Here is an example:

import stringzilla as sz
look_up_table = bytes(range(256)) # Identity LUT
image = open("/image/path.jpeg", "rb").read()
sz.translate(image, look_up_table, inplace=True)

Collection-Level Operations

Once split into a Strs object, you can sort, shuffle, and reorganize the slices, with minimum memory footprint. If all the chunks are located in consecutive memory regions, the memory overhead can be as low as 4 bytes per chunk.

lines: Strs = text.split(separator='\n') # 4 bytes per line overhead for under 4 GB of text
batch: Strs = lines.sample(seed=42) # 10x faster than `random.choices`
lines.shuffle(seed=42) # or shuffle all lines in place and shard with slices
# WIP: lines.sort() # explodes to 16 bytes per line overhead for any length text
# WIP: sorted_order: tuple = lines.argsort() # similar to `numpy.argsort`

Working on RedPajama, addressing 20 Billion annotated english documents, one will need only 160 GB of RAM instead of Terabytes. Once loaded, the data will be memory-mapped, and can be reused between multiple Python processes without copies. And of course, you can use slices to navigate the dataset and shard it between multiple workers.

lines[::3] # every third line
lines[1::1] # every odd line
lines[:-100:-1] # last 100 lines in reverse order

Iterators and Memory Efficiency

Python's operations like split() and readlines() immediately materialize a list of copied parts. This can be very memory-inefficient for large datasets. StringZilla saves a lot of memory by viewing existing memory regions as substrings, but even more memory can be saved by using lazily evaluated iterators.

x: SplitIterator[Str] = text.split_iter(separator=' ', keepseparator=False)
x: SplitIterator[Str] = text.rsplit_iter(separator=' ', keepseparator=False)
x: SplitIterator[Str] = text.split_charset_iter(separator='chars', keepseparator=False)
x: SplitIterator[Str] = text.rsplit_charset_iter(separator='chars', keepseparator=False)

StringZilla can easily be 10x more memory efficient than native Python classes for tokenization. With lazy operations, it practically becomes free.

import stringzilla as sz
%load_ext memory_profiler

text = open("enwik9.txt", "r").read() # 1 GB, mean word length 7.73 bytes
%memit text.split() # increment: 8670.12 MiB (152 ms)
%memit sz.split(text) # increment: 530.75 MiB (25 ms)
%memit sum(1 for _ in sz.split_iter(text)) # increment: 0.00 MiB

Low-Level Python API

Aside from calling the methods on the Str and Strs classes, you can also call the global functions directly on str and bytes instances. Assuming StringZilla CPython bindings are implemented without any intermediate tools like SWIG or PyBind, the call latency should be similar to native classes.

import stringzilla as sz

contains: bool = sz.contains("haystack", "needle", start=0, end=sys.maxsize)
offset: int = sz.find("haystack", "needle", start=0, end=sys.maxsize)
count: int = sz.count("haystack", "needle", start=0, end=sys.maxsize, allowoverlap=False)

Edit Distances

assert sz.edit_distance("apple", "aple") == 1 # skip one ASCII character
assert sz.edit_distance("αβγδ", "αγδ") == 2 # skip two bytes forming one rune
assert sz.edit_distance_unicode("αβγδ", "αγδ") == 1 # one unicode rune

Several Python libraries provide edit distance computation. Most of them are implemented in C, but are not always as fast as StringZilla. Taking a 1'000 long proteins around 10'000 characters long, computing just a 100 distances:

Moreover, you can pass custom substitution matrices to compute the Needleman-Wunsch alignment scores. That task is very common in bioinformatics and computational biology. It's natively supported in BioPython, and its BLOSUM matrices can be converted to StringZilla's format. Alternatively, you can construct an arbitrary 256 by 256 cost matrix using NumPy. Depending on arguments, the result may be equal to the negative Levenshtein distance.

import numpy as np
import stringzilla as sz

costs = np.zeros((256, 256), dtype=np.int8)
costs.fill(-1)
np.fill_diagonal(costs, 0)

assert sz.alignment_score("first", "second", substitution_matrix=costs, gap_score=-1) == -sz.edit_distance(a, b)

Using the same proteins as for Levenshtein distance benchmarks:

§ Example converting from BioPython to StringZilla.
import numpy as np
from Bio import Align
from Bio.Align import substitution_matrices

aligner = Align.PairwiseAligner()
aligner.substitution_matrix = substitution_matrices.load("BLOSUM62")
aligner.open_gap_score = 1
aligner.extend_gap_score = 1

# Convert the matrix to NumPy
subs_packed = np.array(aligner.substitution_matrix).astype(np.int8)
subs_reconstructed = np.zeros((256, 256), dtype=np.int8)

# Initialize all banned characters to a the largest possible penalty
subs_reconstructed.fill(127)
for packed_row, packed_row_aminoacid in enumerate(aligner.substitution_matrix.alphabet):
    for packed_column, packed_column_aminoacid in enumerate(aligner.substitution_matrix.alphabet):
        reconstructed_row = ord(packed_row_aminoacid)
        reconstructed_column = ord(packed_column_aminoacid)
        subs_reconstructed[reconstructed_row, reconstructed_column] = subs_packed[packed_row, packed_column]

# Let's pick two examples for of tri-peptides (made of 3 aminoacids)
glutathione = "ECG" # Need to rebuild human tissue?
thyrotropin_releasing_hormone = "QHP" # Or to regulate your metabolism?

assert sz.alignment_score(
    glutathione,
    thyrotropin_releasing_hormone, 
    substitution_matrix=subs_reconstructed, 
    gap_score=1) == aligner.score(glutathione, thyrotropin_releasing_hormone) # Equal to 6

Serialization

Filesystem

Similar to how File can be used to read a large file, other interfaces can be used to dump strings to disk faster. The Str class has write_to to write the string to a file, and offset_within to obtain integer offsets of substring view in larger string for navigation.

web_archive = Str("<html>...</html><html>...</html>")
_, end_tag, next_doc = web_archive.partition("</html>") # or use `find`
next_doc_offset = next_doc.offset_within(web_archive)
web_archive.write_to("next_doc.html") # no GIL, no copies, just a view

PyArrow

A Str is easy to cast to PyArrow buffers.

from pyarrow import foreign_buffer
from stringzilla import Str

original = "hello"
view = Str(native)
arrow = foreign_buffer(view.address, view.nbytes, view)

That means you can convert Str to pyarrow.Buffer and Strs to pyarrow.Array without extra copies.

Quick Start: C/C++ 🛠️

The C library is header-only, so you can just copy the stringzilla.h header into your project. Same applies to C++, where you would copy the stringzilla.hpp header. Alternatively, add it as a submodule, and include it in your build system.

git submodule add https://github.com/ashvardanian/stringzilla.git

Or using a pure CMake approach:

FetchContent_Declare(stringzilla GIT_REPOSITORY https://github.com/ashvardanian/stringzilla.git)
FetchContent_MakeAvailable(stringzilla)

Last, but not the least, you can also install it as a library, and link against it. This approach is worse for inlining, but brings dynamic runtime dispatch for the most advanced CPU features.

Basic Usage with C 99 and Newer

There is a stable C 99 interface, where all function names are prefixed with sz_. Most interfaces are well documented, and come with self-explanatory names and examples. In some cases, hardware specific overloads are available, like sz_find_avx512 or sz_find_neon. Both are companions of the sz_find, first for x86 CPUs with AVX-512 support, and second for Arm NEON-capable CPUs.

#include <stringzilla/stringzilla.h>

// Initialize your haystack and needle
sz_string_view_t haystack = {your_text, your_text_length};
sz_string_view_t needle = {your_subtext, your_subtext_length};

// Perform string-level operations
sz_size_t substring_position = sz_find(haystack.start, haystack.length, needle.start, needle.length);
sz_size_t substring_position = sz_find_avx512(haystack.start, haystack.length, needle.start, needle.length);
sz_size_t substring_position = sz_find_neon(haystack.start, haystack.length, needle.start, needle.length);

// Hash strings
sz_u64_t hash = sz_hash(haystack.start, haystack.length);

// Perform collection level operations
sz_sequence_t array = {your_order, your_count, your_get_start, your_get_length, your_handle};
sz_sort(&array, &your_config);
§ Mapping from LibC to StringZilla.

By design, StringZilla has a couple of notable differences from LibC:

  1. all strings are expected to have a length, and are not necessarily null-terminated.
  2. every operations has a reverse order counterpart.

That way sz_find and sz_rfind are similar to strstr and strrstr in LibC. Similarly, sz_find_byte and sz_rfind_byte replace memchr and memrchr. The sz_find_charset maps to strspn and strcspn, while sz_rfind_charset has no sibling in LibC.

LibC Functionality StringZilla Equivalents
memchr(haystack, needle, haystack_length), strchr sz_find_byte(haystack, haystack_length, needle)
memrchr(haystack, needle, haystack_length) sz_rfind_byte(haystack, haystack_length, needle)
memcmp, strcmp sz_order, sz_equal
strlen(haystack) sz_find_byte(haystack, haystack_length, needle)
strcspn(haystack, needles) sz_rfind_charset(haystack, haystack_length, needles_bitset)
strspn(haystack, needles) sz_find_charset(haystack, haystack_length, needles_bitset)
memmem(haystack, haystack_length, needle, needle_length), strstr sz_find(haystack, haystack_length, needle, needle_length)
memcpy(destination, source, destination_length) sz_copy(destination, source, destination_length)
memmove(destination, source, destination_length) sz_move(destination, source, destination_length)
memset(destination, value, destination_length) sz_fill(destination, destination_length, value)

Basic Usage with C++ 11 and Newer

There is a stable C++ 11 interface available in the ashvardanian::stringzilla namespace. It comes with two STL-like classes: string_view and string. The first is a non-owning view of a string, and the second is a mutable string with a Small String Optimization.

#include <stringzilla/stringzilla.hpp>

namespace sz = ashvardanian::stringzilla;

sz::string haystack = "some string";
sz::string_view needle = sz::string_view(haystack).substr(0, 4);

auto substring_position = haystack.find(needle); // Or `rfind`
auto hash = std::hash<sz::string_view>{}(haystack); // Compatible with STL's `std::hash`

haystack.end() - haystack.begin() == haystack.size(); // Or `rbegin`, `rend`
haystack.find_first_of(" \v\t") == 4; // Or `find_last_of`, `find_first_not_of`, `find_last_not_of`
haystack.starts_with(needle) == true; // Or `ends_with`
haystack.remove_prefix(needle.size()); // Why is this operation in-place?!
haystack.contains(needle) == true; // STL has this only from C++ 23 onwards
haystack.compare(needle) == 1; // Or `haystack <=> needle` in C++ 20 and beyond

StringZilla also provides string literals for automatic type resolution, similar to STL:

using sz::literals::operator""_sz;
using std::literals::operator""sv;

auto a = "some string"; // char const *
auto b = "some string"sv; // std::string_view
auto b = "some string"_sz; // sz::string_view

Memory Ownership and Small String Optimization

Most operations in StringZilla don't assume any memory ownership. But in addition to the read-only search-like operations StringZilla provides a minimalistic C and C++ implementations for a memory owning string "class". Like other efficient string implementations, it uses the Small String Optimization (SSO) to avoid heap allocations for short strings.

typedef union sz_string_t {
    struct internal {
        sz_ptr_t start;
        sz_u8_t length;
        char chars[SZ_STRING_INTERNAL_SPACE]; /// Ends with a null-terminator.
    } internal;

    struct external {
        sz_ptr_t start;
        sz_size_t length;        
        sz_size_t space; /// The length of the heap-allocated buffer.
        sz_size_t padding;
    } external;

} sz_string_t;

As one can see, a short string can be kept on the stack, if it fits within internal.chars array. Before 2015 GCC string implementation was just 8 bytes, and could only fit 7 characters. Different STL implementations today have different thresholds for the Small String Optimization. Similar to GCC, StringZilla is 32 bytes in size, and similar to Clang it can fit 22 characters on stack. Our layout might be preferential, if you want to avoid branches. If you use a different compiler, you may want to check it's SSO buffer size with a simple Gist.

libstdc++ in GCC 13 libc++ in Clang 17 StringZilla
sizeof(std::string) 32 24 32
Small String Capacity 15 22 22

This design has been since ported to many high-level programming languages. Swift, for example, can store 15 bytes in the String instance itself. StringZilla implements SSO at the C level, providing the sz_string_t union and a simple API for primary operations.

sz_memory_allocator_t allocator;
sz_string_t string;

// Init and make sure we are on stack
sz_string_init(&string);
sz_string_is_on_stack(&string); // == sz_true_k

// Optionally pre-allocate space on the heap for future insertions.
sz_string_grow(&string, 100, &allocator); // == sz_true_k

// Append, erase, insert into the string.
sz_string_expand(&string, 0, "_Hello_", 7, &allocator); // == sz_true_k
sz_string_expand(&string, SZ_SIZE_MAX, "world", 5, &allocator); // == sz_true_k
sz_string_erase(&string, 0, 1);

// Unpacking & introspection.
sz_ptr_t string_start;
sz_size_t string_length;
sz_size_t string_space;
sz_bool_t string_is_external;
sz_string_unpack(string, &string_start, &string_length, &string_space, &string_is_external);
sz_equal(string_start, "Hello_world", 11); // == sz_true_k

// Reclaim some memory.
sz_string_shrink_to_fit(&string, &allocator); // == sz_true_k
sz_string_free(&string, &allocator);

Unlike the conventional C strings, the sz_string_t is allowed to contain null characters. To safely print those, pass the string_length to printf as well.

printf("%.*s\n", (int)string_length, string_start);

What's Wrong with the C Standard Library?

StringZilla is not a drop-in replacement for the C Standard Library. It's designed to be a safer and more modern alternative. Conceptually:

  1. LibC strings are expected to be null-terminated, so to use the efficient LibC implementations on slices of larger strings, you'd have to copy them, which is more expensive than the original string operation.
  2. LibC functionality is asymmetric - you can find the first and the last occurrence of a character within a string, but you can't find the last occurrence of a substring.
  3. LibC function names are typically very short and cryptic.
  4. LibC lacks crucial functionality like hashing and doesn't provide primitives for less critical but relevant operations like fuzzy matching.

Something has to be said about its support for UTF8. Aside from a single-byte char type, LibC provides wchar_t:

  • The size of wchar_t is not consistent across platforms. On Windows, it's typically 16 bits (suitable for UTF-16), while on Unix-like systems, it's usually 32 bits (suitable for UTF-32). This inconsistency can lead to portability issues when writing cross-platform code.
  • wchar_t is designed to represent wide characters in a fixed-width format (UTF-16 or UTF-32). In contrast, UTF-8 is a variable-length encoding, where each character can take from 1 to 4 bytes. This fundamental difference means that wchar_t and UTF-8 are incompatible.

StringZilla partially addresses those issues.

What's Wrong with the C++ Standard Library?

C++ Code Evaluation Result Invoked Signature
"Loose"s.replace(2, 2, "vath"s, 1) "Loathe" 🤢 (pos1, count1, str2, pos2)
"Loose"s.replace(2, 2, "vath", 1) "Love" 🥰 (pos1, count1, str2, count2)

StringZilla is designed to be a drop-in replacement for the C++ Standard Templates Library. That said, some of the design decisions of STL strings are highly controversial, error-prone, and expensive. Most notably:

  1. Argument order for replace, insert, erase and similar functions is impossible to guess.
  2. Bounds-checking exceptions for substr-like functions are only thrown for one side of the range.
  3. Returning string copies in substr-like functions results in absurd volume of allocations.
  4. Incremental construction via push_back-like functions goes through too many branches.
  5. Inconsistency between string and string_view methods, like the lack of remove_prefix and remove_suffix.

Check the following set of asserts validating the std::string specification. It's not realistic to expect the average developer to remember the 14 overloads of std::string::replace.

using str = std::string;

assert(str("hello world").substr(6) == "world");
assert(str("hello world").substr(6, 100) == "world"); // 106 is beyond the length of the string, but its OK
assert_throws(str("hello world").substr(100), std::out_of_range);   // 100 is beyond the length of the string
assert_throws(str("hello world").substr(20, 5), std::out_of_range); // 20 is beyond the length of the string
assert_throws(str("hello world").substr(-1, 5), std::out_of_range); // -1 casts to unsigned without any warnings...
assert(str("hello world").substr(0, -1) == "hello world");          // -1 casts to unsigned without any warnings...

assert(str("hello").replace(1, 2, "123") == "h123lo");
assert(str("hello").replace(1, 2, str("123"), 1) == "h23lo");
assert(str("hello").replace(1, 2, "123", 1) == "h1lo");
assert(str("hello").replace(1, 2, "123", 1, 1) == "h2lo");
assert(str("hello").replace(1, 2, str("123"), 1, 1) == "h2lo");
assert(str("hello").replace(1, 2, 3, 'a') == "haaalo");
assert(str("hello").replace(1, 2, {'a', 'b'}) == "hablo");

To avoid those issues, StringZilla provides an alternative consistent interface. It supports signed arguments, and doesn't have more than 3 arguments per function or The standard API and our alternative can be conditionally disabled with SZ_SAFETY_OVER_COMPATIBILITY=1. When it's enabled, the subjectively risky overloads from the Standard will be disabled.

using str = sz::string;

str("a:b").front(1) == "a"; // no checks, unlike `substr`
str("a:b").front(2) == "2"; // take first 2 characters
str("a:b").back(-1) == "b"; // accepting negative indices
str("a:b").back(-2) == ":b"; // similar to Python's `"a:b"[-2:]`
str("a:b").sub(1, -1) == ":"; // similar to Python's `"a:b"[1:-1]`
str("a:b").sub(-2, -1) == ":"; // similar to Python's `"a:b"[-2:-1]`
str("a:b").sub(-2, 1) == ""; // similar to Python's `"a:b"[-2:1]`
"a:b"_sz[{-2, -1}] == ":"; // works on views and overloads `operator[]`

Assuming StringZilla is a header-only library you can use the full API in some translation units and gradually transition to safer restricted API in others. Bonus - all the bound checking is branchless, so it has a constant cost and won't hurt your branch predictor.

Beyond the C++ Standard Library - Learning from Python

Python is arguably the most popular programming language for data science. In part, that's due to the simplicity of its standard interfaces. StringZilla brings some of that functionality to C++.

  • Content checks: isalnum, isalpha, isascii, isdigit, islower, isspace, isupper.
  • Trimming character sets: lstrip, rstrip, strip.
  • Trimming string matches: remove_prefix, remove_suffix.
  • Ranges of search results: splitlines, split, rsplit.
  • Number of non-overlapping substring matches: count.
  • Partitioning: partition, rpartition.

For example, when parsing documents, it is often useful to split it into substrings. Most often, after that, you would compute the length of the skipped part, the offset and the length of the remaining part. This results in a lot of pointer arithmetic and is error-prone. StringZilla provides a convenient partition function, which returns a tuple of three string views, making the code cleaner.

auto parts = haystack.partition(':'); // Matching a character
auto [before, match, after] = haystack.partition(':'); // Structure unpacking
auto [before, match, after] = haystack.partition(sz::char_set(":;")); // Character-set argument
auto [before, match, after] = haystack.partition(" : "); // String argument
auto [before, match, after] = haystack.rpartition(sz::whitespaces_set()); // Split around the last whitespace

Combining those with the split function, one can easily parse a CSV file or HTTP headers.

for (auto line : haystack.split("\r\n")) {
    auto [key, _, value] = line.partition(':');
    headers[key.strip()] = value.strip();
}

Some other extensions are not present in the Python standard library either. Let's go through the C++ functionality category by category.

Some of the StringZilla interfaces are not available even Python's native str class. Here is a sneak peek of the most useful ones.

text.hash(); // -> 64 bit unsigned integer 
text.ssize(); // -> 64 bit signed length to avoid `static_cast<std::ssize_t>(text.size())`
text.contains_only(" \w\t"); // == text.find_first_not_of(sz::char_set(" \w\t")) == npos;
text.contains(sz::whitespaces_set()); // == text.find(sz::char_set(sz::whitespaces_set())) != npos;

// Simpler slicing than `substr`
text.front(10); // -> sz::string_view
text.back(10); // -> sz::string_view

// Safe variants, which clamp the range into the string bounds
using sz::string::cap;
text.front(10, cap) == text.front(std::min(10, text.size()));
text.back(10, cap) == text.back(std::min(10, text.size()));

// Character set filtering
text.lstrip(sz::whitespaces_set()).rstrip(sz::newlines_set()); // like Python
text.front(sz::whitespaces_set()); // all leading whitespaces
text.back(sz::digits_set()); // all numerical symbols forming the suffix

// Incremental construction
using sz::string::unchecked;
text.push_back('x'); // no surprises here
text.push_back('x', unchecked); // no bounds checking, Rust style
text.try_push_back('x'); // returns `false` if the string is full and the allocation failed

sz::concatenate(text, "@", domain, ".", tld); // No allocations

Splits and Ranges

One of the most common use cases is to split a string into a collection of substrings. Which would often result in StackOverflow lookups and snippets like the one below.

std::vector<std::string> lines = split(haystack, "\r\n"); // string delimiter
std::vector<std::string> words = split(lines, ' '); // character delimiter

Those allocate memory for each string and the temporary vectors. Each allocation can be orders of magnitude more expensive, than even serial for-loop over characters. To avoid those, StringZilla provides lazily-evaluated ranges, compatible with the Range-v3 library.

for (auto line : haystack.split("\r\n"))
    for (auto word : line.split(sz::char_set(" \w\t.,;:!?")))
        std::cout << word << std::endl;

Each of those is available in reverse order as well. It also allows interleaving matches, if you want both inclusions of xx in xxx. Debugging pointer offsets is not a pleasant exercise, so keep the following functions in mind.

  • haystack.[r]find_all(needle, interleaving)
  • haystack.[r]find_all(sz::char_set(""))
  • haystack.[r]split(needle)
  • haystack.[r]split(sz::char_set(""))

For $N$ matches the split functions will report $N+1$ matches, potentially including empty strings. Ranges have a few convenience methods as well:

range.size(); // -> std::size_t
range.empty(); // -> bool
range.template to<std::set<std::sting>>(); 
range.template to<std::vector<std::sting_view>>(); 

Concatenating Strings without Allocations

Another common string operation is concatenation. The STL provides std::string::operator+ and std::string::append, but those are not very efficient, if multiple invocations are performed.

std::string name, domain, tld;
auto email = name + "@" + domain + "." + tld; // 4 allocations

The efficient approach would be to pre-allocate the memory and copy the strings into it.

std::string email;
email.reserve(name.size() + domain.size() + tld.size() + 2);
email.append(name), email.append("@"), email.append(domain), email.append("."), email.append(tld);

That's mouthful and error-prone. StringZilla provides a more convenient concatenate function, which takes a variadic number of arguments. It also overrides the operator| to concatenate strings lazily, without any allocations.

auto email = sz::concatenate(name, "@", domain, ".", tld);   // 0 allocations
auto email = name | "@" | domain | "." | tld;                // 0 allocations
sz::string email = name | "@" | domain | "." | tld;          // 1 allocations

Random Generation

Software developers often need to generate random strings for testing purposes. The STL provides std::generate and std::random_device, that can be used with StringZilla.

sz::string random_string(std::size_t length, char const *alphabet, std::size_t cardinality) {
    sz::string result(length, '\0');
    static std::random_device seed_source; // Expensive to construct - due to system calls
    static std::mt19937 generator(seed_source()); // Also expensive - due to the state size
    std::uniform_int_distribution<std::size_t> distribution(0, cardinality);
    std::generate(result.begin(), result.end(), [&]() { return alphabet[distribution(generator)]; });
    return result;
}

Mouthful and slow. StringZilla provides a C native method - sz_generate and a convenient C++ wrapper - sz::generate. Similar to Python it also defines the commonly used character sets.

auto protein = sz::string::random(300, "ARNDCQEGHILKMFPSTWYV"); // static method
auto dna = sz::basic_string<custom_allocator>::random(3_000_000_000, "ACGT");

dna.randomize("ACGT"); // `noexcept` pre-allocated version
dna.randomize(&std::rand, "ACGT"); // pass any generator, like `std::mt19937`

char uuid[36];
sz::randomize(sz::string_span(uuid, 36), "0123456789abcdef-"); // Overwrite any buffer

Bulk Replacements

In text processing, it's often necessary to replace all occurrences of a specific substring or set of characters within a string. Standard library functions may not offer the most efficient or convenient methods for performing bulk replacements, especially when dealing with large strings or performance-critical applications.

  • haystack.replace_all(needle_string, replacement_string)
  • haystack.replace_all(sz::char_set(""), replacement_string)
  • haystack.try_replace_all(needle_string, replacement_string)
  • haystack.try_replace_all(sz::char_set(""), replacement_string)
  • haystack.transform(sz::look_up_table::identity())
  • haystack.transform(sz::look_up_table::identity(), haystack.data())

Levenshtein Edit Distance and Alignment Scores

Levenshtein and Hamming edit distance are provided for both byte-strings and UTF-8 strings. The latter will output the distance in Unicode code points, not bytes. Needleman-Wunsch alignment scores are only defined for byte-strings.

// Count number of substitutions in same length strings
sz::hamming_distance(first, second[, upper_bound]) -> std::size_t;
sz::hamming_distance_utf8(first, second[, upper_bound]) -> std::size_t;

// Count number of insertions, deletions and substitutions
sz::edit_distance(first, second[, upper_bound[, allocator]]) -> std::size_t;
sz::edit_distance_utf8(first, second[, upper_bound[, allocator]]) -> std::size_t;

// Substitution-parametrized Needleman-Wunsch global alignment score
std::int8_t costs[256][256]; // Substitution costs matrix
sz::alignment_score(first, second, costs[, gap_score[, allocator]) -> std::ptrdiff_t;

Sorting in C and C++

LibC provides qsort and STL provides std::sort. Both have their quarks. The LibC standard has no way to pass a context to the comparison function, that's only possible with platform-specific extensions. Those have different arguments order on every OS.

// Linux: https://linux.die.net/man/3/qsort_r
void qsort_r(void *elements, size_t count, size_t element_width, 
    int (*compare)(void const *left, void const *right, void *context),
    void *context);
// MacOS and FreeBSD: https://developer.apple.com/library/archive/documentation/System/Conceptual/ManPages_iPhoneOS/man3/qsort_r.3.html
void qsort_r(void *elements, size_t count, size_t element_width, 
    void *context,
    int (*compare)(void *context, void const *left, void const *right));
// Windows conflicts with ISO `qsort_s`: https://learn.microsoft.com/en-us/cpp/c-runtime-library/reference/qsort-s?view=msvc-170
void qsort_s(id *elements, size_t count, size_t element_width, 
    int (*compare)(void *context, void const *left, void const *right),
    void *context);

C++ generic algorithm is not perfect either. There is no guarantee in the standard that std::sort won't allocate any memory. If you are running on embedded, in real-time or on 100+ CPU cores per node, you may want to avoid that. StringZilla doesn't solve the general case, but hopes to improve the performance for strings. Use sz_sort, or the high-level sz::sorted_order, which can be used sort any collection of elements convertible to sz::string_view.

std::vector<std::string> data({"c", "b", "a"});
std::vector<std::size_t> order = sz::sorted_order(data); //< Simple shortcut

// Or, taking care of memory allocation:
sz::sorted_order(data.begin(), data.end(), order.data(), [](auto const &x) -> sz::string_view { return x; });

Standard C++ Containers with String Keys

The C++ Standard Templates Library provides several associative containers, often used with string keys.

std::map<std::string, int, std::less<std::string>> sorted_words;
std::unordered_map<std::string, int, std::hash<std::string>, std::equal_to<std::string>> words;

The performance of those containers is often limited by the performance of the string keys, especially on reads. StringZilla can be used to accelerate containers with std::string keys, by overriding the default comparator and hash functions.

std::map<std::string, int, sz::string_view_less> sorted_words;
std::unordered_map<std::string, int, sz::string_view_hash, sz::string_view_equal_to> words;

Alternatively, a better approach would be to use the sz::string class as a key. The right hash function and comparator would be automatically selected and the performance gains would be more noticeable if the keys are short.

std::map<sz::string, int> sorted_words;
std::unordered_map<sz::string, int> words;

Compilation Settings and Debugging

SZ_DEBUG:

For maximal performance, the C library does not perform any bounds checking in Release builds. In C++, bounds checking happens only in places where the STL std::string would do it. If you want to enable more aggressive bounds-checking, define SZ_DEBUG before including the header. If not explicitly set, it will be inferred from the build type.

SZ_USE_X86_AVX512, SZ_USE_X86_AVX2, SZ_USE_ARM_NEON:

One can explicitly disable certain families of SIMD instructions for compatibility purposes. Default values are inferred at compile time.

SZ_DYNAMIC_DISPATCH:

By default, StringZilla is a header-only library. But if you are running on different generations of devices, it makes sense to pre-compile the library for all supported generations at once, and dispatch at runtime. This flag does just that and is used to produce the stringzilla.so shared library, as well as the Python bindings.

SZ_USE_MISALIGNED_LOADS:

By default, StringZilla avoids misaligned loads. If supported, it replaces many byte-level operations with word-level ones. Going from char-like types to uint64_t-like ones can significantly accelerate the serial (SWAR) backend. So consider enabling it if you are building for some embedded device.

SZ_AVOID_LIBC and SZ_OVERRIDE_LIBC:

When using the C header-only library one can disable the use of LibC. This may affect the type resolution system on obscure hardware platforms. Moreover, one may let stringzilla override the common symbols like the memcpy and memset with its own implementations. In that case you can use the LD_PRELOAD trick to prioritize it's symbols over the ones from the LibC and accelerate existing string-heavy applications without recompiling them. It also adds a layer of security, as the stringzilla isn't undefined for NULL inputs like memcpy(NULL, NULL, 0).

SZ_AVOID_STL and SZ_SAFETY_OVER_COMPATIBILITY:

When using the C++ interface one can disable implicit conversions from std::string to sz::string and back. If not needed, the <string> and <string_view> headers will be excluded, reducing compilation time. Moreover, if STL compatibility is a low priority, one can make the API safer by disabling the overloads, which are subjectively error prone.

STRINGZILLA_BUILD_SHARED, STRINGZILLA_BUILD_TEST, STRINGZILLA_BUILD_BENCHMARK, STRINGZILLA_TARGET_ARCH for CMake users:

When compiling the tests and benchmarks, you can explicitly set the target hardware architecture. It's synonymous to GCC's -march flag and is used to enable/disable the appropriate instruction sets. You can also disable the shared library build, if you don't need it.

Quick Start: Rust 🦀

StringZilla is available as a Rust crate, with documentation available on docs.rs/stringzilla. To use the latest crate release in your project, add the following to your Cargo.toml:

[dependencies]
stringzilla = ">=3"

Or if you want to use the latest pre-release version from the repository:

[dependencies]
stringzilla = { git = "https://github.com/ashvardanian/stringzilla", branch = "main-dev" }

Once installed, all of the functionality is available through the stringzilla namespace. Many interfaces will look familiar to the users of the memchr crate.

use stringzilla::sz;

// Identical to `memchr::memmem::find` and `memchr::memmem::rfind` functions
sz::find("Hello, world!", "world") // 7
sz::rfind("Hello, world!", "world") // 7

// Generalizations of `memchr::memrchr[123]`
sz::find_char_from("Hello, world!", "world") // 2
sz::rfind_char_from("Hello, world!", "world") // 11

Unlike memchr, the throughput of stringzilla is high in both normal and reverse-order searches. It also provides no constraints on the size of the character set, while memchr allows only 1, 2, or 3 characters. In addition to global functions, stringzilla provides a StringZilla extension trait:

use stringzilla::StringZilla;

let my_string: String = String::from("Hello, world!");
let my_str = my_string.as_str();
let my_cow_str = Cow::from(&my_string);

// Use the generic function with a String
assert_eq!(my_string.sz_find("world"), Some(7));
assert_eq!(my_string.sz_rfind("world"), Some(7));
assert_eq!(my_string.sz_find_char_from("world"), Some(2));
assert_eq!(my_string.sz_rfind_char_from("world"), Some(11));
assert_eq!(my_string.sz_find_char_not_from("world"), Some(0));
assert_eq!(my_string.sz_rfind_char_not_from("world"), Some(12));

// Same works for &str and Cow<'_, str>
assert_eq!(my_str.sz_find("world"), Some(7));
assert_eq!(my_cow_str.as_ref().sz_find("world"), Some(7));

The library also exposes Levenshtein and Hamming edit-distances for byte-arrays and UTF-8 strings, as well as Needleman-Wunch alignment scores.

use stringzilla::sz;

// Handling arbitrary byte arrays:
sz::edit_distance("Hello, world!", "Hello, world?"); // 1
sz::hamming_distance("Hello, world!", "Hello, world?"); // 1
sz::alignment_score("Hello, world!", "Hello, world?", sz::unary_substitution_costs(), -1); // -1

// Handling UTF-8 strings:
sz::hamming_distance_utf8("αβγδ", "αγγδ") // 1
sz::edit_distance_utf8("façade", "facade") // 1

Quick Start: Swift 🍏

StringZilla can be added as a dependency in the Swift Package Manager. In your Package.swift file, add the following:

dependencies: [
    .package(url: "https://github.com/ashvardanian/stringzilla")
]

The package currently covers only the most basic functionality, but is planned to be extended to cover the full C++ API.

var s = "Hello, world! Welcome to StringZilla. 👋"
s[s.findFirst(substring: "world")!...] // "world! Welcome to StringZilla. 👋")    
s[s.findLast(substring: "o")!...] // "o StringZilla. 👋")
s[s.findFirst(characterFrom: "aeiou")!...] // "ello, world! Welcome to StringZilla. 👋")
s[s.findLast(characterFrom: "aeiou")!...] // "a. 👋")
s[s.findFirst(characterNotFrom: "aeiou")!...] // "Hello, world! Welcome to StringZilla. 👋"
s.editDistance(from: "Hello, world!")! // 29

Algorithms & Design Decisions 📚

StringZilla aims to optimize some of the slowest string operations. Some popular operations, however, like equality comparisons and relative order checking, almost always complete on some of the very first bytes in either string. In such operations vectorization is almost useless, unless huge and very similar strings are considered. StringZilla implements those operations as well, but won't result in substantial speedups.

Exact Substring Search

Substring search algorithms are generally divided into: comparison-based, automaton-based, and bit-parallel. Different families are effective for different alphabet sizes and needle lengths. The more operations are needed per-character - the more effective SIMD would be. The longer the needle - the more effective the skip-tables are. StringZilla uses different exact substring search algorithms for different needle lengths and backends:

  • When no SIMD is available - SWAR (SIMD Within A Register) algorithms are used on 64-bit words.
  • Boyer-Moore-Horspool (BMH) algorithm with Raita heuristic variation for longer needles.
  • SIMD algorithms are randomized to look at different parts of the needle.

On very short needles, especially 1-4 characters long, brute force with SIMD is the fastest solution. On mid-length needles, bit-parallel algorithms are effective, as the character masks fit into 32-bit or 64-bit words. Either way, if the needle is under 64-bytes long, on haystack traversal we will still fetch every CPU cache line. So the only way to improve performance is to reduce the number of comparisons. The snippet below shows how StringZilla accomplishes that for needles of length two.

https://github.com/ashvardanian/StringZilla/blob/266c01710dddf71fc44800f36c2f992ca9735f87/include/stringzilla/stringzilla.h#L1585-L1637

Going beyond that, to long needles, Boyer-Moore (BM) and its variants are often the best choice. It has two tables: the good-suffix shift and the bad-character shift. Common choice is to use the simplified BMH algorithm, which only uses the bad-character shift table, reducing the pre-processing time. We do the same for mid-length needles up to 256 bytes long. That way the stack-allocated shift table remains small.

https://github.com/ashvardanian/StringZilla/blob/46e957cd4f9ecd4945318dd3c48783dd11323f37/include/stringzilla/stringzilla.h#L1774-L1825

In the C++ Standards Library, the std::string::find function uses the BMH algorithm with Raita's heuristic. Before comparing the entire string, it matches the first, last, and the middle character. Very practical, but can be slow for repetitive characters. Both SWAR and SIMD backends of StringZilla have a cheap pre-processing step, where we locate unique characters. This makes the library a lot more practical when dealing with non-English corpora.

https://github.com/ashvardanian/StringZilla/blob/46e957cd4f9ecd4945318dd3c48783dd11323f37/include/stringzilla/stringzilla.h#L1398-L1431

All those, still, have $O(hn)$ worst case complexity. To guarantee $O(h)$ worst case time complexity, the Apostolico-Giancarlo (AG) algorithm adds an additional skip-table. Preprocessing phase is $O(n+sigma)$ in time and space. On traversal, performs from $(h/n)$ to $(3h/2)$ comparisons. It however, isn't practical on modern CPUs. A simpler idea, the Galil-rule might be a more relevant optimizations, if many matches must be found.

Other algorithms previously considered and deprecated:

  • Apostolico-Giancarlo algorithm for longer needles. Control-flow is too complex for efficient vectorization.
  • Shift-Or-based Bitap algorithm for short needles. Slower than SWAR.
  • Horspool-style bad-character check in SIMD backends. Effective only for very long needles, and very uneven character distributions between the needle and the haystack. Faster "character-in-set" check needed to generalize.

§ Reading materials. Exact String Matching Algorithms in Java. SIMD-friendly algorithms for substring searching.

Levenshtein Edit Distance

Levenshtein distance is the best known edit-distance for strings, that checks, how many insertions, deletions, and substitutions are needed to transform one string to another. It's extensively used in approximate string-matching, spell-checking, and bioinformatics.

The computational cost of the Levenshtein distance is $O(n * m)$, where $n$ and $m$ are the lengths of the string arguments. To compute that, the naive approach requires $O(n * m)$ space to store the "Levenshtein matrix", the bottom-right corner of which will contain the Levenshtein distance. The algorithm producing the matrix has been simultaneously studied/discovered by the Soviet mathematicians Vladimir Levenshtein in 1965, Taras Vintsyuk in 1968, and American computer scientists - Robert Wagner, David Sankoff, Michael J. Fischer in the following years. Several optimizations are known:

  1. Space Optimization: The matrix can be computed in $O(min(n,m))$ space, by only storing the last two rows of the matrix.
  2. Divide and Conquer: Hirschberg's algorithm can be applied to decompose the computation into subtasks.
  3. Automata: Levenshtein automata can be effective, if one of the strings doesn't change, and is a subject to many comparisons.
  4. Shift-Or: Bit-parallel algorithms transpose the matrix into a bit-matrix, and perform bitwise operations on it.

The last approach is quite powerful and performant, and is used by the great RapidFuzz library. It's less known, than the others, derived from the Baeza-Yates-Gonnet algorithm, extended to bounded edit-distance search by Manber and Wu in 1990s, and further extended by Gene Myers in 1999 and Heikki Hyyro between 2002 and 2004.

StringZilla introduces a different approach, extensively used in Unum's internal combinatorial optimization libraries. The approach doesn't change the number of trivial operations, but performs them in a different order, removing the data dependency, that occurs when computing the insertion costs. This results in much better vectorization for intra-core parallelism and potentially multi-core evaluation of a single request.

Next design goals:

  • Generalize fast traversals to rectangular matrices.
  • Port x86 AVX-512 solution to Arm NEON.

§ Reading materials. Faster Levenshtein Distances with a SIMD-friendly Traversal Order.

Needleman-Wunsch Alignment Score for Bioinformatics

The field of bioinformatics studies various representations of biological structures. The "primary" representations are generally strings over sparse alphabets:

  • DNA sequences, where the alphabet is {A, C, G, T}, ranging from ~100 characters for short reads to 3 billion for the human genome.
  • RNA sequences, where the alphabet is {A, C, G, U}, ranging from ~50 characters for tRNA to thousands for mRNA.
  • Proteins, where the alphabet is made of 22 amino acids, ranging from 2 characters for dipeptide to 35,000 for Titin, the longest protein.

The shorter the representation, the more often researchers may want to use custom substitution matrices. Meaning that the cost of a substitution between two characters may not be the same for all pairs.

StringZilla adapts the fairly efficient two-row Wagner-Fisher algorithm as a baseline serial implementation of the Needleman-Wunsch score. It supports arbitrary alphabets up to 256 characters, and can be used with either BLOSUM, PAM, or other substitution matrices. It also uses SIMD for hardware acceleration of the substitution lookups. This however, does not yet break the data-dependency for insertion costs, where 80% of the time is wasted. With that solved, the SIMD implementation will become 5x faster than the serial one.

Memory Copying, Fills, and Moves

A lot has been written about the time computers spend copying memory and how that operation is implemented in LibC. Interestingly, the operation can still be improved, as most Assembly implementations use outdated instructions. Even performance-oriented STL replacements, like Meta's Folly v2024.09.23 focus on AVX2, and don't take advantage of the new masked instructions in AVX-512 or SVE.

In AVX-512, StringZilla uses non-temporal stores to avoid cache pollution, when dealing with very large strings. Moreover, it handles the unaligned head and the tails of the target buffer separately, ensuring that writes in big copies are always aligned to cache-line boundaries. That's true for both AVX2 and AVX-512 backends.

StringZilla also contains "drafts" of smarter, but less efficient algorithms, that minimize the number of unaligned loads, perfoming shuffles and permutations. That's a topic for future research, as the performance gains are not yet satisfactory.

§ Reading materials. memset benchmarks by Nadav Rotem. Cache Associativity by Sergey Slotin.

Random Generation

Generating random strings from different alphabets is a very common operation. StringZilla accepts an arbitrary Pseudorandom Number Generator to produce noise, and an array of characters to sample from. Sampling is optimized to avoid integer division, a costly operation on modern CPUs. For that a 768-byte long lookup table is used to perform 2 lookups, 1 multiplication, 2 shifts, and 2 accumulations.

https://github.com/ashvardanian/StringZilla/blob/266c01710dddf71fc44800f36c2f992ca9735f87/include/stringzilla/stringzilla.h#L2490-L2533

Sorting

For lexicographic sorting of strings, StringZilla uses a "hybrid-hybrid" approach with $O(n * log(n))$ and.

  1. Radix sort for first bytes exported into a continuous buffer for locality.
  2. IntroSort on partially ordered chunks to balance efficiency and worst-case performance.
    1. IntroSort begins with a QuickSort.
    2. If the recursion depth exceeds a certain threshold, it switches to a HeapSort.

A better algorithm is in development. Check #173 for design goals and progress updates.

Hashing

[!WARNING] Hash functions are not cryptographically safe and are currently under active development. They may change in future minor releases.

Choosing the right hashing algorithm for your application can be crucial from both performance and security standpoint. In StringZilla a 64-bit rolling hash function is reused for both string hashes and substring hashes, Rabin-style fingerprints. Rolling hashes take the same amount of time to compute hashes with different window sizes, and are fast to update. Those are not however perfect hashes, and collisions are frequent. StringZilla attempts to use SIMD, but the performance is not yet satisfactory. On Intel Sapphire Rapids, the following numbers can be expected for N-way parallel variants.

  • 4-way AVX2 throughput with 64-bit integer multiplication (no native support): 0.28 GB/s.
  • 4-way AVX2 throughput with 32-bit integer multiplication: 0.54 GB/s.
  • 4-way AVX-512DQ throughput with 64-bit integer multiplication: 0.46 GB/s.
  • 4-way AVX-512 throughput with 32-bit integer multiplication: 0.58 GB/s.
  • 8-way AVX-512 throughput with 32-bit integer multiplication: 0.11 GB/s.

Next design goals:

  • Try gear-hash and other rolling approaches.

Why not CRC32?

Cyclic Redundancy Check 32 is one of the most commonly used hash functions in Computer Science. It has in-hardware support on both x86 and Arm, for both 8-bit, 16-bit, 32-bit, and 64-bit words. The 0x1EDC6F41 polynomial is used in iSCSI, Btrfs, ext4, and the 0x04C11DB7 in SATA, Ethernet, Zlib, PNG. In case of Arm more than one polynomial is supported. It is, however, somewhat limiting for Big Data usecases, which often have to deal with more than 4 Billion strings, making collisions unavoidable. Moreover, the existing SIMD approaches are tricky, combining general purpose computations with specialized instructions, to utilize more silicon in every cycle.

§ Reading materials. Comprehensive derivation of approaches Faster computation for 4 KB buffers on x86 Comparing different lookup tables Great open-source implementations. By Peter Cawley By Stephan Brumme

Other Modern Alternatives

MurmurHash from 2008 by Austin Appleby is one of the best known non-cryptographic hashes. It has a very short implementation and is capable of producing 32-bit and 128-bit hashes. The CityHash from 2011 by Google and the xxHash improve on that, better leveraging the super-scalar nature of modern CPUs and producing 64-bit and 128-bit hashes.

Neither of those functions are cryptographic, unlike MD5, SHA, and BLAKE algorithms. Most of cryptographic hashes are based on the Merkle-Damgård construction, and aren't resistant to the length-extension attacks. Current state of the Art, might be the BLAKE3 algorithm. It's resistant to a broad range of attacks, can process 2 bytes per CPU cycle, and comes with a very optimized official implementation for C and Rust. It has the same 128-bit security level as the BLAKE2, and achieves its performance gains by reducing the number of mixing rounds, and processing data in 1 KiB chunks, which is great for longer strings, but may result in poor performance on short ones.

All mentioned libraries have undergone extensive testing and are considered production-ready. They can definitely accelerate your application, but so may the downstream mixer. For instance, when a hash-table is constructed, the hashes are further shrunk to address table buckets. If the mixer looses entropy, the performance gains from the hash function may be lost. An example would be power-of-two modulo, which is a common mixer, but is known to be weak. One alternative would be the fastrange by Daniel Lemire. Another one is the Fibonacci hash trick using the Golden Ratio, also used in StringZilla.

Unicode, UTF-8, and Wide Characters

Most StringZilla operations are byte-level, so they work well with ASCII and UTF8 content out of the box. In some cases, like edit-distance computation, the result of byte-level evaluation and character-level evaluation may differ. So StringZilla provides following functions to work with Unicode:

  • sz_edit_distance_utf8 - computes the Levenshtein distance between two UTF-8 strings.
  • sz_hamming_distance_utf8 - computes the Hamming distance between two UTF-8 strings.

Java, JavaScript, Python 2, C#, and Objective-C, however, use wide characters (wchar) - two byte long codes, instead of the more reasonable fixed-length UTF32 or variable-length UTF8. This leads to all kinds of offset-counting issues when facing four-byte long Unicode characters. So consider transcoding with simdutf, if you are coming from such environments.

Contributing 👾

Please check out the contributing guide for more details on how to setup the development environment and contribute to this project. If you like this project, you may also enjoy USearch, UCall, UForm, and SimSIMD. 🤗

If you like strings and value efficiency, you may also enjoy the following projects:

  • simdutf - transcoding UTF8, UTF16, and UTF32 LE and BE.
  • hyperscan - regular expressions with SIMD acceleration.
  • pyahocorasick - Aho-Corasick algorithm in Python.
  • rapidfuzz - fast string matching in C++ and Python.

If you are looking for more reading materials on this topic, consider the following:

License 📜

Feel free to use the project under Apache 2.0 or the Three-clause BSD license at your preference.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stringzilla-3.12.5.tar.gz (186.8 kB view details)

Uploaded Source

Built Distributions

stringzilla-3.12.5-cp313-cp313-win_arm64.whl (69.7 kB view details)

Uploaded CPython 3.13Windows ARM64

stringzilla-3.12.5-cp313-cp313-win_amd64.whl (80.1 kB view details)

Uploaded CPython 3.13Windows x86-64

stringzilla-3.12.5-cp313-cp313-win32.whl (68.6 kB view details)

Uploaded CPython 3.13Windows x86

stringzilla-3.12.5-cp313-cp313-musllinux_1_2_x86_64.whl (302.7 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

stringzilla-3.12.5-cp313-cp313-musllinux_1_2_s390x.whl (207.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ s390x

stringzilla-3.12.5-cp313-cp313-musllinux_1_2_ppc64le.whl (232.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ppc64le

stringzilla-3.12.5-cp313-cp313-musllinux_1_2_i686.whl (213.6 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

stringzilla-3.12.5-cp313-cp313-musllinux_1_2_armv7l.whl (202.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

stringzilla-3.12.5-cp313-cp313-musllinux_1_2_aarch64.whl (227.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

stringzilla-3.12.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl (206.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

stringzilla-3.12.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl (234.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

stringzilla-3.12.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (231.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

stringzilla-3.12.5-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl (308.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

stringzilla-3.12.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (212.1 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

stringzilla-3.12.5-cp313-cp313-macosx_11_0_arm64.whl (79.5 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

stringzilla-3.12.5-cp313-cp313-macosx_10_13_x86_64.whl (79.6 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

stringzilla-3.12.5-cp313-cp313-macosx_10_13_universal2.whl (122.1 kB view details)

Uploaded CPython 3.13macOS 10.13+ universal2 (ARM64, x86-64)

stringzilla-3.12.5-cp312-cp312-win_arm64.whl (69.7 kB view details)

Uploaded CPython 3.12Windows ARM64

stringzilla-3.12.5-cp312-cp312-win_amd64.whl (80.1 kB view details)

Uploaded CPython 3.12Windows x86-64

stringzilla-3.12.5-cp312-cp312-win32.whl (68.6 kB view details)

Uploaded CPython 3.12Windows x86

stringzilla-3.12.5-cp312-cp312-musllinux_1_2_x86_64.whl (302.7 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

stringzilla-3.12.5-cp312-cp312-musllinux_1_2_s390x.whl (207.1 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ s390x

stringzilla-3.12.5-cp312-cp312-musllinux_1_2_ppc64le.whl (232.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ppc64le

stringzilla-3.12.5-cp312-cp312-musllinux_1_2_i686.whl (213.6 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

stringzilla-3.12.5-cp312-cp312-musllinux_1_2_armv7l.whl (202.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

stringzilla-3.12.5-cp312-cp312-musllinux_1_2_aarch64.whl (227.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

stringzilla-3.12.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl (206.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

stringzilla-3.12.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl (234.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

stringzilla-3.12.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (231.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

stringzilla-3.12.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl (308.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

stringzilla-3.12.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (212.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

stringzilla-3.12.5-cp312-cp312-macosx_11_0_arm64.whl (79.5 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

stringzilla-3.12.5-cp312-cp312-macosx_10_13_x86_64.whl (79.6 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

stringzilla-3.12.5-cp312-cp312-macosx_10_13_universal2.whl (122.0 kB view details)

Uploaded CPython 3.12macOS 10.13+ universal2 (ARM64, x86-64)

stringzilla-3.12.5-cp311-cp311-win_arm64.whl (69.8 kB view details)

Uploaded CPython 3.11Windows ARM64

stringzilla-3.12.5-cp311-cp311-win_amd64.whl (80.1 kB view details)

Uploaded CPython 3.11Windows x86-64

stringzilla-3.12.5-cp311-cp311-win32.whl (68.5 kB view details)

Uploaded CPython 3.11Windows x86

stringzilla-3.12.5-cp311-cp311-musllinux_1_2_x86_64.whl (302.0 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

stringzilla-3.12.5-cp311-cp311-musllinux_1_2_s390x.whl (206.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ s390x

stringzilla-3.12.5-cp311-cp311-musllinux_1_2_ppc64le.whl (232.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ppc64le

stringzilla-3.12.5-cp311-cp311-musllinux_1_2_i686.whl (213.7 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

stringzilla-3.12.5-cp311-cp311-musllinux_1_2_armv7l.whl (201.3 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARMv7l

stringzilla-3.12.5-cp311-cp311-musllinux_1_2_aarch64.whl (227.2 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

stringzilla-3.12.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl (206.5 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

stringzilla-3.12.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl (235.4 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

stringzilla-3.12.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (232.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

stringzilla-3.12.5-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl (307.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

stringzilla-3.12.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (212.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

stringzilla-3.12.5-cp311-cp311-macosx_11_0_arm64.whl (79.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

stringzilla-3.12.5-cp311-cp311-macosx_10_11_x86_64.whl (79.4 kB view details)

Uploaded CPython 3.11macOS 10.11+ x86-64

stringzilla-3.12.5-cp311-cp311-macosx_10_11_universal2.whl (121.7 kB view details)

Uploaded CPython 3.11macOS 10.11+ universal2 (ARM64, x86-64)

stringzilla-3.12.5-cp310-cp310-win_arm64.whl (69.8 kB view details)

Uploaded CPython 3.10Windows ARM64

stringzilla-3.12.5-cp310-cp310-win_amd64.whl (80.1 kB view details)

Uploaded CPython 3.10Windows x86-64

stringzilla-3.12.5-cp310-cp310-win32.whl (68.5 kB view details)

Uploaded CPython 3.10Windows x86

stringzilla-3.12.5-cp310-cp310-musllinux_1_2_x86_64.whl (298.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

stringzilla-3.12.5-cp310-cp310-musllinux_1_2_s390x.whl (203.2 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ s390x

stringzilla-3.12.5-cp310-cp310-musllinux_1_2_ppc64le.whl (229.4 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ppc64le

stringzilla-3.12.5-cp310-cp310-musllinux_1_2_i686.whl (210.4 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

stringzilla-3.12.5-cp310-cp310-musllinux_1_2_armv7l.whl (198.1 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARMv7l

stringzilla-3.12.5-cp310-cp310-musllinux_1_2_aarch64.whl (224.5 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

stringzilla-3.12.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl (203.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

stringzilla-3.12.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl (231.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

stringzilla-3.12.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (229.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

stringzilla-3.12.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl (304.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

stringzilla-3.12.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (209.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

stringzilla-3.12.5-cp310-cp310-macosx_11_0_arm64.whl (79.4 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

stringzilla-3.12.5-cp310-cp310-macosx_10_11_x86_64.whl (79.4 kB view details)

Uploaded CPython 3.10macOS 10.11+ x86-64

stringzilla-3.12.5-cp310-cp310-macosx_10_11_universal2.whl (121.7 kB view details)

Uploaded CPython 3.10macOS 10.11+ universal2 (ARM64, x86-64)

stringzilla-3.12.5-cp39-cp39-win_arm64.whl (69.8 kB view details)

Uploaded CPython 3.9Windows ARM64

stringzilla-3.12.5-cp39-cp39-win_amd64.whl (80.2 kB view details)

Uploaded CPython 3.9Windows x86-64

stringzilla-3.12.5-cp39-cp39-win32.whl (68.6 kB view details)

Uploaded CPython 3.9Windows x86

stringzilla-3.12.5-cp39-cp39-musllinux_1_2_x86_64.whl (297.1 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

stringzilla-3.12.5-cp39-cp39-musllinux_1_2_s390x.whl (202.0 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ s390x

stringzilla-3.12.5-cp39-cp39-musllinux_1_2_ppc64le.whl (227.9 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ppc64le

stringzilla-3.12.5-cp39-cp39-musllinux_1_2_i686.whl (209.2 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ i686

stringzilla-3.12.5-cp39-cp39-musllinux_1_2_armv7l.whl (196.8 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARMv7l

stringzilla-3.12.5-cp39-cp39-musllinux_1_2_aarch64.whl (223.5 kB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ ARM64

stringzilla-3.12.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl (202.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

stringzilla-3.12.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl (230.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

stringzilla-3.12.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (228.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

stringzilla-3.12.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl (303.2 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

stringzilla-3.12.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (207.5 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

stringzilla-3.12.5-cp39-cp39-macosx_11_0_arm64.whl (79.4 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

stringzilla-3.12.5-cp39-cp39-macosx_10_11_x86_64.whl (79.4 kB view details)

Uploaded CPython 3.9macOS 10.11+ x86-64

stringzilla-3.12.5-cp39-cp39-macosx_10_11_universal2.whl (121.7 kB view details)

Uploaded CPython 3.9macOS 10.11+ universal2 (ARM64, x86-64)

stringzilla-3.12.5-cp38-cp38-win_amd64.whl (80.1 kB view details)

Uploaded CPython 3.8Windows x86-64

stringzilla-3.12.5-cp38-cp38-win32.whl (68.6 kB view details)

Uploaded CPython 3.8Windows x86

stringzilla-3.12.5-cp38-cp38-musllinux_1_2_x86_64.whl (295.7 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ x86-64

stringzilla-3.12.5-cp38-cp38-musllinux_1_2_s390x.whl (200.3 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ s390x

stringzilla-3.12.5-cp38-cp38-musllinux_1_2_ppc64le.whl (226.6 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ppc64le

stringzilla-3.12.5-cp38-cp38-musllinux_1_2_i686.whl (207.9 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ i686

stringzilla-3.12.5-cp38-cp38-musllinux_1_2_armv7l.whl (195.3 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARMv7l

stringzilla-3.12.5-cp38-cp38-musllinux_1_2_aarch64.whl (222.0 kB view details)

Uploaded CPython 3.8musllinux: musl 1.2+ ARM64

stringzilla-3.12.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl (200.8 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

stringzilla-3.12.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl (229.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

stringzilla-3.12.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (226.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

stringzilla-3.12.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl (301.5 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

stringzilla-3.12.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (205.9 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

stringzilla-3.12.5-cp38-cp38-macosx_11_0_arm64.whl (79.2 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

stringzilla-3.12.5-cp38-cp38-macosx_10_11_x86_64.whl (79.2 kB view details)

Uploaded CPython 3.8macOS 10.11+ x86-64

stringzilla-3.12.5-cp38-cp38-macosx_10_11_universal2.whl (121.5 kB view details)

Uploaded CPython 3.8macOS 10.11+ universal2 (ARM64, x86-64)

stringzilla-3.12.5-cp37-cp37m-win_amd64.whl (80.1 kB view details)

Uploaded CPython 3.7mWindows x86-64

stringzilla-3.12.5-cp37-cp37m-win32.whl (68.5 kB view details)

Uploaded CPython 3.7mWindows x86

stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_x86_64.whl (294.1 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.2+ x86-64

stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_s390x.whl (198.9 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.2+ s390x

stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_ppc64le.whl (224.6 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.2+ ppc64le

stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_i686.whl (206.0 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.2+ i686

stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_armv7l.whl (193.2 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.2+ ARMv7l

stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_aarch64.whl (219.6 kB view details)

Uploaded CPython 3.7mmusllinux: musl 1.2+ ARM64

stringzilla-3.12.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl (199.1 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

stringzilla-3.12.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl (227.3 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

stringzilla-3.12.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (224.3 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

stringzilla-3.12.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl (299.9 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

stringzilla-3.12.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (204.1 kB view details)

Uploaded CPython 3.7mmanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

stringzilla-3.12.5-cp37-cp37m-macosx_10_11_x86_64.whl (79.1 kB view details)

Uploaded CPython 3.7mmacOS 10.11+ x86-64

stringzilla-3.12.5-cp36-cp36m-win_amd64.whl (80.1 kB view details)

Uploaded CPython 3.6mWindows x86-64

stringzilla-3.12.5-cp36-cp36m-win32.whl (68.5 kB view details)

Uploaded CPython 3.6mWindows x86

stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_x86_64.whl (293.7 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.2+ x86-64

stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_s390x.whl (198.5 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.2+ s390x

stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_ppc64le.whl (224.2 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.2+ ppc64le

stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_i686.whl (205.7 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.2+ i686

stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_armv7l.whl (192.8 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.2+ ARMv7l

stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_aarch64.whl (219.1 kB view details)

Uploaded CPython 3.6mmusllinux: musl 1.2+ ARM64

stringzilla-3.12.5-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl (198.2 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ s390xmanylinux: glibc 2.28+ s390x

stringzilla-3.12.5-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl (226.7 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ ppc64lemanylinux: glibc 2.28+ ppc64le

stringzilla-3.12.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl (223.7 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

stringzilla-3.12.5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl (299.0 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

stringzilla-3.12.5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (203.6 kB view details)

Uploaded CPython 3.6mmanylinux: glibc 2.17+ i686manylinux: glibc 2.5+ i686

stringzilla-3.12.5-cp36-cp36m-macosx_10_11_x86_64.whl (78.9 kB view details)

Uploaded CPython 3.6mmacOS 10.11+ x86-64

File details

Details for the file stringzilla-3.12.5.tar.gz.

File metadata

  • Download URL: stringzilla-3.12.5.tar.gz
  • Upload date:
  • Size: 186.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for stringzilla-3.12.5.tar.gz
Algorithm Hash digest
SHA256 57958a420c8e5bfd958740a76a35d357f64c18713a48dbf5983ae0a4e50c010d
MD5 08191ca849c96e9fd17e3895b83e6e3d
BLAKE2b-256 91776e458f53f3ae04df00fd499a124561ad626253bf1c4ee6e2f027e2ddb547

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5.tar.gz:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-win_arm64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 101d94f351d918144389ff316ff61efb06f645702078c48d7c4e0973b788fab9
MD5 6eac20a3f94b7bb26aa20ad6d92b187e
BLAKE2b-256 53a1d8d7144490b49598cdb166f4389614b251b35c531aeb5a29f424a3e42df4

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-win_arm64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-win_amd64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 a921412385671db26dc4b078529ac6001c93445f06ff71e339a315c0e261d459
MD5 eb9401a7f93235b3e7f2311da17d5702
BLAKE2b-256 a408849dc695e49d017bc314b2e65a79c5ff1c140fc3f99b13df1e240597c8e1

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-win_amd64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-win32.whl.

File metadata

  • Download URL: stringzilla-3.12.5-cp313-cp313-win32.whl
  • Upload date:
  • Size: 68.6 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 98d22acd6c06864df30df0860307fb6fb6ca98af0bdd0d0877fc182bf580afbd
MD5 4f5cb92b3cd4d41592f0b8072a8c4dfd
BLAKE2b-256 19bd6de50e3b969ba417825ddd8cb6f36d34981cacb90d026769b5dca2d7e5fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-win32.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dab98e2e20de12b03868011f82438a5b3e5c5a215ae9c8ab3cd8c2e1dc708b90
MD5 29534b96ab9235a3ce17004a33ca7617
BLAKE2b-256 dbbf6047e5ff3976027e1bdff104a40d5768c4b858c210c3b46740d1bc59dc39

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 9b8408bbd14e0df3feed03c7719269f0f7e0ddb4b6a44f53eb2102a645a4c8bf
MD5 78ebf054a42ded1e715dec1155111c8e
BLAKE2b-256 b18b3ec4aafddf7e9693ffb2adcb8d1515dafb76be41171da1a1b6d0d3b055fb

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 5da15a319f76b7fdba403d5b93ecd982e84faa010d40a28aeb25c0864e01df46
MD5 35c5c824f0f26244db61d20ab38330fc
BLAKE2b-256 f3f47c9d8c1a9fb067bca85fe04398b35a3f900c9487a4cb2410fee5b1cd838c

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 2086748bc23f42ff724981d9e5e18f28f673b6ed593d8c4ba1272bd45a7563be
MD5 a1dd35987a47d240c99d881c2dae0013
BLAKE2b-256 1c19448c24de9ea826d4df789d21b460d42954658cc3e9e5be126b08ff2f319f

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 fa87b5fa1bc0c67a6c14517c32278299ac292ccfe7ba937026f537a80532255f
MD5 d6fbeb0b36579f8afabad9db76ecbda1
BLAKE2b-256 f8aaa4d5be7897a219fcb1347106a92e0e8cafd99f00300b7946ffa1e5d1800d

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-musllinux_1_2_armv7l.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f7d8b0931a3da7bab8ca8f1dfb76229e23e928ebb0714b44f4efa1d599ab2730
MD5 04169154decab5639459aa07f1610887
BLAKE2b-256 2923e442dcad668eb34cfb923703ec25f5ea7f2148ea15c8e7a8626de9c20ab9

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 a49e387bde691c962483499a4e3e2741ebb577e26ea69d612e430d4d9dcddccf
MD5 91eb2fe4572df01f30ca15d7096dffab
BLAKE2b-256 80ecece11b021b7f04020163ef34939ed7a8a1d19470c03f0a408928404d4e76

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 6b04e810073c7e4e1aa97838a3c5eb51e17c1e0943b2572d007cf98c69c88ab2
MD5 3d43b00d273a5cc808d67e07a8682632
BLAKE2b-256 47a9c99e1a4d4fc4ef67eaf40713d24fe45d7abf0885bab84d48d65912d6b5c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d6462c127d89257925d2c06d023b6b9975e3310acad4b5d262bd48ed899ddbc7
MD5 fbc9d89ad210629b97c627475f5079cf
BLAKE2b-256 173c676843687c0abbc9fdd5befe64ae57338c65ca12cf61adf5bb188988984e

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0f7e8f8edd1fe9daf17fd33807d042b61d04d5ae4b2f2b377bd098f21b1785e0
MD5 133b636238a7ba00daf4175f08b5fa2e
BLAKE2b-256 2d0b0e0cc33a040ede908cbf6fbbe5342d230dbaa82640c66237ee804ecbebae

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 891a33fb58164ed52ab99fd977cf3a88cb49be56ea9e8a4f6299a9a17876a661
MD5 a03c650e48f90f555371618ddf3ffda4
BLAKE2b-256 275fbe467c238f36acde7467f1e73d9c6b9d027005216b28c20d358420caa8dc

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c4caf1eccc4e62c2380b712d51d54579618b4b7ab7321d16ac1bd3db95b7ca7c
MD5 18331dbd3cd99918f82c78d9003f969e
BLAKE2b-256 874e7709811ed2a695ee36f83cf6024053f6f4fcb225e71724db7e401344ccc4

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d3140697c9fb77b7e1a7e64cafb21e8c2c7db328b584168c7591a271c78115a7
MD5 cd5f6c4b5f7281e0f05629d94f040328
BLAKE2b-256 0f47460277da6abfcfb32d0456b08bd1048dba2a12fa217f2b521780f0534367

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp313-cp313-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp313-cp313-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 8f1d0d8ad3b5115c524dddfb882c5752f04c9a1852a33a83a5dc04f99304c1bc
MD5 0877bfcd8138a949e6b639799410a415
BLAKE2b-256 3a122be50b4f963e6093cc452420487576051521f2740c81c992a261586dfc76

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp313-cp313-macosx_10_13_universal2.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-win_arm64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 c20c5438bb66f1f36f447d3b122f58a41b7218d086024567c42da0a873cf28fe
MD5 84ae0473810045daac735460235950f0
BLAKE2b-256 f9c35c36f103f17c78120b7bbdbae4b82b1da468b7d1a318189a3c069b7ccf0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-win_arm64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-win_amd64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c9b7d96e8229d5d234f9d1f9f2a8df1eac8606863d116a60618d371884d96f14
MD5 2716f5852b30dfed8307426c830a317b
BLAKE2b-256 3b3348ccae51648650f3403d06e07c98826791b0a21d2b2c21eb65ea6d2e1f18

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-win_amd64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-win32.whl.

File metadata

  • Download URL: stringzilla-3.12.5-cp312-cp312-win32.whl
  • Upload date:
  • Size: 68.6 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 ef8c79f8c341a1aa36dc465cdd1640c60023b3b9bfebfcecd8a7e250f9f9927a
MD5 c33e5d469ada350a007568010714f79c
BLAKE2b-256 90ae7771372a002e62dc708699e9a6b740f5171cad3a651c053219edd973f4ce

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-win32.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b2d438848942e83c0a0dcda5023fc8431535c00f671545e76f09ec08d66c57a3
MD5 1293ef98dba2b32db2554c7410ccd3ea
BLAKE2b-256 e2dce301945f24d4d45de8a05579ec5ee3e67de2a2401a9c1958a7fb26063404

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 7a1e0d1329e773d202c8721a371ce6b56dc796b6375e4588304d31adc906d267
MD5 42d1018c76249ecc4189f5a07a118589
BLAKE2b-256 faede6938136b2a4879f01ce89ed7aa0381097c72b36038811ea8baac0787648

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 bdfd266a145085e3f7fe9041528fe2657c2c2aafefffe4f822eb9a694d325d12
MD5 c57af00ad8c93844502933914eda61f3
BLAKE2b-256 645db52f1ca7e27ce6711d7f03b5e4019a27769508c6fd4a03507e023a527ec9

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 91979eea022d25ed12cf6f8ac06d789bd1ffab8da5ac213d1ad21c0529745a06
MD5 316023149611e1aa5db5c9abc5107738
BLAKE2b-256 9624f51213e77144699f5c7c3c0ce947d79f4315f6441e2f33a3b0d952d8d284

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 ded46cc4b18d802f98af954e54cfaf32fcfb7ee37b25b1cf7bda11ea0aaa130f
MD5 01066ceaedbf554eeaf029932287e497
BLAKE2b-256 051b514ec95ad68b9c00ba8e268b6b0c08d3e517f770b9b996327fc98905ff49

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-musllinux_1_2_armv7l.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6456fe5df5ea265e8c6c32595c7213fbe44e48b9fc8b7b6908e0d581ee427a2f
MD5 c58ee03f607f61f76371a19fc8ff350a
BLAKE2b-256 5cd6e41d29a18a91f1d24e0ff6edaaf47f4eeb696370640cb3b028ef88331f48

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 3304d0f5b74acb132154e0861c0c72bee419fd5280d30bad59580c188c79b337
MD5 9b9b3b1165a520b9d8d268921772e416
BLAKE2b-256 409d8e48d88577ab1fca6aae1c8b7275ad28a9409700d93007dc2103485c5f55

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 3bd12dd3b4a56fb93d28058f8c200835f86cb67b4fbfc83679a15e4f0ba7b0dd
MD5 175fed4d1e1d70a11c98c48000f4fbfd
BLAKE2b-256 ccb30cfd13dc65467f5bb4cc234f947bd64b01dad873f10904ade9e453933b04

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 a751bfc39b280e31932c8206c814f67ed0f45ac182977bb1116aa3cbfbc8bba8
MD5 3a05fa2e9ca51614a38dc46f40178a5f
BLAKE2b-256 42c7e9da1856a35863fbb42fc00c4f5a517da9f0d8b8bfe55d067e14c1dee241

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 48efbe3ea3f9dc69b4262f4858b68b0a2abf546f9be1927ef208026e2838393b
MD5 9c18135daf73d7c110a7a3f8647f6ada
BLAKE2b-256 6d69b6078679cab6b4ea92a2895d8643875bb27398f4e5aacde5a7648e641708

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 315f9b14d56c94d414014a34722e5b9beb68befdb1b30ec82a62f8b00c9446a2
MD5 362dc79d7cc596a9e91f8a802f61e5b3
BLAKE2b-256 7862dce966ec333cc256f72b2b50e1fc4d53cb9ab27623772559fab2a4372b69

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 baf438334499cdaa43488c359f2c5eaf8ad79dbb84727c6e05d892dcd6be2dd7
MD5 8da4645242bfb79eb5e4ca5e490917d5
BLAKE2b-256 ab4d0dd25abfd2889601287cf1f4b1757db36ae49f92c19a49243624b29cd328

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c3ec9837752dfed493642952ead9829fb3c4befaa9b4f4a74f32e626a1fba664
MD5 9f5a5a864784a4047da3e35ef8907a6f
BLAKE2b-256 2383e658a589dd2077c355926a9fb42c0669579ad1420cff963e5200bd73a0b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 1171346784802f62282ef156f0168d52e7ba213fbaf566697f613fb20bd98bc2
MD5 1903d689de479b456152029fe98b5217
BLAKE2b-256 2f023b70a5e69d1ebc6b6c5a9d6520e3450f39d45ec3c4e45cb5267aa590d980

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp312-cp312-macosx_10_13_universal2.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-win_arm64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 d026d00adfaf245510ef6778eaf49def94381420efc02b3d3305a66c3d85297e
MD5 d4a4a23c8897ecef19257e6a4cb04384
BLAKE2b-256 fab5c63820c972a1a84b0b184798f5ce41da0715fa65fd240459f776c0cbb0b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-win_arm64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-win_amd64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7b8c36d426cb6011d2b97c69eb18eb859d8c56c9fcb26cf99d9eca2f8abc95bf
MD5 1867f7ed45af8857c65611c0882bc297
BLAKE2b-256 b84808265678340debbeb091f7056ea1113c3f0329978035955a9e205ddf0c5d

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-win_amd64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-win32.whl.

File metadata

  • Download URL: stringzilla-3.12.5-cp311-cp311-win32.whl
  • Upload date:
  • Size: 68.5 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 8de56b53a0bee3866516121002f9ec5c97bbd401aafc4a074abf9e909d11a130
MD5 9001f061aaca08a2d289022369b1963a
BLAKE2b-256 5b9a3b8096592ec09995db3be9498afdd5063458df0a96bf0aa70c8bf22a6bf1

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-win32.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8bae3f14abfe1bee1e6fd99c5a21e28ee1df4b8d4e2551856079cfb776cc14fc
MD5 1e4209d52dae53d0295c976e1671c50c
BLAKE2b-256 e9ac6ad92b988777fee8ea72f86c5f31d50b8d611903a8c39c7e72ed3cdbd143

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 83e1056b288171efa9e7dea7bdd2f4d7f3212d9e3e12a7e8cd2e760a2de93f8b
MD5 f259f446c75555ac64b4bd8210b450c4
BLAKE2b-256 dba55ed7806e4c959378dcf35eb608603a0488843f73016ce40e81c5c0a598f3

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 d74d17fb66f1329d965b533b18dc135eb85a25cfe1e25c06b6936630f0bfde1b
MD5 1d9e7342477d01ec32762ade4856b237
BLAKE2b-256 6c5d8c9964e6f56dc5ee3814e2f9a12eb1bd6c9200b03aff469509377d40a5e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0cff7a8000ea05009b9d452266dfc3cd12fc81a3a1fd44d68e34374eef38e0f1
MD5 2226977e54db6d3f29216b983a288547
BLAKE2b-256 ee030c133cc8639576bbfcdfb443ead52fe4997ba5851be283050ea82e186dc9

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 83f19578361dfa7821c1809b0da5d8df13f5470f86405ffc3f529a9336c6a323
MD5 70395157c3d2b981f2c425120fc03504
BLAKE2b-256 aaf9012212a7098c27b19ef9f456c38d9dbd1288cc8e58a3a09b6dd96b028c03

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-musllinux_1_2_armv7l.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 6ef2d489b9148fa810c7cd73543f27525750a448cb931c2baa4ab413291597cf
MD5 92e5f54a4bb679a956aff213f442d920
BLAKE2b-256 d900997b48e2b4ee087aa85994a5603b9dae35bf299d29265702521916b7c0d9

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 40dbc6db2061eb0c2759fa136434e8def3e68143c67a46842a633672b80d78f5
MD5 542373c1413c915a2de4c1ad88bdc8ac
BLAKE2b-256 c23f6e5f99b2ca17150d382f21512845558eb0937522ad3d43de780e265061ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 ff2df3ced63d4d1c99130aa6fc686a363a5d7c07a7f4d17646f0197f673da118
MD5 adda50782f103a8601e3f4a5cdf7d730
BLAKE2b-256 c4e5f698068dd34af79c270dbf9675b5f8075a005779c6c25a78dc7730c340bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fed688e2406d5f02e69d389e4378c92d63737ce44ce4afbc5f4587b178a39c17
MD5 c75a3bdea179169ec489c417b5310caf
BLAKE2b-256 127c90cd904288f788ceb246ae159d4bf5438a708fc102a7e034bd97baf447d2

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 7a4281220e0fb395265d035c2f488a4b4fed111ca36fcb67ac32b94fea004c48
MD5 0fc3754a605d79cfadf70672bcc39604
BLAKE2b-256 bda8dbb08d6576d0f4302897a23ef6f5626ec0015a0515b85336f845101118f9

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7e55bc1c3e3de1a8816ce0442e627dd6a46afb319291c981cf2becf149eb4fc6
MD5 f8d6fe2556700ef256292f8a482c120e
BLAKE2b-256 97119dbb7be39115d0ef30f6787bb0842233faac1a6db76b661c668c2013cd5b

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a192c5743d103061a5e7b62792395f54257f7f7418afa22a44e2b02bb749608b
MD5 16b023d16624cff58a5c0aa8d7ff7a73
BLAKE2b-256 944832a07b193bf526216a99195ddf4e660ae2f6614d3bbb8f411f8ef215788e

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-macosx_10_11_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-macosx_10_11_x86_64.whl
Algorithm Hash digest
SHA256 5f698e0571b9feb6a3f0565908ccd472dc55c0f781c2520276f354abe63a0db7
MD5 5faf9f9fc59752675381ead4a53abfc6
BLAKE2b-256 e51209f3d53906923b3cb2b341326f389792ae0dd5c254b7c79a9b266d7a1f97

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-macosx_10_11_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp311-cp311-macosx_10_11_universal2.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp311-cp311-macosx_10_11_universal2.whl
Algorithm Hash digest
SHA256 a83218a2b38e645368f7f5e06a4dd4c9606b1b148703e5afe9f3fa9566940c96
MD5 794c33d3bcb09fd27dd69353b1d26e24
BLAKE2b-256 d537c6d2d22b79897861684c1e0c50a79c81305e72565fcc82d0c0e27bcc6ca7

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp311-cp311-macosx_10_11_universal2.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-win_arm64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-win_arm64.whl
Algorithm Hash digest
SHA256 c4e182799abb75e09f2d372f67ec8c6916130507b0895c7ff7030944fda98f83
MD5 e149adc8fa155c095a4590ceaf8cc29a
BLAKE2b-256 f7c2e0bc9bef10ba986cf6060b1a5aa87da50676bd2fe2d5ed3071908974e064

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-win_arm64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-win_amd64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 7c72b496bd63783587559630d87b841eba78838580f7e82bea0c678bcce01118
MD5 64694217ac857f0ecd4f1f1efc517bb9
BLAKE2b-256 4039b5ce9ae43e648316846014cb1624431c2f5b820dee39988a18d4a0797ad0

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-win_amd64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-win32.whl.

File metadata

  • Download URL: stringzilla-3.12.5-cp310-cp310-win32.whl
  • Upload date:
  • Size: 68.5 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 0f71d8224cf6f658ae9cdf0e34cc5839d1f3f3c322de9dc1d849f31e1e72a84b
MD5 8779abe0d9f41c6e735cfe08ff4ec506
BLAKE2b-256 49a4120795800b1d38fa8286a6111f5f404322adb3397b18856db3acb4fab54b

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-win32.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 196b4c6212469bdacb506b53c94eef13837e4a10c45898fb2bbaca209da3b049
MD5 c585c88256dd63be36f13e570d5212d6
BLAKE2b-256 b28a45937ce7cbe99ecaacce67e5c724fb58e4f2cb1c9d41bd187f65c202b9c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 c7f2e90bf2a42106b052013e0bd0ba0c8e7246de50f8ab373ad7595b1974a402
MD5 74aac78e544cfc8ad2450e4e68c5fe6d
BLAKE2b-256 3433193c716d45559373fc55de25405404dc16c3feab052d33367caeb0d211ae

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 4312f52846f5257bffdee790f8e29a22f5cc9517caa43659635061f175c50896
MD5 cad9a4b74cdb467ec18fa16243d083a8
BLAKE2b-256 9d3e50cb83a77fb20cb093c251466a96e3205477d944a69900d17c49121feffe

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 b48fa436a40fb4f74c6fb8a56f75ca98384ba0d611df25d20fc3afee6687ded3
MD5 13927bf9cd1db5746c262154859c09ca
BLAKE2b-256 0e6c51c9a84b23e7acad44b791c906d5271d7cb32dcfe522d027b2ad35eb8cfe

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 d22995a79625d756d9bce98fd37e1d6e1b22d2c89501dc55d845c5a433fc3250
MD5 5be8d5f11ced80bee07385fee43a396a
BLAKE2b-256 17eff3b5b029c929aa1e15b1e69fcebbbec10f40807494e6ffc059b45fb94948

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-musllinux_1_2_armv7l.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 1f36978c2d91f06f647bed422ad91c9b411310012dc0947d4a93e89ca900b75c
MD5 fa978f75d33a1e002a23bed8ffb292aa
BLAKE2b-256 b3afbe5f092b9de330c43b388660c3baf4601e980f654f1a6b740ea29a274de4

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 dd65a1f996d5d3a011dd4a9ba39f4981ed48878c77dc51de55f77d520917baf5
MD5 052aa026af672f309b60e9dd55a04eb7
BLAKE2b-256 0c714370f837eb6b8da53d9e6447ac872eeeacacf21c01be97e98e3c1f0b1327

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 258e95b9ba322d1fb8bfd2f3c42f4dac3b1c2b4665b0aaaf3f57ebff236f54f8
MD5 e08ddfa390cd636137339646ac9fb2cc
BLAKE2b-256 f19541a5e17fbd82b243ba88fa44786eb0e29ef06e5bd50dc7e754cb563286c3

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bd6d1d9b15e97b5feb59942a3af5b96f544f00e136fdfdbac7c43b3a73e74772
MD5 00a5040c5ffcc0563cb1edf6c799cdc4
BLAKE2b-256 54e05c8e7bbe9914b4d18e1c7ec40bdf12589556d995949cbad4909d9943d2ff

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b38b87381a7908a7f24ab452eab1ded12fd1d0f280e608073e3197ecdfacc43d
MD5 f410bca6107c181249487b849881a5cd
BLAKE2b-256 5df7989ef27a9122ef1bc11ac913344be6051d22d19952fc2ef292058e60e586

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 248a4145334475a4a055a36c4418f70c9084d74e0c11f9acb6b20c15902f5fb8
MD5 8e1753afe1459f9e0e823c529ec9f0f3
BLAKE2b-256 c2a1c880e1c9e9e8926473a009fc61c90b9a141f33df3816576c0810ab9b03de

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e5dd2069ee42291c9ab06c4cd7ae0b622181af0ce64ce209b000bf43776dd416
MD5 32fd6824a7fcaa01015ad07394c31025
BLAKE2b-256 d39c58bb22f19b1a4591b74c5ae3023f66bb87287ff78cfd2a0ee6572bace031

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-macosx_10_11_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-macosx_10_11_x86_64.whl
Algorithm Hash digest
SHA256 58a120a94b8345799a2984a51f2ca5d8259fc98e470ca9d44c07b2f9a6718125
MD5 56096844bf0678b8ac7fefdab60e5277
BLAKE2b-256 3bb58ec92434f325d599dbd58bc86a992f7e7aa149246d1d7aef32bade7d7e32

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-macosx_10_11_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp310-cp310-macosx_10_11_universal2.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp310-cp310-macosx_10_11_universal2.whl
Algorithm Hash digest
SHA256 309a5596deefadc8b06d372c26ec7e220dacb0c59cf7ad7e7879da403b55ab72
MD5 04e4e72ed4235d313b1585baeaf114f3
BLAKE2b-256 68e01b5f7cd6c37714b434fa1bad8d0f107c5ce5adf67b1c7b612d62ee5220a8

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp310-cp310-macosx_10_11_universal2.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-win_arm64.whl.

File metadata

  • Download URL: stringzilla-3.12.5-cp39-cp39-win_arm64.whl
  • Upload date:
  • Size: 69.8 kB
  • Tags: CPython 3.9, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-win_arm64.whl
Algorithm Hash digest
SHA256 ae4de9e348b2ef2640e5de4368cc2f18743b60ffb45daf156a3d8c6a99ff6e98
MD5 ce5d64fd119bb65ca8af2c95cbe1f166
BLAKE2b-256 9155189849ce09c00353448b4774cbdf0ab3f082ebbaeb77a7dcc4e9e3b364de

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-win_arm64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: stringzilla-3.12.5-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 80.2 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 dd2d3bb4d139eee4fe8cbc380352aff0e999f85a09d75a6f9a024d0a2ca02e13
MD5 ab780bef1a01a193dea1ba87c82925d1
BLAKE2b-256 054c275fc582ee3533cb73d2cdb700483e6133027f677e33c47480c891f71f57

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-win_amd64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-win32.whl.

File metadata

  • Download URL: stringzilla-3.12.5-cp39-cp39-win32.whl
  • Upload date:
  • Size: 68.6 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 e22ee225666f1ca8a395c7c2e6839e971616293247919f0a71d38166483e6a55
MD5 a7b21a90119d51e81c83394fd8b7b9f5
BLAKE2b-256 885022e40832b771c4a1f923de51a41ac966442e3b78e969c12337f1de668ec5

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-win32.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 9a966db6f1fef8209827fe8cc68e232ab7c5e49de0c44b1bcad60086dec74998
MD5 f706f5700e198a33a211b82ea621b2c3
BLAKE2b-256 a3e6ecebfedf1146c30d495cd8fa4a69b426d04f923c9c9cf16eeb17c8c0dc52

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 736cbd711d6d5134165519618fca3173bf946a8f9e311fd7535e305e2195e4b9
MD5 3d27c1bfc2c9fd3bff8c27252ca14a0b
BLAKE2b-256 692e7438d1fa36bff7fbe8cb79d225ba7e8ddb0f5568e14b5b645e97e05a0db0

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 e9bad80ca6525be4c9b51c0bdb71a893b5ac87ccf3a54f37fcb5c210253b8192
MD5 070d9968c63f1feb9fd4b12e9f0c097f
BLAKE2b-256 f33496ff9019fd3fc24d3065597074ec3d82a3cf1763459cd1a7350604098713

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 0a2e98738b8c7329a57faf7aab209d871b0af2b218a22f4851a77acce52e442c
MD5 f4f58f2c118425394e345656a15de013
BLAKE2b-256 40bc05367a6c78fce92985e49c9cb6134ea89089ca078bec3dec670443c4be04

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 298825874afb449dd839380776e74212955c3eb6b812aa25dea1635d9800dfbf
MD5 94263c707623ab1be35dff7f594f4d50
BLAKE2b-256 302abd7fc976c0e87a749938ee4cbf645538b51e2f8d2dca2f26cedf0d0962fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-musllinux_1_2_armv7l.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 845a567326c09a62fd697cca2993e99eee31e6276083b39ae712d2879fc12e04
MD5 2aff763aabeb822dedd20804c5968d58
BLAKE2b-256 5b26b939ef03efd1559567d9aa3f17a0730c94bf2ea0a9424881bdc578afeed1

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 9112f1e8f2db7f25845906c3f5a4e51256a538e81494ed5be5e36be345702a82
MD5 affbb8399f44892f6155120a741145e0
BLAKE2b-256 3f1326edc9fa400570a5907a317a5762bdc7122df147941f3a80cda36354fb65

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 2a83e3d9cc55f2a01f9721cfc48d54de4e31caf94ef30124bd4515f2dc7c1147
MD5 c0cd08a10870c7ec2aa9aeff48ecf768
BLAKE2b-256 7321d58cf59c71b249e484b2c9fe7d470d4c035c532c4c9c990ab408cf27e6aa

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c7c9e21519d33aa243065062a20810bbe190c9a574498de9ba604b99c2f34fb5
MD5 8491c8061a3a0265367a44456146c4c0
BLAKE2b-256 627d30b4a85c6ac30a6c22fce38f865ee6b6dce3628b00bcca5f0814776cbf3a

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 21306e58181372988abeacd22e16755cfd66c19c90762125ed1776bb2a5cf3e3
MD5 48378ec0d6c4c5bf909960f1f84cef1b
BLAKE2b-256 e354453ffc1a02e0d4fb0c8b161f5ce029c76449717dcfd0019ec84cb54b8741

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 6a6df2a99524545ed3ba9e581934186b9aac5fc52d9a986e81916ca9dba759db
MD5 621fd555cbfd127c4599c22629e4bb1d
BLAKE2b-256 874f99811ac05855c6325df3be24bf9ad0da3ffa34632dab4d1bb8ba0e73701a

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a78bfeef7d5dc83753753ea44b3df7c7d4a4593fb4874f0401482744eeb5ed15
MD5 982537ee3b4b7404907d3046265a2922
BLAKE2b-256 b0db95136e9cd09261a7dbdfc506f2f38bbfb862e4a67000587f0b061fa8d7f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-macosx_10_11_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-macosx_10_11_x86_64.whl
Algorithm Hash digest
SHA256 ff6967a7660218a0aeacc840dcb0190b72f082a9c9a9cd5aa050153779f2c603
MD5 1ac0602e0880e9107078a1fb62233879
BLAKE2b-256 7fefad15cbd2eac0a12c9476a605d71772dea28e143ff3a2fafd8ef250efb14d

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-macosx_10_11_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp39-cp39-macosx_10_11_universal2.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp39-cp39-macosx_10_11_universal2.whl
Algorithm Hash digest
SHA256 e87a9b40573a982e71e6d9c2e25537da4618df226a252a674000a274409dbad9
MD5 a6ea15fca21c87e9fabc987fb19cb77a
BLAKE2b-256 95230e15b1856f0bac7f46742c9c9861011e73fa2ff357297ac89e8465653648

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp39-cp39-macosx_10_11_universal2.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: stringzilla-3.12.5-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 80.1 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 2ac439c8404b277f9506133747a7e00278a96071a9410572490f0a33f4f4b21b
MD5 e4e1243e2ba058e090ccddc64418291d
BLAKE2b-256 ce43ac4b71b70ced98c5fcea85b5b2d1158ecb8760ee3fcb0a1df2963ebc92d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-win_amd64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-win32.whl.

File metadata

  • Download URL: stringzilla-3.12.5-cp38-cp38-win32.whl
  • Upload date:
  • Size: 68.6 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 79640d0a689e64ee48c20bcf873f0c22c83e9f4741b760a4baf141d809bd413b
MD5 57025fe9a4ef4331f075435ac9054f3f
BLAKE2b-256 adc7fe2daf2ae97c4aed39e5501e877085c4d9ef74918844eb6c2d35a90e7226

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-win32.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 f972a02e6f1746f22f0b1a9eade9a2ce6e35313d3f58b610044c43dc7075a106
MD5 d6ce505f7d3ed24e12d1a599ca113453
BLAKE2b-256 064f3a746bf47dcf4e5085627521582ce2a96a9b7da378adeb9f8af821ecebbb

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 0005ad680ff3150302c1702cb871398ffb8bf478f0e18bbeeb4bc4c8019f9350
MD5 a469e98fffe8f2cdb606c19e5b8af528
BLAKE2b-256 f186b4f601b33d4c4ce90a6a16bb3e7cd6b86953fd258707da2f7a39891902c7

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 1d7d5c2dcd13ff6dc98a8ecc207ea1ddb5bba901cff9fbc6426340d23cb2d17f
MD5 1139824ef12815a857da072488f30a16
BLAKE2b-256 ceac9f2d91e0cb7de9a10fdf23ea3708c4b941c0b0a5ed333b1994be19500f31

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 52afdfe38ee4601e13f3f649ac25e19edf4932e142ec17535ea255b7d4be3354
MD5 b657aa867bef8f83460c37a3a2f70407
BLAKE2b-256 8e1e66d40bd92c2b0927fae8e31252a744fc82a610bb77d6b34a9635e3e97e37

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 c7109079e11661299709618c4e3d0bbfa77970424653baa8e7df5cfeb97053c3
MD5 58e40eefa280c8c7632ff1abd809485c
BLAKE2b-256 5233aaeda2a38d50c7bc4e627b9990f2f4f606b219fb0d994171d76d1d08ad0e

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-musllinux_1_2_armv7l.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ffd00a552235fa20e0d2b3071d2a067d854456fc0fa78554790bbd37453326d6
MD5 366dd86ef6fb5d12abb5fbaab85a1ba2
BLAKE2b-256 e026a2af417110d0288575e15d02ec79c77bd078cc56bed6a4cc93f490dab25b

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 f95b756f8524e453792dfc6800a17b87c405afdbc054c37e3b36fd1f7f0e50fe
MD5 ee7408ac54674eda5d0a0a9b7af6944e
BLAKE2b-256 763cb4cb5f7c218e64c964d3487c8b0c83efec5feb3c9f627a721edf400a2e02

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 6f236daaef1e25b3218d35dd8a7b62168a2eafacc06a4edfe439315800e1dcc7
MD5 5954fd52b84c919c811dd9c92b6f7ba3
BLAKE2b-256 019c4c5d83559905419bde6407929118de771eea4995ec5f2538359bbef71362

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 89fc018ec3cf03c3bff8d6651af2c84f5b7ca7f0c8d0799e5550d8cdd105723d
MD5 bac57528f058aa40372cb3e34fffc5a3
BLAKE2b-256 8a1414c49e7eb99bef345899731c8c4759ea9f1e5fe15cc0bbbed1ec3b43c1b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 11d5ab714b716c1b231d9976aab035bf5ef67acc2f80deba28de47232f274c03
MD5 9d645769c80623ed8582869de1a19e85
BLAKE2b-256 c9b4d7cf67454ac12fd26811cd91beb5bd3de7718c0c43f476da26c3f3ea10dd

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 3400ef2a7ca14cebe5e2d20d859ed384eaf8004debc95e617fef95697eebabe0
MD5 e8eb8b4ee5b187a4f69547d5c8f729f4
BLAKE2b-256 ad41725ccc591fb999e72a80a23faccb2e5c8319c59c523309f36388eb8a17ed

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 86b282677bad0c4de59c5251211eba433c9157ea3fe0b724591ad5e389cfc77a
MD5 e8a7cb5568a611aab4c148ee2dcaaaaf
BLAKE2b-256 0c0ddbbd5b01f9d7cefef48636dfc5ee2c450009e51c8fe48ad2297081ef16f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-macosx_11_0_arm64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-macosx_10_11_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-macosx_10_11_x86_64.whl
Algorithm Hash digest
SHA256 68638de874f2abd789e2a7ab8f84bd845b4b061c0bb4e1987415b6cb2a5746e4
MD5 87c53f6f742f68b6206bd4f9ae046128
BLAKE2b-256 c90586c95eeeb99441f3359e28c4a2c6ce5d4e81246ea285b3ff5a24551bf70f

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-macosx_10_11_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp38-cp38-macosx_10_11_universal2.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp38-cp38-macosx_10_11_universal2.whl
Algorithm Hash digest
SHA256 c24ed28f09e41c09ebe682cd0213210283b5f06d65a557de1c554832c0230a4c
MD5 9c413dc79bb0d06670d213fc2432aa96
BLAKE2b-256 04bef12c2bad39d566d1801a7447f3efdeb9f67727dd7421146e68332fb8ddc8

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp38-cp38-macosx_10_11_universal2.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp37-cp37m-win_amd64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 49be75f186b3f15dc1d14d4f6f239298b6a6451d6d25bb4a52176373e79c32b7
MD5 618f691b39274d20929cc7603c0602a8
BLAKE2b-256 455363a70705879085869112a58f0ae914dfce0bfc32c7ae3c1b19bb71daea68

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp37-cp37m-win_amd64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp37-cp37m-win32.whl.

File metadata

  • Download URL: stringzilla-3.12.5-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 68.5 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for stringzilla-3.12.5-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 be4543b193f6992be17839f2db7bd6eeff3e325a8798f8900589b17bd79cee2f
MD5 1dde914a0b6639d17e90ce20db37063f
BLAKE2b-256 9bfd3a020a1b3a8ad1f128f219dd2d736dccd961ad8fba73ff8f00901cacc3e4

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp37-cp37m-win32.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 259c8b5c6e0765d5f7896ce93030e1cfbeb1ac3b2c769b50e2530a1519c44c75
MD5 44dab6ebc99f7ab1ca81794c2045a2d0
BLAKE2b-256 6ac2f26c8a42f69dce77dfdc8535d8f1b00c1440014a8fd7ce24c23f2e3a998d

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 e3c0281f6ab8cd7a38068db921bd75945a27d141c5f985ab4b27a0acb8cd79c3
MD5 443f2be0c5b2bb3b540f931e62058e63
BLAKE2b-256 bcd0979596e6f21775d6c65b035754c0c676e6bbdb5fa285756c391dd6c9d004

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 d0ba567e7597cf94c400320e16b3f2c03863b64f462234394be509033074c129
MD5 aa3ba39774d43c40dc8ca7f21b1c323b
BLAKE2b-256 1c9a587bde57410ede6560e39720fe73bf12a01794c9260bc7da54d5c7d5210a

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 a6f3ec8a43fccd1850d2a8939f5ac7d927ed0fe711eded1a078e840dbe14d329
MD5 59d738c6a43449d0521a42666a9c1580
BLAKE2b-256 ce26c2ed877f9d55e0134b8a58d9a3435718e5c466c8a7422f55665da61d73c5

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 e83910e46846db76bbf5eacf0d672be55ece62061770047f558bdff346e26a7e
MD5 dfe972377533385a87833c9efdcc8135
BLAKE2b-256 35e687e1d2c6f56fc3d4ef77dcee21c66835e70aa510d8e13af0479a50ac5d89

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_armv7l.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9eff720eda5beaa69cbc13f851d76d3fefcd1f3688a1ce0e850f6e71b99769b4
MD5 e0afe9aa792170c8246f69cbda0fac92
BLAKE2b-256 268a5d9fee241e082592d7412c0b882f9b4fc2e60777cb57c5535989acc15308

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp37-cp37m-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 ba497b605bca3ec31e8b50b68cf8593f4b7770f777e0aef5a02e986f0895cb17
MD5 763b78fe6bf00e86bca778afd3321b6d
BLAKE2b-256 eef03f13b7150d7622e41b2837f9e3f8a9c515ec8eb66d1ad12849863e1ee630

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp37-cp37m-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 2c00535979818e5f4d7307d3b9b9d7fe425182907341ffef5041567dd274077f
MD5 4ce1fe855d58a07bde0f6db788beed5e
BLAKE2b-256 8e2d37501ccd70c67c62eb852ccc007e26365bac7011363e867fd0581dc2c1eb

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp37-cp37m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b9021545864ca5155c88f89711ab05585235782cd3a1764f19fd8c8ecfc905f4
MD5 10f002abded7c8d23f1fe6daac41a1b1
BLAKE2b-256 c57c87b154993444fd5da605db5ea07af2d11d338ddd6ab6011c1fd007910a63

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 36d91dfe5b862708a7cee0220a0467aef27e76a25a67f74e79e0b5154e908a21
MD5 1979aac07649423801b788fb6942fc57
BLAKE2b-256 6e03af293ac77d20fa490946a2e9c3c8debe53a0515b4ff6ec6304774b3c6638

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7e0b00da8210ca0df750e35dccbff18e4f2a7203aa9f2c313a2e0b7d170e2a9d
MD5 6ddb4e5f1d027a750f5716e514f9c65c
BLAKE2b-256 940faf278267864a7ed9d7525a626e0d8a76c4f89a20c937a52e91c8e900d0f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp37-cp37m-macosx_10_11_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp37-cp37m-macosx_10_11_x86_64.whl
Algorithm Hash digest
SHA256 269fd074cc622c046cda7fa491f1157ae9b0a943fa19cdfe27ffa72e36c908cb
MD5 1b8d12b5710479d73d53a6759124ceb5
BLAKE2b-256 615fa8734b1bc8b058e34f999687490b58c2100e927ebc9a2c03ab2b22235f25

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp37-cp37m-macosx_10_11_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp36-cp36m-win_amd64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp36-cp36m-win_amd64.whl
Algorithm Hash digest
SHA256 62ab05cf349f7bbf2d6a465c21860350c1234ae51040a3c1d1459e11babc6c2d
MD5 53a5b82af7088f8e2e834fb3cb2732ca
BLAKE2b-256 2e7026211b2605c5b0757e7834df842bf78785ea2bbb3cd1037920cfc6490cb7

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp36-cp36m-win_amd64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp36-cp36m-win32.whl.

File metadata

  • Download URL: stringzilla-3.12.5-cp36-cp36m-win32.whl
  • Upload date:
  • Size: 68.5 kB
  • Tags: CPython 3.6m, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for stringzilla-3.12.5-cp36-cp36m-win32.whl
Algorithm Hash digest
SHA256 38fe604342e2120f14ae0537624149f868c93d622e939d42ec03063c45a60295
MD5 0ce7b417aceda3978030e464562e38b2
BLAKE2b-256 8ff953472b0bbd385babfc8453c62811ed604be1a5fc0141cf44f87cd9b73358

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp36-cp36m-win32.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 4b0b76b4413b004eb9868271d51f2dabd8577f7677ec65c6f46d21944b638687
MD5 4c5362a1ec4066ee9cabdc2196902d59
BLAKE2b-256 1adeab03da54beb8d493208993087f37269b059e2600d885be5a4da477f261ab

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 cb50910035d1abd1899a23b8ac1fd66f872636abf74360e5826a22405548e006
MD5 9518d3141bcd27fde65ac8d1b96bd0b3
BLAKE2b-256 1baf207db210a3dfccc8370313e9ee5f947d120499fc59e6c60a71b9dc537220

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 ececc0715c2dd96e902a06f555dc6ec5b6a8f308ee088d5214bd4ea821cc378d
MD5 2dd882f28d3c40642b2aae0e5639eb3c
BLAKE2b-256 c22cde919037ecc1e6089634dd40a44c2fa91064e0529eec7729fdf1de2280c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 d659e30e896f95e7a49ae7e4f4729df70843d83d9a12f572c943e1e4ac21c1c8
MD5 9111146420444a6117749aea38dd6a33
BLAKE2b-256 d3e67c4f1f4667af7301e3dc1001ae49497ebaf8d0c76ab6483fed818cdf890b

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 147efbf20e5451d90c93a946fb7827f728ba50e7b9a1813c31e98d2548330519
MD5 34c7c6af6e248287d4e27d789b97e800
BLAKE2b-256 12acfb659fec0f6299a5d14731d33362a5cc9c9e58bca19f2bc4e6ea2b306acc

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_armv7l.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7014996fd1f16160a43f193ada51df0fc2dea5caa08822da88d68c1a0ddcd189
MD5 3ea2911eb6f322bd13901539dee894ad
BLAKE2b-256 fd8650e95ada37654a3cadaefafcf18d8dcf9c2d112e5030909bfb2816a6b9e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp36-cp36m-musllinux_1_2_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 83d38beeffe0435456235c35b6f80762a939c6618dc9985fc3291a39201fd2c2
MD5 325e16850d7f7290bef3f799b0140e2b
BLAKE2b-256 52deeef9791308702b160836412e4135c9d48bf10f0e9c3a1a65fa7ad9e60ba0

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp36-cp36m-manylinux_2_17_s390x.manylinux2014_s390x.manylinux_2_28_s390x.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 fe91680cf04e4414cddc62f82a52a3a3073db22ad6b1e7e3efac6184b8e4af1f
MD5 2936e83a53194bb5b464d7159533512c
BLAKE2b-256 755d924737a8dd29371b119a7feb9105bfdbf3be5d6615069c2b6bba0d0ef717

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp36-cp36m-manylinux_2_17_ppc64le.manylinux2014_ppc64le.manylinux_2_28_ppc64le.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 7a182c29ef8cd1dfd62977b3ccebd0aeea6e805a9844dfc0d2298685adcbd979
MD5 c586acf1b3bfccb159a9e2bd290ddc66
BLAKE2b-256 1f0caa1bd235e02866ad1358c37a57786610926556588e7316c1dd4288eefaee

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.manylinux_2_28_aarch64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2aa41e153bea6fb9587c7656afb7f536029522edb146d3f5a69d71f86524e7ed
MD5 af70bbf0afd3787886fa8eb485e170a8
BLAKE2b-256 b7e4afc4d58c37a60cbf32890b6fbacd94ab380068a5aae7c599edadafcefa51

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_28_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 9810d0a81e24e8e04cb53ef340f3290b5ad67c2df03b6ffd63621d9499180ff9
MD5 e3a3eaf66980184a9ff535b4053976ed
BLAKE2b-256 081b0c2dc0c06ec999c27304ede2150bbbf461cb130e3c639a20dcf273fd2da1

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file stringzilla-3.12.5-cp36-cp36m-macosx_10_11_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-3.12.5-cp36-cp36m-macosx_10_11_x86_64.whl
Algorithm Hash digest
SHA256 efc9885da73528dd202f361150ff12537e5cd426e5275c522f38337c68137472
MD5 05c6344161ae855f693a8f4c1187f628
BLAKE2b-256 f4fe5b94ca48d50dc4978e7e38b33134b154b0d12932bed1bbbf0005fa006c5e

See more details on using hashes here.

Provenance

The following attestation bundles were made for stringzilla-3.12.5-cp36-cp36m-macosx_10_11_x86_64.whl:

Publisher: release.yml on ashvardanian/StringZilla

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page