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.3.tar.gz (1.8 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.3-cp314-cp314-win_arm64.whl (406.3 kB view details)

Uploaded CPython 3.14Windows ARM64

stringzilla-5.0.3-cp314-cp314-win_amd64.whl (476.6 kB view details)

Uploaded CPython 3.14Windows x86-64

stringzilla-5.0.3-cp314-cp314-win32.whl (296.4 kB view details)

Uploaded CPython 3.14Windows x86

stringzilla-5.0.3-cp314-cp314-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

stringzilla-5.0.3-cp314-cp314-musllinux_1_2_s390x.whl (827.9 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ s390x

stringzilla-5.0.3-cp314-cp314-musllinux_1_2_riscv64.whl (795.0 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ riscv64

stringzilla-5.0.3-cp314-cp314-musllinux_1_2_ppc64le.whl (987.6 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ppc64le

stringzilla-5.0.3-cp314-cp314-musllinux_1_2_i686.whl (804.3 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ i686

stringzilla-5.0.3-cp314-cp314-musllinux_1_2_armv7l.whl (796.4 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

stringzilla-5.0.3-cp314-cp314-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl (819.8 kB view details)

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

stringzilla-5.0.3-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.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (838.3 kB view details)

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

stringzilla-5.0.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (993.4 kB view details)

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

stringzilla-5.0.3-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (995.0 kB view details)

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

stringzilla-5.0.3-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.3-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (801.1 kB view details)

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

stringzilla-5.0.3-cp314-cp314-macosx_11_0_arm64.whl (386.4 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

stringzilla-5.0.3-cp314-cp314-macosx_10_15_x86_64.whl (399.6 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

stringzilla-5.0.3-cp313-cp313-win_arm64.whl (389.6 kB view details)

Uploaded CPython 3.13Windows ARM64

stringzilla-5.0.3-cp313-cp313-win_amd64.whl (460.8 kB view details)

Uploaded CPython 3.13Windows x86-64

stringzilla-5.0.3-cp313-cp313-win32.whl (287.2 kB view details)

Uploaded CPython 3.13Windows x86

stringzilla-5.0.3-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.3-cp313-cp313-musllinux_1_2_s390x.whl (828.4 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ s390x

stringzilla-5.0.3-cp313-cp313-musllinux_1_2_riscv64.whl (795.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ riscv64

stringzilla-5.0.3-cp313-cp313-musllinux_1_2_ppc64le.whl (987.5 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ppc64le

stringzilla-5.0.3-cp313-cp313-musllinux_1_2_i686.whl (804.4 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ i686

stringzilla-5.0.3-cp313-cp313-musllinux_1_2_armv7l.whl (797.5 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

stringzilla-5.0.3-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl (819.8 kB view details)

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

stringzilla-5.0.3-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.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (838.8 kB view details)

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

stringzilla-5.0.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (992.9 kB view details)

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

stringzilla-5.0.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (995.8 kB view details)

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

stringzilla-5.0.3-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.3-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (800.9 kB view details)

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

stringzilla-5.0.3-cp313-cp313-macosx_11_0_arm64.whl (386.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

stringzilla-5.0.3-cp313-cp313-macosx_10_13_x86_64.whl (399.5 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

stringzilla-5.0.3-cp312-cp312-win_arm64.whl (389.6 kB view details)

Uploaded CPython 3.12Windows ARM64

stringzilla-5.0.3-cp312-cp312-win_amd64.whl (460.8 kB view details)

Uploaded CPython 3.12Windows x86-64

stringzilla-5.0.3-cp312-cp312-win32.whl (287.2 kB view details)

Uploaded CPython 3.12Windows x86

stringzilla-5.0.3-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.3-cp312-cp312-musllinux_1_2_s390x.whl (828.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ s390x

stringzilla-5.0.3-cp312-cp312-musllinux_1_2_riscv64.whl (795.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ riscv64

stringzilla-5.0.3-cp312-cp312-musllinux_1_2_ppc64le.whl (987.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ppc64le

stringzilla-5.0.3-cp312-cp312-musllinux_1_2_i686.whl (804.4 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ i686

stringzilla-5.0.3-cp312-cp312-musllinux_1_2_armv7l.whl (797.5 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

stringzilla-5.0.3-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl (819.8 kB view details)

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

stringzilla-5.0.3-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.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (838.7 kB view details)

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

stringzilla-5.0.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (992.8 kB view details)

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

stringzilla-5.0.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (996.0 kB view details)

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

stringzilla-5.0.3-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.3-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (800.9 kB view details)

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

stringzilla-5.0.3-cp312-cp312-macosx_11_0_arm64.whl (386.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

stringzilla-5.0.3-cp312-cp312-macosx_10_13_x86_64.whl (399.5 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

stringzilla-5.0.3-cp311-cp311-win_arm64.whl (389.4 kB view details)

Uploaded CPython 3.11Windows ARM64

stringzilla-5.0.3-cp311-cp311-win_amd64.whl (460.5 kB view details)

Uploaded CPython 3.11Windows x86-64

stringzilla-5.0.3-cp311-cp311-win32.whl (286.6 kB view details)

Uploaded CPython 3.11Windows x86

stringzilla-5.0.3-cp311-cp311-musllinux_1_2_x86_64.whl (1.9 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

stringzilla-5.0.3-cp311-cp311-musllinux_1_2_s390x.whl (826.3 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ s390x

stringzilla-5.0.3-cp311-cp311-musllinux_1_2_riscv64.whl (795.9 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ riscv64

stringzilla-5.0.3-cp311-cp311-musllinux_1_2_ppc64le.whl (986.5 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ppc64le

stringzilla-5.0.3-cp311-cp311-musllinux_1_2_i686.whl (803.2 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ i686

stringzilla-5.0.3-cp311-cp311-musllinux_1_2_armv7l.whl (795.2 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

stringzilla-5.0.3-cp311-cp311-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl (820.2 kB view details)

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

stringzilla-5.0.3-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.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (836.8 kB view details)

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

stringzilla-5.0.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (991.9 kB view details)

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

stringzilla-5.0.3-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (990.8 kB view details)

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

stringzilla-5.0.3-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.3-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (800.5 kB view details)

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

stringzilla-5.0.3-cp311-cp311-macosx_11_0_arm64.whl (386.0 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

stringzilla-5.0.3-cp311-cp311-macosx_10_13_x86_64.whl (398.8 kB view details)

Uploaded CPython 3.11macOS 10.13+ x86-64

stringzilla-5.0.3-cp310-cp310-win_amd64.whl (460.5 kB view details)

Uploaded CPython 3.10Windows x86-64

stringzilla-5.0.3-cp310-cp310-win32.whl (286.6 kB view details)

Uploaded CPython 3.10Windows x86

stringzilla-5.0.3-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.3-cp310-cp310-musllinux_1_2_s390x.whl (817.8 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ s390x

stringzilla-5.0.3-cp310-cp310-musllinux_1_2_riscv64.whl (789.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ riscv64

stringzilla-5.0.3-cp310-cp310-musllinux_1_2_ppc64le.whl (978.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ppc64le

stringzilla-5.0.3-cp310-cp310-musllinux_1_2_i686.whl (795.6 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ i686

stringzilla-5.0.3-cp310-cp310-musllinux_1_2_armv7l.whl (787.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

stringzilla-5.0.3-cp310-cp310-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl (813.0 kB view details)

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

stringzilla-5.0.3-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.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (828.8 kB view details)

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

stringzilla-5.0.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl (984.3 kB view details)

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

stringzilla-5.0.3-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl (982.1 kB view details)

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

stringzilla-5.0.3-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.3-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (792.7 kB view details)

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

stringzilla-5.0.3-cp310-cp310-macosx_11_0_arm64.whl (386.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

stringzilla-5.0.3-cp310-cp310-macosx_10_13_x86_64.whl (398.8 kB view details)

Uploaded CPython 3.10macOS 10.13+ x86-64

File details

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

File metadata

  • Download URL: stringzilla-5.0.3.tar.gz
  • Upload date:
  • Size: 1.8 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.3.tar.gz
Algorithm Hash digest
SHA256 804806a1ffc10b87c558d007aa68443f3b5eba78adbcd4acdcff97c18ff6cb5f
MD5 3ae783ca27af918d44ea66656808e1c5
BLAKE2b-256 0d88a9b536f70e24c5b349223cfc9e3ef6a2510ee3938b428d86b6b3466557d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 e3bd816e82a884e109f159f00b8a940a26be16d22a149b939188587d6bdaf6e3
MD5 6baf9041a076af64a2e2cfff7d6e1de0
BLAKE2b-256 e31bb75483905ca4cf6c9a22c70091081169c14df0508f9cc4840811c1390665

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.3-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 476.6 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.3-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d0c083b28e6df4d491e8cb942351d571e01fe347cadf4c3b56231406591440b4
MD5 3cff8a953ebc9ba240118e370b347970
BLAKE2b-256 a31ea504073d111820f056a976917512349139e53b658f603be7c49dd57ac451

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.3-cp314-cp314-win32.whl
  • Upload date:
  • Size: 296.4 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.3-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 75f6e1b0d61b72980fb19de82ee2caae02b9c58f70ed3a12c7a436047e41ef56
MD5 7648d27ac100aca2dc15e8a227fad10a
BLAKE2b-256 4aa95f4c685a4d80d262dbd486931e8c48a6765c1d3c034718f4288a88902b11

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8200ff070de550908429c84c7ffc3f1b9d333124333e2f7701bc5308e3ea239e
MD5 1a72091754b086d97cf8350d47cf3094
BLAKE2b-256 825ab600df3c7113f1a4b46036a988da4f8db7eed4a35a2f606982199cb482f7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 f99160f9d08f8804fd9d1655abd134ab2850d6d65ca43ca304d2368543b659f4
MD5 27f9582af6c8b988c98022bf2da0f03b
BLAKE2b-256 6696870089ab188c01f16971ffbdbdab911a2c0deb6cafa28f62d34e6841b200

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 91e135e2a372acfd89d3d63db477f4a880c1aee740c1ba9499e605a0b9583806
MD5 c65ac8172ecca9563fe2c25e18dcf1f4
BLAKE2b-256 d0e302bc7e3bc7186b75ff446a424ac5d61c26d1d71b48f5aadb4b0882592c1f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 8f9f7e51f597f5d50d2bd5e18cce48d349ba83b7dbaaf19d75f097a69fd5f12f
MD5 fa3a1fe92bc9fd4e8707a8f2a1684f75
BLAKE2b-256 1d26c4b0e4a40416531078002ff5a4c5d1268a3e7db8f96cf7297a289e6d64a9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 4735cf78fa7691abc8d9f9d1672c1216f856cd0c6cf7502e6eb57e71ffb6e742
MD5 e0c7a59c98323bf8ad90dfe10fa5dba6
BLAKE2b-256 64a15415e779416520d72194f97f1386cc5a4dda1b9404a19e9255e5f5c277dd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 a204587e98f5f61dd1acccb723bac134e7f2e6e4b23cac165d0ecedcc096ac18
MD5 c455ee6ac61e3eb8163d8a633478b42d
BLAKE2b-256 1f65282d7eb4699ef373fffaf53718f949a7c1c47bae534bff9da4b490a30386

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 abe5387cfcbdf0f9c88070f08e2366b4573cca586dfd79cd540f6f79d899e4f3
MD5 78fa83c34406699435561ac15f2a6075
BLAKE2b-256 c330a63f46d4d96210088131ce6ba00ea854f8a10455d26898c5b16affea1019

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 7154962cf470e9c4367ed818619e1f78a9a59c42fe04c57bfc0744ea9d2f6e69
MD5 7c5734a6ae2408fda1364de70aa219b6
BLAKE2b-256 8a85ba4c3abd825d314a2481df41269233ac9fcbd94d1bf265afeaefc9ae9b68

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.3-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.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 011213e547b3850d180c5583e441af669002c95c5e9105e533743ebae366aa49
MD5 836381e948cd10fab3b6e980bd75dfbf
BLAKE2b-256 f19d5e9908b2b778ab5614b1ffbfbeeec5fa64228769006b1f09a60838ff5ace

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 83ac204ba2f2d8b9908432bb19a3acdde6898d7fd203698fd479872940cb8b16
MD5 343120796621764548fad5beac69259f
BLAKE2b-256 9e5818cb16d95815226b27c0fd1bdf3cff0c151f6497f7815ba8f51bbdec88a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 aae674ab15b88a9a95a798c6957f11c5aa40c14b5db62943a8426e703b80787d
MD5 841e2c4a37f5e73639ececdde2985468
BLAKE2b-256 44f89d7ebab8a5da5da9fe28d66b1e13d4696ca8dfa122b75e9ba040692a5227

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 412a6b2b8ec80085b307e1a7b44a7a5edd2cc976b3058d84de1b6ba0ed792540
MD5 7805990989aab43d63095cef5dd54629
BLAKE2b-256 622af3cd15bf856b172dbf684810444c6e092c1e69708ee8cdbf151a2caa1804

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4d3a199255cbd927a99d3dce114ea037635b14b16a2a4d7e7a9cf1cf34d9b03b
MD5 6c100d68b5610b1c359351eca4951e57
BLAKE2b-256 4bdce42ac4a846f9b7e641cb5b43be2d5b8616820d5254b1e09c6ff41e728321

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 80e747dc6f9daa70a72978e6ca72a698f0e8249d2e5698d72958ff4a49c0105d
MD5 faaa29594b1eff1c6490f9b5706d6cc1
BLAKE2b-256 2df407dff36d9d38a3391eae0617168478579e559f3a7fde7d18cb3caac718ff

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ef4f2609851e5ad6d5e174936d26a2288d985c0ae66a3c477492e1a345cd7dc1
MD5 31c2cd3c015f45cb9d3f34431ff90812
BLAKE2b-256 c7fb048a9aaa9895405b45d9e390177892322d1bdd4f4fa6f85dc00baa412dad

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 ebc7bf7f7d86b5a8ff2d6ba12afe21e3e8a3b18d9a5a8d2324ffe8f65b5320aa
MD5 38fd8679979f07b0b6046db4338e1481
BLAKE2b-256 cc248254aaa96e4e075953e5a65cb01471c369fd7e1e22300f7a7276e2e8e442

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 c1f38eb01439b7e832f5242df54cbe20fa532d624e6457f7c2103aef498dab93
MD5 60a601faa1d1d5df8dd4bda80a1de722
BLAKE2b-256 1a16dc413a9bb00f16cd60318c49b6013338745f5c2dead965893aecb0d50cd2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.3-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 460.8 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.3-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 56cd38e98aeb6151f0cf548a1ab77dc788c2e221a72a8c1f31854cd691452900
MD5 812b956ae580cf0becaf66c127034748
BLAKE2b-256 9f868c86adf8e063a704aa54e2b0e1fad617064a1076502526aa19e80f479a52

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.3-cp313-cp313-win32.whl
  • Upload date:
  • Size: 287.2 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.3-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 c6063aed118f31ba71ca656847d07780f33dad8d7f0ece63a0fca66035b8fe9b
MD5 3277cf1777053286455e5d44b2bd98dc
BLAKE2b-256 d397630911fc4eddea3d7d855b42465705afc6174b044ba8ed3e1e8ecef4a892

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8f44261432fe93f7b3056679912aa06ae4d1ea172d07f5e1ddea11bcb9123e92
MD5 bd5e17a04d8d522bd862d1bccd0aa467
BLAKE2b-256 d736e82e1af1dedbdff95a59dcf6f37f16f1b769c8d44c84ad4edd98211ba110

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 52cc1dcf9a6ae353dec36c4c49b2e98422fca3b19d6b82c9606357dea6348789
MD5 8659714e7a3ac6b3fa0a73e6305b39e0
BLAKE2b-256 6026eff0d378466afef7eff4420e659c9548da7fd617a6c558f55e47b1015899

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 2cf1eccae44f3a019280d7ea19e6e78f7bd3a95a8c3defe246f6982a18ef735d
MD5 f69057f6b205a2fe4ce1230860e53f82
BLAKE2b-256 288d5b67529867cc883fe9533b098f879d95180415bbbb4466a206847ed26e72

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 6174ddc19684d9ad26e86beb9388411dfd74143096ed44e20f97ac6f30dfc1f4
MD5 1b2ca2c7d1e8359fb1f6de8011af678d
BLAKE2b-256 af0d3b5839a72f1b81da250afe2a6c552767a03427806615e2b9ad553c1c6079

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 ec3ea42dd81524bde9129e147b609baf4c87e62f0ba31f25f100f9652342c13a
MD5 6f96ffec4d19219298a734c3c70bfb74
BLAKE2b-256 aad3cfad68db3de8f080dbf952cd2388dfd13c1c5454b40b20a5c40a8adbe2cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 388c90d688470b2550fbee55247d51de8578416ab20c1a3ee2115bd5fdcf671c
MD5 8a6ed75d834e5002bbabf6c845d2bb33
BLAKE2b-256 7bbf3d47c3a55f1f9dad8ea0b6055f294648b7895b0c1943a750b6b935d15bb2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fe979476b3b830b7d411700087304c70fa6085a49bb4d019874910b56f98b03d
MD5 f3de38266c7edc3ca8aa894d259a0e22
BLAKE2b-256 c4d419dcf94bc3bb7be55c04aab80f0dc83b019fc640efc3d4845fa3f5324693

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 ad8d5624fa0c4396add2f1d4c9085ac3a611d155dad01adc67d329f8ac120ffd
MD5 d205ecfe55265695d6f549833f5e46ef
BLAKE2b-256 52d2d617442829c4c68d752cb205ef44424fe7e0eda5c06e389bcc8d0d422384

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.3-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.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d021cf12af501d3fb246db6f3fa90900bb7fe535b61b535fb45ce9a487636e18
MD5 427735e0a418de43ee905cc00247627f
BLAKE2b-256 fa170bcf98e26b98bb17528762db2f809cda2a74979a0884a7dbb8bcfed71fca

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 2a6a8e2357b723a60d85756bee515488b2104423587afa7d4ab1ac7b0e46c3c1
MD5 160cdad1f96dfdcca4baf1194fa253a0
BLAKE2b-256 ded473fcc0f139d215cbd0b176a9d24dfc6c92e75a704e9d70c107b92d594afa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 04d463d7a801a66a952fd77578a581f870a85f1087b215548eb253fa442a2405
MD5 6441897acd51c779fab7d966138cf8b8
BLAKE2b-256 b9b6b37a21aaf1a486fcd44a4a3b7ade62572848248896ee5bf876e2e2f603ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 a5ccbc7f92d5eb7f05b06eee25d4673238dca219dadbdf49c39af44415d927c0
MD5 8109c6cd0fc2b2dff4e304a498d076a2
BLAKE2b-256 98250805a0d25359f28ccdc9dad3b4d86aa5450c7a3b3f7a9a26752f5e3ffcc6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6511a6ec329993e1147f11950380b92ccbea4761769b6425ddc9764cb093d1ad
MD5 511ef6aa505406919a42a0c77ce0f302
BLAKE2b-256 7c144dc4211322194352cc7a1c322f0faf7ddef1ec2ed81ddb3176caa927ae87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 f8c928f4d98f674c42698c94434c2b8248366aba51990dc9d85a3a5953d7d7bb
MD5 069109933de9e2e6646ad906766de2ab
BLAKE2b-256 d1b2741a715abdd0b417603a70df2f95cc3a7ff7298a667433d69ff131b6dd9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ebd37cea6ba667522be06a68066a3052065f812adb03ac9a030633f4e80c85a0
MD5 b6bf020a9bc4116be5569aab7babf35f
BLAKE2b-256 5bc366dcd8fac67fed81f376fc86147cc7b97553fa2fbda691a8316da418f883

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 c773dfe720b38f71cefd1dd2f88a92ebad3e2e3362003b249cf119823ba3a9fd
MD5 bd80001c0e174f19028bda73d27a12dd
BLAKE2b-256 b1d095f71287185a1665bd4891e87c55152d640f7f10b56d9e6e5133c8d5c0c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 6892f082ff673c4f7dac8d34ec6b9c64d51ea7a74de3df63c7ed9fe8fe8cb06f
MD5 605a26e746a1ad6a9680c8b8b8c82992
BLAKE2b-256 609029734f64901c20401af9ea6f4c365e35acec461889ca302c0466b1c94c53

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.3-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 460.8 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.3-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 29c8cb6956cf2b1a08cb828cba6d6f7f22526612f7861a84d33223fbc697d257
MD5 66e92d46f144e31f5123896ec07c96f3
BLAKE2b-256 948f4ce3246a7cabce316b0196f2e9c0c70080927c8038a13f178ead70efc279

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.3-cp312-cp312-win32.whl
  • Upload date:
  • Size: 287.2 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.3-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 ef9851fc2ede6bac9b2bc25e3ab7044daaefa508624af2f4ce86b1cbf3011266
MD5 9122c28976ed67d78173f2fff883b141
BLAKE2b-256 d75ff70814da57c4827df23d85cab119d4317ea2fc7937102142da983556058a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 78b6e6a500dc428cd74923f949bce998dcceac86ecbd34503babad47fe16d714
MD5 bcb675ef6e1fd51a0f06404f323f6023
BLAKE2b-256 2e5d97e99cf7b3b4836c066c04db561a320fde4023bea94f95761d87540b756e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 55dba39e0f7ec087aed54d138494413963caa589ad8a653052659e7b03efd568
MD5 3ca8774b3e0427a6df8ecd5616422fa2
BLAKE2b-256 b276da6900d9bf8cb584e96f5348d5b3c108b1fa8fccc4e22913a2088e4e7ce3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 9c932216dca8a32a1c65ed88fbad74ecbd61736e7f3047a6c5e3795fc90c3737
MD5 b8917e775f4f5a27d3dff7595e6b3258
BLAKE2b-256 9f4218a957b22b7d6ab6d022f4e50a23296f922cac0184bbdb71750790fd0af1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 bf3d73f30c2060ff23d6e230b536ca265e95202ba445913fc1f4929b98b0d709
MD5 a30fef34e383e8a4eec16d88c0633bde
BLAKE2b-256 841dc9d6c48a891505028fe3f187b67aae4855aa3fe6ebb1d84450120191aa99

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 08d3362ff507098a01f7251aadf447d2254d509e5a6a587a565c7d9cc2488d31
MD5 b1a1c94f928730b56a6de486496b6971
BLAKE2b-256 6e6d20326623fe80786a5f57a93bd5ed304829235a49be8bc1ae094bdfb33e9a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 62b6ec08c1ffe88b2eb3d5b960034a1e70f0104d0cca9b628e11c147ee969b69
MD5 17f703934ce362cf4bbb642e6c210151
BLAKE2b-256 a4f74992c666fbbf2949361cf980bb093acab2d8e54f10ba76acd9f3126c329c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 4c7e6b41f44d60f07745a75d549d11e261555a118e469be7ca5ac7d6dd98eae4
MD5 45f5d45cefa4fe18bd4c822ee93c8c59
BLAKE2b-256 d5f94930f5c0b014aa9603312164f1e26d5d38992daaa0bdb2d3c12b78a32aab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 9a2859377a731420c4ae6339df8d4d69caba90ab2bc94d4327cd84f89c2d4735
MD5 bdce22e60d6d431ece9dd4c50cb67b1c
BLAKE2b-256 5d384cfc37a87c2546e011a52f1e33435ee5433de5775292d96179b78511b6aa

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.3-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.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4118ae2f094451f75f0c14e71c7435dbc73d975bc235173cb5e74fd8a122fd8c
MD5 dae9ce7ea8aeab4e7994a74cdd3172b6
BLAKE2b-256 a4f4c0fa3b13aa30d32e60b11f67600a8f6dbcae1151e1388b5a61a541297c86

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 d3aae4ac7258fc404a806b1038499733c8a1929d4e2c0c82642bf8606ea57f0f
MD5 5b6cbae72065d3629dbe76444ac889bc
BLAKE2b-256 523e2a63c197dd4e0075dda023e59d98796dfd87f0d1b8c69176a801afec7c5d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 d2c426cf4ab8e67e34fb14c82f692a2fbfd7bb3ad0c47982f505284cf00e2d4c
MD5 c7d7c1c15cab9e3f16f02eb3703ff047
BLAKE2b-256 d6591a7264d706a3736fa0843292a15e7a327fcde2afd7c55fddd20037d0986b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 ba896de30942b6713a06d6ee57de5d149ba4e656dc62118ad6fc2bce9e337f9c
MD5 6d5f9bce0b5eecde25ffae636cbffbcc
BLAKE2b-256 f73367540578623cc3bf58c2e7aea9fc4bc4c49040a1554c69e9fa31216eac73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 188fccec8369640b98eab27363fc91726bb4d09252398afba94caa9b6e94eb6d
MD5 33dded66f0b45aaed11091ade3a403d7
BLAKE2b-256 4cdc7dfdcad5ae8f8769995e4bb6a61181dbc1d1b091b5fc7f56132914bf3d8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 df6612eb392ff9a8d5207986153cbb8d1b58e885bd0bba17454a7860ce636240
MD5 3495d0d305d06555792d44b70390ec9d
BLAKE2b-256 1306567e901a6734712039ee033fc38690bdbb0dd5f2dc4c7a890c27f2339762

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2915ba1d956d6738a8b160393c116e642d67f8f0a524232e06d55dadfe872497
MD5 1cfed0598eb7288edb45a7d3c7df2c02
BLAKE2b-256 420c5bc5a6e7202a672a672b6af61b5522eecd41e3e4c28d84022ae3a9b4ebe4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 de04b40820d1d87e7fcf27ecb492ab42a6660a46fd6b113dcdeaaaffe3193d5a
MD5 1af3cff1ad7695037ec4826624ca0e75
BLAKE2b-256 e680103c04550eaca754cf6ee2f00e3c9eee58d70547c0a64cd6afee2ca9b215

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 0375a44307eb660cd32329b92537e096b47920d7c25766a6191dc128ba298160
MD5 a5fe9733141bca518ac0c5aac1cc8ad9
BLAKE2b-256 721f18f24a11a98c55912fe32bd3c8a2ef83d68150a19c6e6e8fe0c199b8528a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.3-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 460.5 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.3-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 0e0b826687a9dda063341253e863d962458a80a5e5738637c76a707c0bea972d
MD5 fadaa9ba805307b17d125dce2baae908
BLAKE2b-256 7b8ffb1f7e9f104317cc6f56d9c9cdd0afda4e36e46a135ce8c8d26489995970

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.3-cp311-cp311-win32.whl
  • Upload date:
  • Size: 286.6 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.3-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 f5fac10e6ed934175d9a930972b45d9c8a144d770a68f465dc36566876b19b91
MD5 bf97ed664ea0bbf2d38474aacebe3fe1
BLAKE2b-256 11a9a07e323532b86b5eb09de41480802d312865516048e94f5203b6cc88dcd2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 6bcf7bfcd8e3e50b6724e80096bde5e40f479cb36f055b55825d7ede398521af
MD5 781e8fd7177332cfc0bc336b1b06bfb0
BLAKE2b-256 a5adccfbabe87faf4879846e59d81d405dea4b362200f4e3b60baf428f56e2bc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 6813528211cefe31968e5bbb61aa3152e335fce0aa73b120745c61cf4f7e2329
MD5 2bb96af73731360a3fa7c9ed2f2c0387
BLAKE2b-256 7de81b24b2e34e09a15a7e53bebf88823b7dd976b4591a4e6b4c405fb8aeee02

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 49981ac02c8823907ac401c601f1c533ee01bcdb4a0f3ee1a5b4f4eca6361099
MD5 079f2b1be573b767b9708aba138b3e91
BLAKE2b-256 48ca654141e101aff380ab15302af1c58f52725abc6113e099883ee3dc4af7b0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 b19f13ac527b50721d3710d2a97bf1b3bdbce2b5ba5fd24a468cff6d3134020a
MD5 4c7536aa5c9c896dc55ed7ee18bc10ef
BLAKE2b-256 5b29d1420b439cc8d87fdfd9621bd241add6a8e45d1d3aeab1472a4fe203f04f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 c71681c094b1ec2c698fc781791136ac4324483b7175d0cb43128af283b0502a
MD5 db59d5f6acec930cfd631a4e59ffd1d5
BLAKE2b-256 fbef94b56a76248eb6831951756f5d390db0f480a0ecc476b84df90b7c8c927a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 1096e66690266ad547acde333b49b9c6e9878a2009a11f74f46d49f2f4d601cf
MD5 854280e72a16adff92b7f9adc42f5a95
BLAKE2b-256 b986a830013becc01142cd187e3be6b4494aaac85c27aef51f9e1b98e82481be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 ec762e7d8dabd7f14f581a01e9d6141251175dce91b0142cd7c0f94d74a460e4
MD5 ae5ae004f450f24706279b08eafaf383
BLAKE2b-256 e39911e5ceaa6d541e1de2c0bfb223e2d5f75938754c97a3b8ba69f1291cdbf5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 6cec54f0c01752fdc463f6059559a6dc1dc47c30869ebc969c93fe4edc448a25
MD5 e4958f45b4ea76c09a17fd0a941454ef
BLAKE2b-256 4b305f54267a9cc40f508a02d07d22b07028ce27afbace983288c301bb5adc63

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.3-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.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9a90e16030c6f02056c714ef694b9709288005c308536bd6b9cab03a8c16ba42
MD5 79072e879a547be425e1fb3923f94726
BLAKE2b-256 51c01255367614905ed6f6961f254af6742ef0061b5febd6f15260deeebc514c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 546adb3571a15077a0bc77e07ebfb8f1e7e2ee7e592677bffd0ce0c3709a12f2
MD5 d296a60a5bcdf21aa0ed282a330733f2
BLAKE2b-256 83f8f82d3cd5e6b2c2c2dae46be4ce9aac0a1384c9ebe8ada33b31d18dfe8743

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 429f61e43ff69e042553078cd0ad08656f88c9141b3682a6e5489fec13b16573
MD5 daf4aed30182a53770de5ac4eab777f8
BLAKE2b-256 716a360de20d6e5b2ab15e0d4b459906a668585fe1fe308fdc7cd697e0505ef8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 7cb292808af26b344f5032bdd8c8f8c9a83ad4125db0e46dfa03baf1d609e12d
MD5 8b4d53a88e174627881e7bc7940039b4
BLAKE2b-256 c7a0ee58887a634c5a612d7865da7d2d60645c340a6fdb634a02df0f39ade5cd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0f6a81c4de82759408971c2040abb997576b280ff876cdf5091f462e3bb27aa0
MD5 c634c0feaa0fbe107987bfbcc1662b2b
BLAKE2b-256 3f355b3f8fb9ac7df1bab0bf3a2b164d694abc8a369306a95d1f161f28b5bfeb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 ffed956d6702da2cad4c27ac58086b2e725bf9149f24c44e4ece6ccfa20ebf69
MD5 d97403d50f544689072bb3e00a55aa1a
BLAKE2b-256 2cf91fdc10569766afa96b515cb14b54892fcf2ce91656f4b03a6b124a033b06

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b0e5d8ff1108202c682102e3ce1b90362af5d81af53e4fac1cc382f56e2f0114
MD5 6037863a7f99187981f76b11db228d83
BLAKE2b-256 8ef8c0e41bcba653808cc312edcb8c5b5b283c7178c04f93547b79cc4f90ed67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp311-cp311-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 0347e8df3c6f205c565e1cceff6dabc9c3c6c110107afbad8766f85f91bd3637
MD5 9ae42dc6c2b22c31a3a9793e8a97a1c9
BLAKE2b-256 b8edb9db8f1bf14b0505abcf2896ea08bc36069cc2042848cbf34cb74ab55011

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.3-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 460.5 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.3-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 6b696cdd8dee4d50682950ed0132c02354685573709680c0f090d034a0ca9ffd
MD5 bd0e5f0c70837600a715d536a4a1e452
BLAKE2b-256 719b3b3b2d72f659505a4ca5a552071adc5b9bc85ccabe7c67070c5b8be1e211

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.3-cp310-cp310-win32.whl
  • Upload date:
  • Size: 286.6 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.3-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 99d9b00330eb9b8ee438a2f89b22b1b7b5f3d2a6fa7f15c8cd08e62adba3d709
MD5 d4449112d871ecc10931a8702b70effe
BLAKE2b-256 ba9872ec6367a70023c9f90358b10bc05ee3b3b94636e6854d35ba3fca90d199

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 35af7c4c41f460775408decb40ad2acc77435b44a85e225b031dc10052a67683
MD5 bb9824c258e0afb3d1ac9b312b29ac1e
BLAKE2b-256 c47dc2741bbba08a34b36303495f1c5b37c401d9a931ac03a80c3bc1e7f8bc52

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 73d0e41a7165e8e9e0d8db79bffe4b1cacd45402d41e945a35d62496d677a4a8
MD5 aedbb862392a770a5d1e5f4d01ef4af3
BLAKE2b-256 cf0c668247cb672e203b9ca341aa3cfc9c245d4cd1a1b62d53d2afa7416540b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 2797f21c430039611f7457764fb462934ee06075b69decb872c1954e6e6f0005
MD5 deffb05e7f8be72ce0cd405c3fa3f145
BLAKE2b-256 0a214e39b862cb0af6ceaa4db9426e24e130d9840f3458814498275219433758

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 7aca2c02b02c180b209843d7db4563379c0926188c622298d1e812d6fc494257
MD5 b0e330d9e8f3b2e7b7f4d1aeb99ce735
BLAKE2b-256 f3ec92663827cdc6222ed86c4e2404942a502ce14edd9b6eaedbae0591f08c38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 9c8c6ad3596b6ea6b8f945c7e1c3ba170d4a83e2d51d915fc93591aee85f951b
MD5 ceb4b33225418dff8f6807563bdbaaf5
BLAKE2b-256 518ae42d95f05cd1d5b9d4918ecdb4227f929b1449d5736e18919ff81b99d295

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 3166c3cf411928e31a2f605547f8dfd549bf5b6e497da6efaa6baad78eca0613
MD5 4cd38eabe02909e96ff6ac293005ebbb
BLAKE2b-256 c993bc818c1c478829c87ec0d24c14eefb84c91870c2490f2a95dccfe2cd96da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 061599a797e84af1b33ce44b546b667e69f37e5b65219782d858d40bb6dbc703
MD5 483ba51da706d35c66d064fa12f1ed3f
BLAKE2b-256 2f3beb2d34b57e9ea89bbeb37889b8bbdedafd61f668d82a2ab5a9e5b86a313e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 4bf2929c2f14b19b2bf270205bcde785e543fe1517db135f60a5a98b3561b7cd
MD5 4c97ec659857f3ade57651011037d332
BLAKE2b-256 15b27b0d26682204b240047a2fdb3307b27dd2e7dd20792485f81340929d8739

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.3-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.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b659e381dab67ba32ab52be55f0113f65826d1dc4055b362a723365e5a83aebd
MD5 55981e35cd5944037472298c74744184
BLAKE2b-256 69bb8b4255a31e06409d6efd0930bbd8f035342b3bd4cce796932b6522eadabc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 139cd3aa95e3a5601d2875f611d93eef50b4bad417a230f1fdd1a38e5e756fb9
MD5 c2f2f0c1136ec0b667f3908ee428a15a
BLAKE2b-256 fcb8cc437e19293aa0b7884b0221c85d0e7f3c426b3db5be6fe8c866ed51be56

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 f59569011f9cb07c8e08c845c7cb0e704bfcaa8c67e2197394b5fb9f562199db
MD5 bc81279c82b23e4ead25e8b844f93452
BLAKE2b-256 bc2e6d83c7bab62bdcac19bbec8acbf0cea89bf3f81c28f20dac1445dd32695a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 376ad0db1c489ae6d9b0b71ed4e438c9036ad120fbb38d06cc59562939d092ab
MD5 b5e6b102c58ab2ddcc621876beb6d3ab
BLAKE2b-256 ea96ddf5bf3f1d6c8f0ea7ffd10738c22a27eb70ea2ea278ed3280faafbd4c9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6aa9ad8acdf4359efaed66c29567cf455fe708c00d96d60b8fc374eddc2c4a9a
MD5 cef3bf940c173fa82f8519991cf0dc56
BLAKE2b-256 d83ae1b5020073d637b5f8db0fb25ae57b4365c1e1c7280b85d52a7b71595462

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 5f3a6c6610a7627a21f4c46479491326936c97d86b90d7c0057cab3ceaef5f13
MD5 a7593e7671fc795ab44261f71800d02e
BLAKE2b-256 0452fd94c04d39ca5ef65252e4e24f72a9e122320c420553e7b2b340ce865661

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c1fbf5b61585f29b6e5a1ae3a2125ec54e18e4eb52c3c4b44a14356b39c1b562
MD5 c4d26c83d787815aa230ff58132c09d5
BLAKE2b-256 452f9d14d3a190d72edac593e3059c1ae11a8d5b06d4873db771befd39faf4ac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.3-cp310-cp310-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 114bd39c2d17f0288d23d710cdf68e11fa6088684148645496a61817418e6f4f
MD5 6c3d6edda7e213d9afee7685a6c38b90
BLAKE2b-256 77aeb517c45d442442617258102ffb5583aaa4ed19612f308d8649cf3a995421

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