Skip to main content

Search, hash, sort, and process strings faster via SWAR and SIMD

Project description

StringZilla 🦖

StringZilla banner

Strings are the first fundamental data type every programming language implements in software rather than hardware — no CPU ships a dedicated "find substring" or "compute string hash" instruction. So most string-processing code still looks like for (i = 0; i < length; ++i) if (text[i] == 'x') … — a tangle of loops, branches, and per-character lookups, where the surrounding control flow is easily 10-100x more expensive than the character-level logic itself, whether the text is ASCII or UTF-8 encoded Unicode. Worse, chewing through one byte or codepoint at a time squanders the hardware: a modern CPU carries dozens of 16-64 byte architectural registers, and hundreds of physical ones to feed out-of-order execution. StringZilla reaches for those SIMD and SWAR instructions directly, offering one of the widest, fastest, and most portable collections of text-processing primitives anywhere.

StringZilla Python installs StringZilla Rust installs StringZilla code size

StringZilla is the GodZilla of string libraries, accelerating exact and fuzzy matching, hashing, edit distances, sorting, segmentation, and even random-string generation, with allocation-free lazily-evaluated iterators throughout.

  • It can be 3x faster than LibC, the C standard library, doing substring search on Arm.
  • It can be 10-70x faster than ICU for C and its C rewrite in UTF-8 handling, case folding, segmentation, and tokenization.
  • It can be 100x faster than NVIDIA's own libraries for on-GPU Levenshtein, NW, and SW edit distances.
  • It comes with built-in custom WebAssembly backend for sandboxed browser, DBMS, & LLM environments, custom RVV backend for RISC-V CPUs, PowerPC backend for IBM mainframes, LoongArch for Chinese domestic chips, and more!

Reach for it from your language of choice:

  • 🐂 C: Upgrade LibC's <string.h> to <stringzilla/stringzilla.h> in C 99
  • 🐉 C++: Upgrade STL's <string> to <stringzilla/stringzilla.hpp> in C++ 11
  • 🧮 CUDA: Process in-bulk with <stringzillas/stringzillas.cuh> in CUDA C++ 17
  • 🐍 Python: Upgrade your str to faster Str
  • 🦀 Rust: Use the StringZilla traits crate
  • 🦫 Go: Use the StringZilla cGo module
  • 🍎 Swift: Use the String+StringZilla extension
  • 🟨 JavaScript: Use the StringZilla library
  • 🐚 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 set up 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 string-processing functionality.
  • For students studying SIMD/SWAR applications to non-data-parallel operations.

Performance

C C++ Python StringZilla
Unicode case-folding, expanding characters like ßss
.casefold
x86: 0.4 · arm: 0.4 GB/s
sz.utf8_uncased_fold
x86: 1.3 · arm: 0.8 GB/s
Unicode uncased substring search
icu.StringSearch
x86: 0.02 · arm: 0.07 GB/s
utf8_uncased_find
x86: 3.0 · arm: 2.1 GB/s
find the first occurrence of a random word from text, ≅ 5 bytes long
strstr 1
x86: 7.4 · arm: 3.0 GB/s
.find
x86: 2.9 · arm: 4.1 GB/s
.find
x86: 1.1 · arm: 2.1 GB/s
sz_find
x86: 10.6 · arm: 10.9 GB/s
find the last occurrence of a random word from text, ≅ 5 bytes long
.rfind
x86: 0.5 · arm: 0.6 GB/s
.rfind
x86: 0.9 · arm: 2.7 GB/s
sz_rfind
x86: 10.8 · arm: 9.3 GB/s
split lines separated by \n or \r 2
strcspn 1
x86: 5.42 · arm: 1.4 GB/s
.find_first_of
x86: 0.59 · arm: 0.6 GB/s
re.finditer
x86: 0.06 · arm: 0.32 GB/s
sz_find_byteset
x86: 4.08 · arm: 4.3 GB/s
find the last occurrence of any of 6 whitespaces 2
.find_last_of
x86: 0.25 · arm: 0.6 GB/s
sz_rfind_byteset
x86: 0.43 · arm: 4.4 GB/s
Random string from a given alphabet, 20 bytes long 3
rand() % n
x86: 18.0 · arm: 169.0 MB/s
uniform_int_distribution
x86: 47.2 · arm: 201.0 MB/s
join(random.choices(x))
x86: 13.3 · arm: 17.0 MB/s
sz_fill_random
x86: 56.2 · arm: 678.0 MB/s
Mapping characters with lookup table transforms
std::transform
x86: 3.81 · arm: 3.0 GB/s
str.translate
x86: 260.0 · arm: 78.0 MB/s
sz_lookup
x86: 21.2 · arm: 7.9 GB/s
Get sorted order, ≅ 8 million English words 4
qsort_r
x86: 3.55 · arm: 4.48 s
std::sort
x86: 2.79 · arm: 3.50 s
numpy.argsort
x86: 7.58 · arm: 14.59 s
sz_sequence_argsort
x86: 1.91 · arm: 0.92 s
Levenshtein edit distance, text lines ≅ 100 bytes long
via NLTK 5 and CuDF
x86: 1,615,306 · arm: 1,349,980 · cuda: 6,532,411,354 CUPS
szs_levenshtein_distances_t
x86: 3,434,427,548 · arm: 1,605,340,403 · cuda: 93,662,026,653 CUPS
Needleman-Wunsch alignment scores, proteins ≅ 1 K amino acids long
via biopython 6
x86: 575,981,513 · arm: 436,350,732 CUPS
szs_needleman_wunsch_scores_t
x86: 452,629,942 · arm: 520,170,239 · cuda: 9,017,327,818 CUPS

Most StringZilla modules ship ready-to-run benchmarks for C, C++, Python, and more. Grab them from ./scripts, and see CONTRIBUTING.md, test/README.md, and bench/README.md for instructions. On CPUs that permit misaligned loads, even the 64-bit SWAR baseline outruns both libc and the STL. For wider head-to-heads against Rust and Python favorites, browse the StringWars repository. To inspect collision resistance and distribution shapes for our hashers, see HashEvals.

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 Arm numbers were refreshed on an AWS Graviton5 c9g instance (Neoverse-V3); the x86 numbers are from r7iz Intel Sapphire Rapids. Most modern Arm-based 64-bit CPUs will have similar relative speedups. Variance within x86 CPUs will be larger. For CUDA benchmarks, the Nvidia H100 GPUs were used. 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 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. 4 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. The current StringZilla solution can be at least 4x faster without loss of generality. 5 Most Python libraries for strings are also implemented in C. 6 Unlike the rest of BioPython, the alignment score computation is implemented in C.

Why StringZilla

StringZilla replaces a stack of specialized libraries with one portable dependency, and outpaces each on its own turf.

Alternative Scope It Covers StringZilla Edge
libc, via strstr/memmem/memcpy byte search and memory operations bidirectional search, hashing, sorting, and sets too, up to 3x faster on Arm
ICU and ICU4X Unicode case, segmentation, normalization stable C ABI, no hidden allocations, 10-70x faster on folding and segmentation
RapidFuzz and edit-distance libraries fuzzy matching and Levenshtein batched on CPU cores, and 100x faster than NVIDIA's libraries on GPUs
xxHash, aHash, and other fast hashers non-cryptographic hashing an AES-based hash on par or faster on single hashes, and far ahead with hash_multiseed for sketches and filters
std::string and std::sort general strings and sorting an SSO container, lazy allocation-free views, and allocator-routed sorting

Because StringZilla mirrors the familiar standard APIs, adoption is mostly a search-and-replace.

In Python:

Operation Standard StringZilla
Find a substring "...".find(x) sz.find("...", x)
Sort strings sorted(items) sz.Strs(items).sorted()
Split on a separator "...".split(sep) sz.Str("...").split(sep)
Case-fold for matching "...".casefold() sz.utf8_uncased_fold("...")
Streaming SHA-256 hashlib.sha256() sz.Sha256()

In C++:

Operation Standard StringZilla
Find a substring std::string::find sz::string::find
Sort a collection std::sort of indices sz::argsort
Hash map with string keys std::unordered_map<std::string, V> std::unordered_map<std::string, V, sz::hash, sz::equal_to>
Intersect two string sets std::set_intersection sz::try_intersect

Functionality

StringZilla is compatible with most modern CPUs, and provides a broad range of functionality. It's split into 2 layers:

  1. StringZilla: single-header C library and C++ wrapper for high-performance string operations.
  2. StringZillas: parallel CPU/GPU backends used for large-batch operations and accelerators.

Having a second C++/CUDA layer greatly simplifies the implementation of similarity scoring and fingerprinting functions, which would otherwise require too much error-prone boilerplate code in pure C. Both layers are designed to be extremely portable:

  • across both little-endian and big-endian architectures.
  • across 32-bit and 64-bit hardware architectures.
  • across operating systems and compilers.
  • across ASCII and UTF-8 encoded inputs.

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

Maturity C C++ Python Rust JS Swift Go
Substring Search 🌳
Character Set Search 🌳
Sorting & Sequence Operations 🌳
Set Intersection & Joins 🧐
Lazy Ranges, Compressed Arrays 🌳
One-Shot & Streaming Hashes 🌳
Cryptographic Hashes 🌳
Small String Class 🧐
Random String Generation 🌳
Unicode Case Folding 🧐
Uncased UTF-8 Search 🚧
TR29 Word Boundary Detection 🚧
TR29 Grapheme Segmentation 🚧
TR29 Sentence Segmentation 🚧
UAX14 Line-Break Detection 🚧
Unicode Normalization 🚧
Codepoint Counting & Indexing 🌳
Parallel Similarity Scoring 🌳
Parallel Rolling 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

Each binding has its own install command, import line, and dedicated guide, all collected in the per-language sections below. The batch and GPU engines ship separately, as stringzillas-cpus and stringzillas-cuda on PyPI and the cpus and cuda crate features; each binding's guide covers the details.

Python

pip install stringzilla · guide: python/README.md

import stringzilla as sz

text = sz.Str("the quick brown fox")
text.find("brown")          # 10
text.split()                # Strs(['the', 'quick', 'brown', 'fox'])
sz.hash("hello")            # fast 64-bit hash

The Python package upgrades str and bytes with SIMD search, sorting, hashing, UTF-8 segmentation, and Unicode case-folding, plus the batch-parallel stringzillas engines for edit distances and rolling fingerprints.

C and C++

Header-only, or pull it in with CMake FetchContent · guides: include/stringzilla/README.md and include/stringzillas/README.md

#include <stringzilla/stringzilla.h>
sz_find(haystack, h_length, "brown", 5); // pointer to the match, or NULL
#include <stringzilla/stringzilla.hpp>
namespace sz = ashvardanian::stringzilla;
sz::string_view("the quick brown fox").find("brown"); // 10

The header-only library covers search, hashing, sorting, comparison, set intersection, memory operations, and lazy UTF-8 segmentation; the bulk and GPU engines for edit distances, alignment scores, and fingerprints live in the companion stringzillas distribution.

Rust

cargo add stringzilla · guide: rust/README.md

use stringzilla::sz;

assert_eq!(sz::find("the quick brown fox", "brown"), Some(10));
let digest = sz::hash("hello"); // fast 64-bit hash

The crate adds SIMD search, sorting, hashing, and UTF-8 segmentation to any AsRef<[u8]>, with the optional stringzillas engines for batch edit distances and rolling fingerprints.

JavaScript

npm install stringzilla · guide: javascript/README.md

import sz from "stringzilla";

sz.find(Buffer.from("the quick brown fox"), Buffer.from("brown")); // => 10n
sz.hash(Buffer.from("hello"));                                     // 64-bit BigInt

The Node-API addon runs on Node, Bun, and Deno, exposing zero-copy search, hashing, SHA-256, and Unicode case-folding over Buffer objects.

Swift

Add the Swift Package Manager dependency · guide: swift/README.md

import StringZilla

let i = "the quick brown fox".findFirst(substring: "brown") // Index of "brown"
let h = "hello".hash()                                       // fast 64-bit hash

The Foundation-free package extends String with SIMD search, comparison, hashing, Unicode case-folding, normalization, and word and line segmentation, on Linux and embedded targets as well as Apple platforms.

Go

go get github.com/ashvardanian/stringzilla/golang · guide: golang/README.md

import sz "github.com/ashvardanian/stringzilla/golang"

sz.Index("the quick brown fox", "brown") // 10
sz.Hash("hello", 0)                      // fast 64-bit hash

The cgo module exposes byte-level search, counting, checksums, SHA-256, and UTF-8 case-folding to Go.

C#

dotnet add package StringZilla · guide: csharp/README.md

using StringZilla;

Sz.IndexOf("the quick brown fox"u8, "brown"u8); // 10
Sz.Hash("hello"u8);                             // fast 64-bit hash

Zero-copy over ReadOnlySpan<byte> (and Unity's NativeArray<byte>); net8.0, NativeAOT-friendly. Exposes search, hashing, SHA-256, UTF-8 segmentation, case-folding, normalization, sorting, and allocation-free splitting and iteration.

Java

Maven com.github.ashvardanian:stringzilla · guide: java/README.md

import com.stringzilla.StringZilla;

StringZilla.indexOf("the quick brown fox".getBytes(), "brown".getBytes());  // 10
StringZilla.hash("hello".getBytes());                                       // fast 64-bit hash

Pure Foreign Function & Memory API (JDK 22+), no JNI. Zero-copy over byte[] and MemorySegment — including Lucene BytesRef and Spark UTF8String backing memory. Lazy Iterable/Stream splitting and iteration, with zero-allocation cursors as the escape hatch.

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. Where vectorization stops being effective, parallelism takes over with the new layered cake architecture:

  • StringZilla C library w/out dependencies
  • StringZillas parallel extensions:
    • Parallel C++ algorithms built with ForkUnion
    • Parallel CUDA algorithms for Nvidia GPUs
    • Parallel ROCm algorithms for AMD GPUs 🔜

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 backends compare characters at multiple strategically chosen offsets within the needle to reduce degeneracy.

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.

For 2-byte needles, see sz_find_2byte_serial_ in include/stringzilla/find.h:

https://github.com/ashvardanian/StringZilla/blob/e1966de91600298d3c5cf4fe7be40d434f0f405e/include/stringzilla/find.h#L422-L463

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.

For mid-length needles (≤256 bytes), see sz_find_horspool_upto_256bytes_serial_ in include/stringzilla/find.h:

https://github.com/ashvardanian/StringZilla/blob/e1966de91600298d3c5cf4fe7be40d434f0f405e/include/stringzilla/find.h#L620-L667

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.

The offset selection heuristic is implemented in sz_locate_needle_anomalies_ in include/stringzilla/find.h:

https://github.com/ashvardanian/StringZilla/blob/e1966de91600298d3c5cf4fe7be40d434f0f405e/include/stringzilla/find.h#L244-L305

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.

Exact Multiple Substring Search

Few algorithms for multiple substring search are known. Most are based on the Aho-Corasick automaton, which is a generalization of the KMP algorithm. The naive implementation, however:

  • Allocates disjoint memory for each Trie node and Automaton state.
  • Requires a lot of pointer chasing, limiting speculative execution.
  • Has a lot of branches and conditional moves, which are hard to predict.
  • Matches text a character at a time, which is slow on modern CPUs.

There are several ways to improve the original algorithm. One is to use sparse DFA representation, which is more cache-friendly, but would require extra processing to navigate state transitions.

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 focuses on a different approach, extensively used in Unum's internal combinatorial optimization libraries. It 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. StringZilla evaluates diagonals instead of rows, exploiting the fact that all cells within a diagonal are independent, and can be computed in parallel. We'll store 3 diagonals instead of the 2 rows, and each consecutive diagonal will be computed from the previous two. Substitution costs will come from the sooner diagonal, while insertion and deletion costs will come from the later diagonal.

Row-by-Row Algorithm
Computing row 4:
    ∅  A  B  C  D  E
 ∅  0  1  2  3  4  5
 P  1  ░  ░  ░  ░  ░
 Q  2  ■  ■  ■  ■  ■
 R  3  ■  ■  □  →  .
 S  4  .  .  .  .  .
 T  5  .  .  .  .  .
Anti-Diagonal Algorithm
Computing diagonal 5:
    ∅  A  B  C  D  E
 ∅  0  1  2  3  4  5
 P  1  ░  ░  ■  ■  □
 Q  2  ░  ■  ■  □  ↘
 R  3  ■  ■  □  ↘  .
 S  4  ■  □  ↘  .  .
 T  5  □  ↘  .  .  .
Legend:
0,1,2,3... = initialization constants    = cells processed and forgotten    = stored cells    = computing in parallel    → ↘ = movement direction    . = cells to compute later

This results in much better vectorization for intra-core parallelism and potentially multi-core evaluation of a single request. Moreover, it's easy to generalize to weighted edit-distances, where the cost of a substitution between two characters may not be the same for all pairs, often used in bioinformatics.

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

Needleman-Wunsch and Smith-Waterman Scores 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. In the general case the serial algorithm works for arbitrary substitution costs for each of 256×256 possible character pairs. That lookup table, however, is too large to fit into CPU registers, so StringZilla ships a 32×32 substitution-matrix design, the error_costs_32x32_t type in include/stringzillas/similarities.hpp, which fits into 1 KB with single-byte "error costs" and stays resident across the diagonal sweep. That said, most BLOSUM and PAM substitution matrices only contain 4-bit values, so they can be packed even further.

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, performing 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.

Hashing

StringZilla implements a high-performance 64-bit hash function inspired by the "AquaHash", "aHash", and "GxHash" design and optimized for modern CPU architectures. It passes the rigorous SMHasher test suite, including the --extra flag with no collisions.

The core algorithm operates on a dual state that runs two independent mixers over the same bytes and folds them together at the end:

  • AES State: Initialized with the seed XOR-ed against π constants and advanced with one AES encryption round per block, providing the strong avalanche behavior.
  • Sum State: Initialized from a second slice of the π constants and advanced as an additive byte sum under a fixed permutation, cheap to compute and complementary to the AES mixing.

Because the AES round is the backbone, the per-ISA backends lean on each platform's cryptographic instructions rather than emulating them: AES-NI and VAES on x86, SHA-NI on Goldmont, NEON-AES, NEON-SHA, and SVE2-AES on Arm, and RVV-crypto on RISC-V, in the include/stringzilla/hash/{neonaes,neonsha,sve2aes,rvvcrypto}.h files. To keep the streaming path off the stack, the incremental construction uses an in-register streaming-state merge: each incoming run is slid into a resident register with a masked load and a blend, so partial blocks never spill to memory.

For strings ≤64 bytes, a minimal state processes data in 16-byte blocks. Longer strings employ a 4× wider state (512 bits) that processes 64-byte chunks, maximizing throughput on modern superscalar CPUs. The algorithm can be expressed in pseudocode as:

function sz_hash(text: u8[], length: usize, seed: u64) -> u64:
    # 1024 bits worth of π constants
    pi: u64[16] = [
        0x243F6A8885A308D3, 0x13198A2E03707344, 0xA4093822299F31D0, 0x082EFA98EC4E6C89,
        0x452821E638D01377, 0xBE5466CF34E90C6C, 0xC0AC29B7C97C50DD, 0x3F84D5B5B5470917,
        0x9216D5D98979FB1B, 0xD1310BA698DFB5AC, 0x2FFD72DBD01ADFB7, 0xB8E1AFED6A267E96,
        0xBA7C9045F12C7F99, 0x24A19947B3916CF7, 0x0801F2E2858EFC16, 0x636920D871574E69]

    # Permutation order for the sum state
    shuffle_pattern: u8[16] = [
        0x04, 0x0b, 0x09, 0x06, 0x08, 0x0d, 0x0f, 0x05,
        0x0e, 0x03, 0x01, 0x0c, 0x00, 0x07, 0x0a, 0x02]

    # Initialize key and states
    keys_u64s: u64[2] = [seed, seed]
    aes_u64s: u64[2] = [seed ⊕ pi[0], seed ⊕ pi[1]]
    sum_u64s: u64[2] = [seed ⊕ pi[8], seed ⊕ pi[9]]

    if length ≤ 64:
        # Small input: process 1-4 zero-padded blocks of 16 bytes each
        blocks_u8s: u8[16][] = split_into_blocks(text, length, 16)
        for each block_u8s: u8[16] in blocks_u8s:
            aes_u64s = AESENC(aes_u64s, block_u8s)
            sum_u64s = SHUFFLE(sum_u64s, shuffle_pattern) + block_u8s
    else:
        # Large input: use 4× wider 512-bits states
        aes_u64s: u64[8] = [
            seed ⊕ pi[0], seed ⊕ pi[1], seed ⊕ pi[2], seed ⊕ pi[3],
            seed ⊕ pi[4], seed ⊕ pi[5], seed ⊕ pi[6], seed ⊕ pi[7]]
        sum_u64s: u64[8] = [
            seed ⊕ pi[8], seed ⊕ pi[9], seed ⊕ pi[10], seed ⊕ pi[11],
            seed ⊕ pi[12], seed ⊕ pi[13], seed ⊕ pi[14], seed ⊕ pi[15]]

        # Process 64-byte chunks (4×16-byte blocks)
        for each chunk_u8s: u8[64] in text:
            blocks_u8s: u8[16][4] = split_chunk_into_4_blocks(chunk_u8s)
            for i in 0..3:
                offset: usize = i * 2  # Each lane stores two u64s
                aes_u64s[offset:offset+1] = AESENC(aes_u64s[offset:offset+1], blocks_u8s[i])
                sum_u64s[offset:offset+1] = SHUFFLE(sum_u64s[offset:offset+1], shuffle_pattern) + blocks_u8s[i]

        # Fold 8×u64 state back to 2×u64 for finalization
        aes_u64s: u64[2] = fold_to_2u64(aes_u64s)
        sum_u64s: u64[2] = fold_to_2u64(sum_u64s)

    # Finalization: mix length into key
    key_with_length: u64[2] = [keys_u64s[0] + length, keys_u64s[1]]

    # Multiple AES rounds for SMHasher compliance
    mixed_u64s: u64[2] = AESENC(sum_u64s, aes_u64s)
    result_u64s: u64[2] = AESENC(AESENC(mixed_u64s, key_with_length), mixed_u64s)

    return result_u64s[0]  # Extract low 64 bits

This allows us to balance several design trade-offs. First, it allows us to achieve a high port-level parallelism. Looking at AVX-512 capable CPUs and their ZMM instructions, on each cycle, we'll have at least 2 ports busy when dealing with long strings:

  • VAESENC: 5 cycles on port 0 on Intel Ice Lake, 4 cycles on ports 0/1 on AMD Zen4.
  • VPSHUFB_Z: 3 cycles on port 5 on Intel Ice Lake, 2 cycles on ports 1/2 on AMD Zen4.
  • VPADDQ: 1 cycle on ports 0/5 on Intel Ice Lake, 1 cycle on ports 0/1/2/3 on AMD Zen4.

When dealing with smaller strings, we design our approach to avoid large registers and maintain the CPU at the same energy state, thereby avoiding downclocking and expensive power-state transitions.

Unlike some AES-accelerated alternatives, the length of the input is not mixed into the AES block at the start to allow incremental construction, when the final length is not known in advance. Also, unlike some alternatives, with "masked" AVX-512 and "predicated" SVE loads, we avoid expensive block-shuffling procedures on non-divisible-by-16 lengths.

§ Reading materials. Stress-testing hash functions for avalance behaviour, collision bias, and distribution.

SHA-256 Checksums

In addition to the fast AES-based hash, StringZilla implements hardware-accelerated SHA-256 cryptographic checksums. The implementation follows the FIPS 180-4 specification and provides multiple backends.

Random Generation

StringZilla implements a fast Pseudorandom Number Generator inspired by the "AES-CTR-128" algorithm, reusing the same AES primitives as the hash function. Unlike "NIST SP 800-90A" which uses multiple AES rounds, StringZilla uses only one round of AES mixing for performance while maintaining reproducible output across platforms. The generator operates in counter mode with AESENC(nonce + lane_index, nonce ⊕ pi_constants), rotating through the first 512 bits of π for each 16-byte block. The only state required to reproduce an output is a 64-bit nonce, which is much cheaper than a Mersenne Twister.

Sorting

For lexicographic sorting of string collections, StringZilla exports pointer-sized n‑grams ("pgrams") into a contiguous buffer to improve locality, then recursively QuickSorts those pgrams with a 3‑way partition and dives into equal pgrams to compare deeper characters. Very small inputs fall back to insertion sort.

  • Average time complexity: O(n log n)
  • Worst-case time complexity: quadratic (due to QuickSort), mitigated in practice by 3‑way partitioning and the n‑gram staging

Unicode 17, UTF-8, and Wide Characters

Most StringZilla operations are byte-level, so they work well with ASCII and UTF-8 content out of the box. In some cases, like edit-distance computation, the result of byte-level evaluation and character-level evaluation may differ.

  • szs_levenshtein_distances_utf8("αβγδ", "αγδ") == 1 — one unicode symbol.
  • szs_levenshtein_distances("αβγδ", "αγδ") == 2 — one unicode symbol is two bytes long.

Java, JavaScript, Python 2, C#, and Objective-C, however, use wide characters (wchar) - two byte long codes, instead of the more reasonable fixed-length UTF-32 or variable-length UTF-8. This leads to all kinds of offset-counting issues when facing four-byte long Unicode characters. StringZilla uses proper 32-bit "runes" to represent unpacked Unicode codepoints, ensuring correct results in all operations. Moreover, it implements the Unicode 17.0 standard, being practically the only library besides ICU and PCRE2 to do so, but with order(s) of magnitude better performance.

Case Folding and Uncased Search

StringZilla provides Unicode-aware uncased substring search that handles the full complexity of Unicode case folding. This includes multi-character expansions:

Character Codepoint UTF-8 Bytes Case-Folds To Result Bytes
ß U+00DF C3 9F ss 73 73
U+FB03 EF AC 83 ffi 66 66 69
İ U+0130 C4 B0 i + ◌̇ 69 CC 87

The search returns byte offsets and lengths in the original haystack, correctly handling length differences. For example, searching for "STRASSE" (7 bytes) in "Straße" (7 bytes: 53 74 72 61 C3 9F 65) succeeds because both case-fold to "strasse".

Note that Turkish İ and ASCII I are distinct: İstanbul case-folds to i̇stanbul (with combining dot), while ISTANBUL case-folds to istanbul (without). They will not match each other — this is correct Unicode behavior for Turkish locale handling.

For wide-character environments (Java, JavaScript, Python 2, C#), consider transcoding with simdutf.

UTF-8 Decoding and Unicode Segmentation

Codepoint decoding walks the input in register-wide chunks, classifying each lead byte by its continuation-byte count through a register-resident lookup table rather than branching byte by byte. It runs under a fill-and-drain contract: a decode-once step fills a buffer of runes, and a separate drain step emits them, which keeps the hot loop tight and lets callers consume runes at their own pace. Ill-formed input is handled without derailing the stream, re-syncing on the maximal-subpart rule and substituting exactly one U+FFFD before continuing. The decoder lives in include/stringzilla/utf8_runes.h.

UAX-29 word, grapheme, and sentence boundaries, together with UAX-14 line-break opportunities, are found in a single pass. Each codepoint is classified against register-resident property tables and the boundary rules are applied directly, so combining marks, emoji zero-width-joiner sequences, and regional-indicator flags are all handled without a second traversal. The segmenters live in the utf8_wordbreaks*, utf8_graphemes*, utf8_sentences*, and utf8_linebreaks* files.

Unicode Normalization and Case Folding

Normalization implements the UAX-15 NFC, NFD, NFKC, and NFKD forms through canonical and compatibility decomposition, canonical-combining-class reordering, and recomposition. Quick-check flags short-circuit the work, so text that is already in the requested form is passed through without the expensive decomposition and reordering passes. The normalizers live in the utf8_norm* files.

Case folding uses register-resident lookup tables for the common single-codepoint folds and dedicated expansion paths for the multi-byte ones, such as ß folding to ss and the ligature folding to ffi. Uncased search folds on the fly, so the haystack is never pre-folded into a second buffer; the matcher tracks the byte-length mismatch whenever a folded form differs in length from its source, returning offsets into the original text. The folding paths live in the utf8_uncased* files.

Set Intersection

StringZilla intersects two deduplicated string collections through a power-of-two open-addressing hash table. The hash is seeded for adversarial resistance and the probe sequence runs under a bounded collision budget, so the intersection completes in linear time and space rather than degrading on crafted inputs. The implementation lives in include/stringzilla/intersect.h.

Rolling Fingerprints and MinHash

For near-duplicate detection and multi-pattern search at scale, StringZilla slides multiple Rabin-Karp rolling-hash windows of different widths over each document at once. Each window tracks its running minimum to build MinHash sketches, and the same passes feed Count-Min-Sketch counters, so a single traversal yields both the similarity signatures and the frequency estimates. The implementation lives in the include/stringzillas/fingerprints* files.

GPU Edit Distances

On the GPU, short pairs are scored entirely in registers, one thread per pair, holding the anti-diagonal wavefront of the dynamic-programming matrix in registers instead of shared memory. For short sequences this is several times faster than the classic shared-memory anti-diagonal kernel, which is dominated by shared-memory traffic at small sizes. Hopper DPX instructions accelerate the min-plus recurrence, and a warp-per-pair path covers older GPUs that lack them. The kernels live in include/stringzillas/similarities/hopper.cuh and include/stringzillas/similarities/kepler.cuh.

Dynamic Dispatch

Due to the high-level of fragmentation of SIMD support in different CPUs, StringZilla names its backends after select CPU generations and instruction-set extensions. The full v5 set spans the serial SWAR fallback, x86 (Westmere, Goldmont, Haswell, Skylake, Ice Lake), Arm (NEON, NEON-AES, NEON-SHA, SVE, SVE2, SVE2-AES), RISC-V (RVV, RVV-crypto), LoongArch (LASX), IBM Power (PowerVSX), and WebAssembly (v128 and relaxed v128). You can query supported backends and use them manually. Use it to guarantee constant performance, or to explore how different algorithms scale on your hardware.

sz_find(text, length, pattern, 3);          // Auto-dispatch
sz_find_westmere(text, length, pattern, 3);  // Intel Westmere+ SSE4.2
sz_find_haswell(text, length, pattern, 3);  // Intel Haswell+ AVX2
sz_find_skylake(text, length, pattern, 3);  // Intel Skylake+ AVX-512
sz_find_neon(text, length, pattern, 3);     // Arm NEON 128-bit
sz_find_sve(text, length, pattern, 3);      // Arm SVE 128/256/512/1024/2048-bit

StringZilla automatically picks the most advanced backend for the given CPU. Similarly, in Python, you can log the auto-detected capabilities:

python -c "import stringzilla; print(stringzilla.__capabilities__)"         # e.g. ('serial', 'westmere', 'goldmont', 'haswell', 'skylake', 'icelake')
python -c "import stringzilla; print(stringzilla.__capabilities_str__)"     # e.g. "serial, westmere, goldmont, haswell, skylake, icelake"
# Other targets report their own names: Arm "neon, neonaes, neonsha, sve, sve2, sve2aes",
# WebAssembly "v128, v128relaxed", RISC-V "rvv", LoongArch "lasx", IBM Power "powervsx".

You can also explicitly set the backend to use, or scope the backend to a specific function.

import stringzilla as sz
sz.reset_capabilities(('serial',))          # Force SWAR backend
sz.reset_capabilities(('haswell',))         # Force AVX2 backend
sz.reset_capabilities(('neon',))            # Force NEON backend
sz.reset_capabilities(sz.__capabilities__)  # Reset to auto-dispatch

Contributing 👾

Please check out the contributing guide for more details on how to set up 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 UTF-8, UTF-16, and UTF-32 LE and BE.
  • hyperscan - regular expressions with SIMD acceleration.
  • pyahocorasick - Aho-Corasick algorithm in Python.
  • rapidfuzz - fast string matching in C++ and Python.
  • memchr - fast string search in Rust.

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

Citation

If StringZilla helps your research or product, please cite it:

@software{Vardanian_StringZilla,
  author = {Vardanian, Ash},
  title = {{StringZilla: Fast SIMD, SWAR, and GPGPU String Processing}},
  doi = {10.5281/zenodo.21472333},
  url = {https://github.com/ashvardanian/StringZilla},
  license = {Apache-2.0}
}

A machine-readable CITATION.cff is provided at the repository root.

License 📜

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

Release history Release notifications | RSS feed

Download files

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

Source Distribution

stringzilla-5.0.1.tar.gz (1.7 MB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

stringzilla-5.0.1-cp314-cp314-win_arm64.whl (404.6 kB view details)

Uploaded CPython 3.14Windows ARM64

stringzilla-5.0.1-cp314-cp314-win_amd64.whl (474.9 kB view details)

Uploaded CPython 3.14Windows x86-64

stringzilla-5.0.1-cp314-cp314-win32.whl (295.3 kB view details)

Uploaded CPython 3.14Windows x86

stringzilla-5.0.1-cp314-cp314-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

stringzilla-5.0.1-cp314-cp314-musllinux_1_2_s390x.whl (823.5 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ s390x

stringzilla-5.0.1-cp314-cp314-musllinux_1_2_riscv64.whl (790.6 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ riscv64

stringzilla-5.0.1-cp314-cp314-musllinux_1_2_ppc64le.whl (983.3 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ppc64le

stringzilla-5.0.1-cp314-cp314-musllinux_1_2_i686.whl (800.3 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ i686

stringzilla-5.0.1-cp314-cp314-musllinux_1_2_armv7l.whl (792.0 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARMv7l

stringzilla-5.0.1-cp314-cp314-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

stringzilla-5.0.1-cp314-cp314-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl (815.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ riscv64manylinux: glibc 2.39+ riscv64

stringzilla-5.0.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

stringzilla-5.0.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (833.8 kB view details)

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

stringzilla-5.0.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (989.1 kB view details)

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

stringzilla-5.0.1-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (991.0 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

stringzilla-5.0.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

stringzilla-5.0.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (797.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ i686manylinux: glibc 2.5+ i686

stringzilla-5.0.1-cp314-cp314-macosx_11_0_arm64.whl (385.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

stringzilla-5.0.1-cp314-cp314-macosx_10_15_x86_64.whl (398.2 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

stringzilla-5.0.1-cp313-cp313-win_arm64.whl (388.1 kB view details)

Uploaded CPython 3.13Windows ARM64

stringzilla-5.0.1-cp313-cp313-win_amd64.whl (459.1 kB view details)

Uploaded CPython 3.13Windows x86-64

stringzilla-5.0.1-cp313-cp313-win32.whl (285.7 kB view details)

Uploaded CPython 3.13Windows x86

stringzilla-5.0.1-cp313-cp313-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

stringzilla-5.0.1-cp313-cp313-musllinux_1_2_s390x.whl (824.4 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ s390x

stringzilla-5.0.1-cp313-cp313-musllinux_1_2_riscv64.whl (790.4 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ riscv64

stringzilla-5.0.1-cp313-cp313-musllinux_1_2_ppc64le.whl (983.1 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ppc64le

stringzilla-5.0.1-cp313-cp313-musllinux_1_2_i686.whl (800.6 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

stringzilla-5.0.1-cp313-cp313-musllinux_1_2_armv7l.whl (793.5 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

stringzilla-5.0.1-cp313-cp313-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

stringzilla-5.0.1-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl (815.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ riscv64manylinux: glibc 2.39+ riscv64

stringzilla-5.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

stringzilla-5.0.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (834.3 kB view details)

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

stringzilla-5.0.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (988.9 kB view details)

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

stringzilla-5.0.1-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (991.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

stringzilla-5.0.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

stringzilla-5.0.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (797.4 kB view details)

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

stringzilla-5.0.1-cp313-cp313-macosx_11_0_arm64.whl (384.9 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

stringzilla-5.0.1-cp313-cp313-macosx_10_13_x86_64.whl (398.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

stringzilla-5.0.1-cp312-cp312-win_arm64.whl (388.1 kB view details)

Uploaded CPython 3.12Windows ARM64

stringzilla-5.0.1-cp312-cp312-win_amd64.whl (459.1 kB view details)

Uploaded CPython 3.12Windows x86-64

stringzilla-5.0.1-cp312-cp312-win32.whl (285.7 kB view details)

Uploaded CPython 3.12Windows x86

stringzilla-5.0.1-cp312-cp312-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

stringzilla-5.0.1-cp312-cp312-musllinux_1_2_s390x.whl (824.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ s390x

stringzilla-5.0.1-cp312-cp312-musllinux_1_2_riscv64.whl (790.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ riscv64

stringzilla-5.0.1-cp312-cp312-musllinux_1_2_ppc64le.whl (983.2 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ppc64le

stringzilla-5.0.1-cp312-cp312-musllinux_1_2_i686.whl (800.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

stringzilla-5.0.1-cp312-cp312-musllinux_1_2_armv7l.whl (793.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

stringzilla-5.0.1-cp312-cp312-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

stringzilla-5.0.1-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl (815.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ riscv64manylinux: glibc 2.39+ riscv64

stringzilla-5.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

stringzilla-5.0.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (834.2 kB view details)

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

stringzilla-5.0.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (988.9 kB view details)

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

stringzilla-5.0.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (992.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

stringzilla-5.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

stringzilla-5.0.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (797.3 kB view details)

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

stringzilla-5.0.1-cp312-cp312-macosx_11_0_arm64.whl (384.9 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

stringzilla-5.0.1-cp312-cp312-macosx_10_13_x86_64.whl (398.0 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

stringzilla-5.0.1-cp311-cp311-win_arm64.whl (387.9 kB view details)

Uploaded CPython 3.11Windows ARM64

stringzilla-5.0.1-cp311-cp311-win_amd64.whl (458.7 kB view details)

Uploaded CPython 3.11Windows x86-64

stringzilla-5.0.1-cp311-cp311-win32.whl (285.2 kB view details)

Uploaded CPython 3.11Windows x86

stringzilla-5.0.1-cp311-cp311-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

stringzilla-5.0.1-cp311-cp311-musllinux_1_2_s390x.whl (822.1 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ s390x

stringzilla-5.0.1-cp311-cp311-musllinux_1_2_riscv64.whl (791.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ riscv64

stringzilla-5.0.1-cp311-cp311-musllinux_1_2_ppc64le.whl (982.2 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ppc64le

stringzilla-5.0.1-cp311-cp311-musllinux_1_2_i686.whl (799.6 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

stringzilla-5.0.1-cp311-cp311-musllinux_1_2_armv7l.whl (791.0 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARMv7l

stringzilla-5.0.1-cp311-cp311-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

stringzilla-5.0.1-cp311-cp311-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl (816.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.34+ riscv64manylinux: glibc 2.39+ riscv64

stringzilla-5.0.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

stringzilla-5.0.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (832.6 kB view details)

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

stringzilla-5.0.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (988.2 kB view details)

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

stringzilla-5.0.1-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (986.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

stringzilla-5.0.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

stringzilla-5.0.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (796.9 kB view details)

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

stringzilla-5.0.1-cp311-cp311-macosx_11_0_arm64.whl (384.6 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

stringzilla-5.0.1-cp311-cp311-macosx_10_13_x86_64.whl (397.5 kB view details)

Uploaded CPython 3.11macOS 10.13+ x86-64

stringzilla-5.0.1-cp310-cp310-win_amd64.whl (458.8 kB view details)

Uploaded CPython 3.10Windows x86-64

stringzilla-5.0.1-cp310-cp310-win32.whl (285.2 kB view details)

Uploaded CPython 3.10Windows x86

stringzilla-5.0.1-cp310-cp310-musllinux_1_2_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

stringzilla-5.0.1-cp310-cp310-musllinux_1_2_s390x.whl (813.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ s390x

stringzilla-5.0.1-cp310-cp310-musllinux_1_2_riscv64.whl (785.1 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ riscv64

stringzilla-5.0.1-cp310-cp310-musllinux_1_2_ppc64le.whl (973.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ppc64le

stringzilla-5.0.1-cp310-cp310-musllinux_1_2_i686.whl (792.1 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

stringzilla-5.0.1-cp310-cp310-musllinux_1_2_armv7l.whl (783.7 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARMv7l

stringzilla-5.0.1-cp310-cp310-musllinux_1_2_aarch64.whl (1.5 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

stringzilla-5.0.1-cp310-cp310-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl (809.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.34+ riscv64manylinux: glibc 2.39+ riscv64

stringzilla-5.0.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (1.9 MB view details)

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

stringzilla-5.0.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (825.0 kB view details)

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

stringzilla-5.0.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (981.0 kB view details)

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

stringzilla-5.0.1-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (978.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARMv7lmanylinux: glibc 2.31+ ARMv7l

stringzilla-5.0.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (1.6 MB view details)

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

stringzilla-5.0.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (790.3 kB view details)

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

stringzilla-5.0.1-cp310-cp310-macosx_11_0_arm64.whl (384.6 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

stringzilla-5.0.1-cp310-cp310-macosx_10_13_x86_64.whl (397.5 kB view details)

Uploaded CPython 3.10macOS 10.13+ x86-64

File details

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

File metadata

  • Download URL: stringzilla-5.0.1.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for stringzilla-5.0.1.tar.gz
Algorithm Hash digest
SHA256 37806372f86aaf3f90c814687b1bb6bb393bf9a73e2353f824bc6a745c8bd062
MD5 86ba59aa3c76ce45d38e0d8d9d74077c
BLAKE2b-256 64fb590af773e5cce4116e69dfacaf4e073981bba785e6813a5f766c72007ad5

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-win_arm64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 5d09f7528257f2ef6a6dda95558c29453bfc6e606e1420d9d63f7aeecdfd13a1
MD5 acd00ef5c8c50a9e88e5dc821be85277
BLAKE2b-256 30ab9e11d09c2578f4ffbb323d2829126950132d4aa9889f5822c69dfc1ebf29

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: stringzilla-5.0.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 474.9 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 6e2c7c43a2f6ac3a352ef53703ebd2de66a47b6b585f1a0d69851e0eda9d553c
MD5 8ae874621ca59d11ac15ebcb6aa98236
BLAKE2b-256 eaf27ede4738dc42c7b54cac2096fb74d035271f02a3baa73eae78f8c70f642d

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-win32.whl.

File metadata

  • Download URL: stringzilla-5.0.1-cp314-cp314-win32.whl
  • Upload date:
  • Size: 295.3 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 2eab40e4de76aeef52243ae8192b0ca9d16f66977f330350cda62b93a0f16408
MD5 4a9c9047b562a2b337190f0b2570e5f8
BLAKE2b-256 467d5a6bb2ce61682eb8f6456e331770e1eaa638f9456a895a29f0792c5b6b18

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dc0dbe18f50a298df6a72ca078d15fc072e03d790c7a4747393d4c52e9b9a31f
MD5 f39b8c1bfed8771df5ec3ce2dbcd7760
BLAKE2b-256 66e855e70f835434a2d817d27b3203bb8477d5ccfea6926e9a1b562771089222

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-musllinux_1_2_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 b810ac7ba6e9d8a653140cf9a85156cb12b36cd367ed0f09d507f9fb603109b6
MD5 171058c6f9c259edc850d594d1cd4044
BLAKE2b-256 681a3ea24596a27772a9ce3b3de666808356ba45cceeb583c713a51a4726d3b8

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-musllinux_1_2_riscv64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 efbd52e5a7fa9c63902c3d46040117f0677547161a084bd393a9c4a2924ba3a8
MD5 2e4653cdf60abd484675af92168d66da
BLAKE2b-256 ce6827b86f6d6e995d7958b995fa19a33533463f70347da18ca0ff8076bad6f6

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-musllinux_1_2_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 16feec9ab514388a470c1cc5f4d5472ed0c2d090459c4c6d53643aeecc2ca974
MD5 ae49c31ecfc93f8dffe674e2a9b06ac1
BLAKE2b-256 a5f76ac2709f016bfee1854a0726f00eb7c6219cc89bf6f2660b59a24f003a73

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-musllinux_1_2_i686.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 b1b5a1100f46dce25a83d7adc37367d683d068f49aa08303cd093d2ea25f25e4
MD5 d98f3132a7b5e47f8e8d5bb08bfb8103
BLAKE2b-256 7f9afa2be3383b37b50fe8585d7573fafcbd9fbc0629a54fda55b5a3c686610d

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-musllinux_1_2_armv7l.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 504a3d66bd4bcd8ffcbc87937f94d8769b56767b08f8bcbc757b547c3d686312
MD5 0bb0b43f2fc75fa8d42a5c85c99992c3
BLAKE2b-256 bcd6897be42d2e3b215ba2b7228832c33dbe9dcc60eb84cbb64fe750c36a3e9b

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 02c4a9cbbca142ed46021f82105ba1947bc2814a5140de2046d796d87779a48e
MD5 819a99e81797e3052b49c85069a4e3a0
BLAKE2b-256 47857d338830d4cdeadd5d37c96de0f9927be41880104e30c5c5d28d58af7868

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 f251be7d69033c56c0f4fbd7f512bfaa8fe619b69e397d9103bf9d6aec87f78a
MD5 ab2f5d1aec6959f49510321a524bd60b
BLAKE2b-256 0625e0610cb3fefc40f809331fc9117cde6e9aa1117303b160d6f05354a52d04

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b0a32952631926fbd2174cc3c8675d7a8c5decd33a4a23c252723d1499050efd
MD5 5f38d00bdc9811a4aad7f683e1bd5d21
BLAKE2b-256 84a8921c0f6f03bf782c04440ac80fe22f1b8fb04157bf4a050fd4b1477d0a13

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 3b364f82f2bb60a934d5484d6a6347e556ef7f048e7a8f0652cc242fbf163a58
MD5 f2c96c224a76351cbb801b395876e26c
BLAKE2b-256 6a0532f7aa23b55c3780415d8213fad9710c5bcc84b40447c0e24949e072850a

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 62146b442fe5fb4a29ea79c0589de58f868f9568b9e5f7761e8c9faf24818c92
MD5 5b3b739a3d6a4280b5731a3b14a3e1b3
BLAKE2b-256 4e99258d3f8d7dde985bcff3c9bca1b02c77bed3420cdb2e54be2713d66a53e6

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 ae0373adda435ff88c9d02637dac04bf035439d104054fce9019e05cd1c820bb
MD5 6f99963f5ecebad59b62e6781f704e74
BLAKE2b-256 4e45ea8c1a16c3f23d9ef9bb79fed2ec6a67d9a0bb1ee04d98c6f8ea753710ba

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bd5c1c839177ab316e52a9e4e8ef9a029d11e8532f64277202efaac1c52ffc56
MD5 c203b4d965473eacd1aca37577322a35
BLAKE2b-256 68bfe700b08f865f91941644f992bb2e8e42acefe9746af96cddde30b523a21d

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 45bd422a556afb33e2f73ce9271161985fae12fb37e06b8a9aeb32edb1b3c64d
MD5 0d604800d4573a42a99d3f0aa87c344f
BLAKE2b-256 2e45b07a9800a3b0278b3291e4c0be715ea47343482fd6cc1f874ff5f7680109

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3d4037add81f6084a1ae4d694138ff8aaf5d36a5ba2d2a9c039ba50c1ddf54d1
MD5 07709fbc401547101064a773fb444d50
BLAKE2b-256 79d55f02ef67ecc94dbae2d01ec6b0abbd21e07166164414569e0b324ef7cd8e

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 b546c04013674bc5b0ef19da5d1645b1e1e49e2a92bf454429a6e371e8bb04af
MD5 62407584577fb09cbd09f4b148a02a26
BLAKE2b-256 4bc2d11981e1d0072733cfb782e5cf6494a631d8099a801a3b56a2d73618e116

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 795f3fcdb80e01ba222f2330f17e05c57006afc00313aa2bae06965d34902654
MD5 d14c1aa1e8be4f913217aa8c7a2eca69
BLAKE2b-256 af9e6d00d7ac1906de94008adedfc2ba4218086ed6bcda4a2a807fe532196a08

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 459.1 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 83d696f896ff44d0b7effb39fc83346cd6cd594164d1917e8a48832921defe62
MD5 250fd63a1eddd5d65c2a4f30d9fc538f
BLAKE2b-256 d8d884bf426f7655b6c4312f5d72910a71e2c06ad85a73e0c327b9bd1755c7cd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.1-cp313-cp313-win32.whl
  • Upload date:
  • Size: 285.7 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 ffbf7e70664ce7f59ad5e299b885dc74f5cc1de4726b21d04b78b4b8b0d30245
MD5 fc1ebffb71855e6a63d5177493506e51
BLAKE2b-256 bc86139af11bcac9e52e725aa199353f5c2925cfee1d5a8fa1f5529cbfa82bcf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fd6b1568458001fb015c114969488171ead1329500171f6b4fef6b77c868356e
MD5 e3eab1fb329a90b9068ef62f02e352be
BLAKE2b-256 cff4d9803d64c03943d95191fc68aa5b30cb167c4bc3afbc2e5734c447388e5e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 d88901302f503d6a5a83f75fb61cfe4b19d1b5f5c2a0d7ff0619f59b4ba711cf
MD5 777bd50b2df8b16a6ada3a74d3dcdbb9
BLAKE2b-256 7f88feebd911c8fc2ed93e5dc7dbdac1709e4029919ca35c867654d7eb559807

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp313-cp313-musllinux_1_2_riscv64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 dc54c77f8a3501f15045f786048ebd9c9f5515b70ff90c957c7bfe4818309350
MD5 6ace273828defcd6de072a96b6728675
BLAKE2b-256 eabcce8f90728892aac07de2ba3189330176b9c74ec7020508996e6b13020231

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 ee9ec4326e6e7b0575b039eac44622282fb85819db7c26cc8d35966e58e31020
MD5 3eb66467d9f1278c095b988db0e7f7e0
BLAKE2b-256 5aff9f60971816a75cfee263297fcc95f9e49df847927ed71d617a5679bcc411

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 6a557ea6781d55ad8c597650241a6a636bfcda02db0ea25910dc26ff11715856
MD5 ee5c2662f960a5326c45377c01cd90b0
BLAKE2b-256 c20dc5a9ee72106c243b6d6e027f2a08074d79424d28061e5c26a8698f2e0cb6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 7d28e0f541e8b1189daf71caa3af1d2f6bc26d8ddff036280dfbee862aa371c0
MD5 ad6832bde17f76c68ff2b86253e4c1d2
BLAKE2b-256 b3bc17be516c8dd5bc25ec0cdef8bbc5526ae06bcd70e33f48eaf5401096f646

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 688379e086bb4540b3fe613bd6eb060ea8c2f3891398e4c228eae085b9bd14df
MD5 26849ab94cbecd5a7c73071b678f193e
BLAKE2b-256 25a9ceb9df24088732bf711644c2401f043d99f23ab1a920fccf61dbea655446

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 275aea918d53c3634a2ab03a619fe6ed1256227d57d8f5a92fee9c92ae75f18d
MD5 8dc1533756f08d3346fd202ece891b33
BLAKE2b-256 6428e773a363be4640159874c10251c2483a6200f000445e7d38509da5db7705

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cfcfec8bf8179731b4e28218935be5a24ad8635654ae86ead3cef16e6f98a632
MD5 27efe62d052e0c0112884c15b8b81edf
BLAKE2b-256 e39c34c277c23fb3ee2256629f14df8284601e43037188698888597d183f6dc3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 9256310f0764890692ef5238286e66066afea8239e865e28d1e065d58bba4d66
MD5 b3a6aeb51e68d18ce9497c6ea186ac78
BLAKE2b-256 3ee80e1f8384f13ba4eff0c8d18eecadda49c7df33b58388f9b6cacdc29ea892

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 e6d013a088c21d9536cce670eecfe22d2bec291237b812436f5cb4b5751f84f5
MD5 0d4e5c1edf7317d779eb8e6c32f50f7b
BLAKE2b-256 83aeb77de67de2e6a18a746be1b8086b17f09deb2da5e95de26b864a656df9ee

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 be8a6eb89b1230796566ab78c529520420eff4635fd5a20337eaa1e06518102b
MD5 4d12fe9fed1e2a1d152a5d5ee371e52b
BLAKE2b-256 42b1e1648f8a976cde17cc2494e98d20a95f7b1a4faf69477dfac1f2946265ec

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d4a65372b0378c14f6e37f284e39545dcb469f7618e193aab8f01935bf1ade7b
MD5 f34758d5e95e63e26e4510b3f3a9308c
BLAKE2b-256 c2d567d481d4f6afd6a273d9145eec56d8b8650662bfec684392b10718dd7f5b

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 e68b329badd9a58b75be954b670eaadfad57f4aec1e3b694e87d0ad4afc80fb0
MD5 21bb6a3b44201707c45137ab4f5c5d04
BLAKE2b-256 d3062094abfff56bde880d0c824d896206d1f95563d5f4e47380dc3f2e26efca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c29e0b9b1290f060a03eee5f8049acbca9bb16debe5619dc8adff3389f746213
MD5 671ddbdf6e48deba4d91e24d52dfb5b3
BLAKE2b-256 e9737b77727e6875d175f332d91567cf30d718292bb6c04002007b0e505121c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 255616411cb8949b2163200e691d7fbb2d915916c1d6e971557120fdf79cc87d
MD5 dbc20529491e434daf45464ae862d9dc
BLAKE2b-256 f7367fad3995540af19217d47f9d5eb44b1e76167e5b629ade4dea463a6cf30c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 e7b89f40b70b705184d29dcf4fc2caa2295b5c061ea661833b87eefffa5a0745
MD5 b105092f6d69366813424a095fe07ff2
BLAKE2b-256 70e99b53010745a7be1140a45c3d5d5d4b51b4eb0a8ce0a568c2ccb0928c9cec

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 459.1 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 58362b95d6ba513ec03e8b2d862a4773408dad3c6240e2f82460cac1160f7f75
MD5 b79d5cbd1c0115e9caba1c0408f7734b
BLAKE2b-256 09d67ef4c6296bc0a5308cf0da3830c8f7d2a1bc80dfaa6c27a05f5ea96efd2c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.1-cp312-cp312-win32.whl
  • Upload date:
  • Size: 285.7 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 590bff5f7e0e5a044cc8afc1dd61995ef7367bd195ecf7c333b109628382a759
MD5 314aab96a5c363de97215092dc53aef2
BLAKE2b-256 34fc12dab199a053bde22e5c91539e163e3ae5957cf1c41e53a05335662c8652

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 d7ccbebbf7c42e0627aa970c0875bf8efe08e1485e50d16fa0a9ca723c9624b0
MD5 cf8b763145f53fb900e6cbddef9c2769
BLAKE2b-256 d5388aff2ca79504df90118f969ac3f23c6212e455b3fe6c4917e07263d7f6f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 cdf4f326e6f3e5354f560af38ed350d589e970c5ceed7844fc4d05e88979e061
MD5 362fc635f5f5dfc9adf9768d56f4a3e4
BLAKE2b-256 2d8a2674d31333a2fc91e7cece4e8793d2e104ad4af8ada544dfaa10c7e17554

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp312-cp312-musllinux_1_2_riscv64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 fbcd53f90115ec2d0f6118f322c91deffb2d07284c20d46576faac5dfec74ade
MD5 1bb65e97c1e9cd449429303a59609815
BLAKE2b-256 0ab7e3403df63100caee8a05cbb4ca7246ffcf9fa89eff6a5f85a820f05568e7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 03c65dc882b9361541339040db6abe5aa493e64a26e2b97881aec88aeda35d47
MD5 d1ae67c1e509e35f6d6785cba3ba6eb4
BLAKE2b-256 07313e0fca00b7336709de5956723570f3b94d8c6416dd0153dc332417e12fda

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 1cc72307a6dc06568f350ac5803c6fa5704650b0ce1b8d7c8e9e2cc4acc296ce
MD5 db2557462ba3ee26ee518f0e083fb1be
BLAKE2b-256 ed1bf6386486797bed9b2ffb24d3438dee731f22b7e3161019fd93257b1bef12

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 ef8b603dd3b48d7559025cd79b7cea893361e8f874d2714319cd4193fa4592b7
MD5 df8e73b387bf71d0a7b1eacd6ef8c3ab
BLAKE2b-256 4f5f16e1f9aaec8d8a9a61ffebde2d2281e623fb8d626486eb6b2af00bc58a99

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 572642811d76b365a074d3b3d92c6ce41a1365af839321b8e286bfa07f049646
MD5 8458860615f3c8fc61292eba861ae656
BLAKE2b-256 4da81d526cbd067989bf4d7eb11e8551897719eefafb63ac272416047ad5dfb2

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 dc1899ef7868315710d3451fa2ff89ea04026b030d920ab22c08d175187a6abf
MD5 678bed5358900fc99127310c40141f67
BLAKE2b-256 13851f2d134c9f46fc84830270076861e8a3b8765c7e9b4d7f799b94fc85025f

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5192d13a654ce7fa502231ff6a903e7ccb0676db58b039f33dae835eb8ac34c6
MD5 bf5aeac7351e2eed08629a9889829cff
BLAKE2b-256 f80ac581d1a434a2a0e758f4df63933ae85d1e2419fbb56d7392806b7d737b56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 31521046d591aa36c3291be79df188223be30abbd6cbdcfa5eec95dc080c703d
MD5 27362a6c2531c25419c9451595ae365c
BLAKE2b-256 34e3d13f25418cb244ae1d01f677b86c68aafd2449f922975d98595c00603217

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 63d24ef74fd143071a0d5c9be11ef83ef08e8aeef2e75546206907da610d30b3
MD5 65f4d5e6fa5f5a8a14e4daaa2c554003
BLAKE2b-256 a55c8518d661527c101ceb54154c2a0c63af08dfb3ace3197ccf897d9c544dbc

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 ce4cd8f66285ca3783fa7826a5366508d7bba763106a2e4e861fd74f8dcd31c9
MD5 26d41bc24dcd5533388289e66c2f2720
BLAKE2b-256 fe84598f62d3fa0a76ae31879d14911d7d80d0bd92e986ea6e44d77f1a3557eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 926c383d497292eb1540f48002bb747993f6a874040606ff66b25d2ccac2d55a
MD5 d1107b309b95bfc760cf7e7c3f322174
BLAKE2b-256 aff33ef3eacc749fbad56c4acaa6c4efabc017f56e221a8bb1b7bbb734ae288a

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 c580568c2ea3c8dfc313cabea76680efd59964600ea069b7ac29291e131337bf
MD5 94c263b54192592d73019c37f01a94d8
BLAKE2b-256 d585a578e6e483c3f7dd0e1fc42b68388058c61facdea93c4fa438f5b0925efb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 97bcf5f510bb513d9bc1fd4253f05df6aa7f6ceec3680f29c2bde9ed6d689101
MD5 1f5456fc1c478983bceb23f2eb2326f7
BLAKE2b-256 3e9937bc34ed69918736f81979bde5988b3ff3c1d9ea617aa15b8ba02a3cf85f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 970ea4c79671f90ffc099eafce86aa6ca7307a26dcb50c1852df01ae7ad54486
MD5 a03c122ff22f9ee15bfeb52c704767d2
BLAKE2b-256 4913f1aee7cbb2b5c88d26f502e477cb9035f3edb1010606211a4779daf8419c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 32985ee6d434c03f888abf599e535c779bef3a75c6d7db8797d7970d86a54f0a
MD5 e90a9164fa96e9d5a81dabdabb3a9d9a
BLAKE2b-256 190cff9a1a29e539de4d1b573688868d04e8261f0e754a6f10cc668822135693

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 458.7 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 7a50c7ad5b80a70ea05e30048b1603d012a0ec3dce88296e6e899c6ad46bc38d
MD5 8a4aa53250e755db1087870485fd8b66
BLAKE2b-256 a21a4e4cfc7b548f5e8d4eeaef969ddf104c76ae5f25463c40bf003767b8d6b3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.1-cp311-cp311-win32.whl
  • Upload date:
  • Size: 285.2 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 261631349a06ade39213ff53923d65dbc2c1784cbbb6297019fa3003baa6a44c
MD5 c7ba0f00bc75ca1f486e84a5342e92dd
BLAKE2b-256 1d7e9938eb7f9d7f614f21784fc4a1f5018064995fb98f2140d6fdec8504e3be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 07ac88f6cb6de8e8e86d051afdbb4986620cd1a773125cfc484e177dec7d1855
MD5 e85df20a8e9c5e3d852565edaa78c6e2
BLAKE2b-256 52375058ebe1c01bdeec1d701ca1c22392dc223e8bd0297d97bece363289c4e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 36a14655e908e5668b4117bcfcbaf40b74d96e749da2033fe5fec5045f883fb6
MD5 8499bc54666a09c6ef3a1a3384d11899
BLAKE2b-256 d25341181a696eef77fb53ac7d27a30ddadaaf1f0750c52307f616e666214ff8

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp311-cp311-musllinux_1_2_riscv64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 6ac34e50ce2001e8e1996826b5d7210c593b8b53dabdebfc94d23528aafacd11
MD5 5d3588b097fd659af4437830c80658f3
BLAKE2b-256 84970230c98fe977a7de676a63830f92098837886bc2aa89194267906da541e6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 171ca01add85ed82d3b15cda070718d8e0113dc2f92d7c972c89c3bcc3ed55c7
MD5 47add679ed43e0ddde6888041b76ea11
BLAKE2b-256 551a0948dc079be2f17936c382e28814447a7c09949703d519790e3702cb23f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 4f6e9fbdf6dd8cd929f878901ba66b8f73f44226c3d7202fabf95218edad4987
MD5 febdda85f0d45d2da233e851703b6e50
BLAKE2b-256 490f1e8c7f6926ce19d49931d69d7a39b79f20075ce42c123c856e633f4d79fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 ac4e60884361adff0641a5c27bd84626a39ef0e7273cf2bbf2401218185beb8f
MD5 c49a08b5e84d07abf5130afd429cae85
BLAKE2b-256 5ab0a04f17c78ec1c61f0c0b45234c5b97a621eef9e7a31bc98efd9843c04f4f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 e8e8665956c99cc01cd53a50c16bc65f8e9610aa1f65788b962bf78d723d0dab
MD5 75d3547b74fc1dd7ad5072e725f9c21d
BLAKE2b-256 c8bdaca08c0c60d86c441241fc4e301fcce6c1925e1f91b8c4c9b6e21fff1b32

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp311-cp311-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 3a393a7e7ff7332496ea7f23ded65589df71c70bf4e30641574edfab4df6e958
MD5 f3e1563bbf9686b5873c45e0da023921
BLAKE2b-256 79c2e747697f42fe5166ddff9cfcf66bd1ac7b8a44d8b8b2d908409ed43e4545

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 356091d71bd78ba99ff2e1c637178d3553c4caec1e98b10690d8bcd35fff6d94
MD5 72cc643769d177f16bc62f7a7aa73b76
BLAKE2b-256 1d597c0d0c71e6965d067b9b46557e11f1d06bfa0c27ee2126d3efb10729a061

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 6a065a0964e3068745a293eb056809d3d6c553886ad74477f40482e9e0ff9f55
MD5 31425a95faeb3fb0091e4fac33772906
BLAKE2b-256 bcc8870ab3e64e141c39b95a999bb309f516cad6fb3b90fa9c0844a63bb61dcc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 56ae0f7ed74aacd53abef0dba348ce2d20619b622c45977821827159468d7288
MD5 d1c140ddb76307c814fcaa4a41d4ccb3
BLAKE2b-256 87827e31cc3384417e15fc1049569c3fff0faca26f3c7901e69babf38b774c29

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 5e9b13243e2338ac54209effdb7de9cca9128bee57fbb69d46e071ad97da8a44
MD5 16ea2acd9bf3e732a528c84159a8db71
BLAKE2b-256 3681a897a125fa57ab9725ee00d8b9847c1fc06d341623d6ea01766a78ebf63b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 346228a189ed9c65f04973add8294b0110779ad4bb8a13b2246b3860f18a2a3d
MD5 e487578dbd00cecc0bdbf57169354cda
BLAKE2b-256 0d37aeaa4e0e27d19dd1cc131dfdb668aa70d606b08a03590e5162971f5c256d

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 f23277667aadd198159e8db23e45f97708dc8f286594f7a97f79ba627e812c44
MD5 c0cfd951091a1d9140e0538a6a775175
BLAKE2b-256 93a60e4fca06a85aa2da34bc966ffc7f306db069320b0c753838a2e6c64fcff7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0204724b609972670ca355828296120e0d1ebb6fd259ce7f3876a7a04573cd46
MD5 aa9832486df2b52903017efe223227ba
BLAKE2b-256 8870a11270bc7037dd7d5b116a6b862d022f1f04eb3d1143f47a49556f649e4b

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp311-cp311-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp311-cp311-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 2e3544dec1711be3cd8693035e05af0875acab05e0681166c6f797770edb0146
MD5 727035f9b99ddc11366f474ee727a0c5
BLAKE2b-256 fbd1d3c501632e37fbe3908d86d1bc16cfa67a4da782cd4c308d04bf5d2c204f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 458.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 09b1f780b9a05862a9c2c56d946311695be64511dcf6f0521253ca199de643d2
MD5 93c30dd81a1f29f4854f7725662005f7
BLAKE2b-256 623062461c5123b33a59a3071cf1900e7639842fc008df246d3c6c2cf957922a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.1-cp310-cp310-win32.whl
  • Upload date:
  • Size: 285.2 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 b5bd73443a339a2f4e4ead260c122e5fb9145d74a84a7627ef62246582084c95
MD5 7b9f6bea3c63e13707a6455346564bec
BLAKE2b-256 2a0eb02ade3965e0f4b4d16e2bd95e421a9aa2ed8af3519373b810b7f15b15f0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5f353be6e9e0703d27b438da7d84cee8129eb286008138f39a635d6cef6b920f
MD5 d06658de91c4dded0524f366defbabf1
BLAKE2b-256 179547160d95e282495c1a597298d3e05f2e719764c1e146a877c33adf11d53f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 fcf67feb7abfe22f469c40a4481f98a94f1cd1eff847441aaaba11592f8ea69c
MD5 913863211c8609ee25ac930da1d0d39b
BLAKE2b-256 8b06cc3a66a614a1a4f2c28513ceb55ff697eceba32a3c1091f5d77e53741a0d

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp310-cp310-musllinux_1_2_riscv64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 aa81cadf708fca5b97b13d14fd5cb014e6ee80be430633bbcbf03e29dd5cf3d9
MD5 e47f52d2695c2fc2dff4e53fd81388cc
BLAKE2b-256 1bf522110617e8a561170692adc858b055f5a088ffdb0cec3859fbe6c47a874e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 048df1596bfd56d8fb874cec2a548743e7a752446180a6977c524ab1dc57f701
MD5 d258a69d47bbdc7902432ad36b9cba98
BLAKE2b-256 34ee9fcb40191a4387ca5fcf679a6931b6b7912cef8f1a424d4f6eda21f0b457

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 8a7221ce42c62da157f9b28bc9f748404b3ff25fe3a1c0f07602df580b005db8
MD5 0619353a4c553e73ad822a163a301968
BLAKE2b-256 041f0d455cd4cfd06b809903e83853cbcb94fc99b8f140f4bd2b3a3e333344ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 89ee232afb2dee060038729f77b7f8e1c1d1e8b9348e471199fd984d9fe2159e
MD5 c4a8c9b771e3ababdce8c6b2af748f46
BLAKE2b-256 813f9f7de916f9f8397599f15fe4809176e5ef17ed55344cf16dc9cd3c2edbdd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 5c92c3a0fb73f65653e2b3b796f94eaf81b3cf5af5f6b76214a2c74849881455
MD5 4fbf88cdc4b511aee73e863685af437e
BLAKE2b-256 4ffdf0426dd3b0e37c6bb6f309d185dcbcd440a203eb50c67aeffe89a7699db4

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp310-cp310-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 190641f618634df929380994aaf9bd04416cf2d1d67931386a37224ac4fd7a8e
MD5 44b03e78821b9399c5d0eb10ee11f417
BLAKE2b-256 0b21824639ed31f233a7335ba6a47457806596b9a5aa45768b7b36d145209af9

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b5314e0b2c6bf15b2be0e65e12468e875dd0a33388d7fb8897dd4c1670a362c0
MD5 1a3aba6a817952af4e95e589f6ce0870
BLAKE2b-256 aa4464de7b6403b3b99f2a9df2216aa62c90d173f78ff6695a3e653458c62bad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 1aaf9a18fd69da286e66deded1923e8f30f41a37f78eefdf84f6e446a543018e
MD5 00aaefe0c1c4bb203f6cb9157c283bcd
BLAKE2b-256 bf62bfe77b70fd9615430c7aaa9058c75d56148862ba2e2d3915d370e315b4e4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 4add878cc8b5af5cc1e8e16ade40eea4ad13ed0d72a5f808b36ca1f05bd433e1
MD5 6c3d90398e3d8e5ff214c30a72b4d166
BLAKE2b-256 cdb672a9a1f4801daec89e98a587f040865e29e7f420e6a76225e614871b92e5

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 65b894e6987b11d13c942633105e1767332ae7c7ecf71e4691e50ba09d127ba5
MD5 903a899cbc1f9eff997ff6a037e87b29
BLAKE2b-256 4a94be536505b3a49cd565ae97ce37524ff8309213557c1a0fedbaf295a6a5ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fb8d6b214d67014ae56f9e334b17148f1f85bd565f1fce5f018b84c77b9d1e55
MD5 59c81c246f7a9e3b587483912ada8229
BLAKE2b-256 b1480643227634d24235872947705d1d34fee3b62a58d24ea48693adbf9ca7c5

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 36b366cacd862b8b7208f19b09c88f8a1a103d7a50366c6f98c72bee010895be
MD5 ab73c43d1d8f4f313254bdff14828f22
BLAKE2b-256 8c5682d0927bed2756fa38cc7d7e6dc2afd4f6ab81ee425fa1740f5a23b36683

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 075902a57d8b50cab621421db315b5f00ac7e4737c8d240fcba443ad8eb2d6d1
MD5 cee13d32f47d3e1eaf38d53bbccf9d51
BLAKE2b-256 89215400be2bf3c9f18a975477895cc7ce60419d8abe3f8f782f62d86cfda48a

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.1-cp310-cp310-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for stringzilla-5.0.1-cp310-cp310-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 6ff3dd8258525251c09b30e90344174e39a2c5ad5278345b28a34efe65334a2e
MD5 9e923ebab0d88e00424a4e452d213473
BLAKE2b-256 7f3479a0451bbfd85e1dd334aededb7cd9fff7b7937d79af2082943ec6b57096

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page