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.2.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.2-cp314-cp314-win_arm64.whl (404.6 kB view details)

Uploaded CPython 3.14Windows ARM64

stringzilla-5.0.2-cp314-cp314-win_amd64.whl (475.0 kB view details)

Uploaded CPython 3.14Windows x86-64

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

Uploaded CPython 3.14Windows x86

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

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.14musllinux: musl 1.2+ s390x

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

Uploaded CPython 3.14musllinux: musl 1.2+ riscv64

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

Uploaded CPython 3.14musllinux: musl 1.2+ ppc64le

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

Uploaded CPython 3.14musllinux: musl 1.2+ i686

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

Uploaded CPython 3.14musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

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

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

stringzilla-5.0.2-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.2-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (833.8 kB view details)

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

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

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

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

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

stringzilla-5.0.2-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.2-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (797.5 kB view details)

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

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

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.15+ x86-64

stringzilla-5.0.2-cp313-cp313-win_arm64.whl (388.2 kB view details)

Uploaded CPython 3.13Windows ARM64

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

Uploaded CPython 3.13Windows x86-64

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

Uploaded CPython 3.13Windows x86

stringzilla-5.0.2-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.2-cp313-cp313-musllinux_1_2_s390x.whl (824.4 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ s390x

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

Uploaded CPython 3.13musllinux: musl 1.2+ riscv64

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

Uploaded CPython 3.13musllinux: musl 1.2+ ppc64le

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

Uploaded CPython 3.13musllinux: musl 1.2+ i686

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

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

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

stringzilla-5.0.2-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.2-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (834.3 kB view details)

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

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

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

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

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

stringzilla-5.0.2-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.2-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (797.3 kB view details)

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

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

Uploaded CPython 3.13macOS 11.0+ ARM64

stringzilla-5.0.2-cp313-cp313-macosx_10_13_x86_64.whl (398.1 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

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

Uploaded CPython 3.12Windows ARM64

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

Uploaded CPython 3.12Windows x86-64

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

Uploaded CPython 3.12Windows x86

stringzilla-5.0.2-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.2-cp312-cp312-musllinux_1_2_s390x.whl (824.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ s390x

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

Uploaded CPython 3.12musllinux: musl 1.2+ riscv64

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

Uploaded CPython 3.12musllinux: musl 1.2+ ppc64le

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

Uploaded CPython 3.12musllinux: musl 1.2+ i686

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

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

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

stringzilla-5.0.2-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.2-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (834.2 kB view details)

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

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

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

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

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

stringzilla-5.0.2-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.2-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (797.3 kB view details)

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

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.13+ x86-64

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

Uploaded CPython 3.11Windows ARM64

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

Uploaded CPython 3.11Windows x86-64

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

Uploaded CPython 3.11Windows x86

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

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

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

Uploaded CPython 3.11musllinux: musl 1.2+ s390x

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

Uploaded CPython 3.11musllinux: musl 1.2+ riscv64

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

Uploaded CPython 3.11musllinux: musl 1.2+ ppc64le

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

Uploaded CPython 3.11musllinux: musl 1.2+ i686

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

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

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

stringzilla-5.0.2-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.2-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (832.6 kB view details)

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

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

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

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

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

stringzilla-5.0.2-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.2-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (796.9 kB view details)

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

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.13+ x86-64

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

Uploaded CPython 3.10Windows x86-64

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

Uploaded CPython 3.10Windows x86

stringzilla-5.0.2-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.2-cp310-cp310-musllinux_1_2_s390x.whl (813.5 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ s390x

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

Uploaded CPython 3.10musllinux: musl 1.2+ riscv64

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

Uploaded CPython 3.10musllinux: musl 1.2+ ppc64le

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

Uploaded CPython 3.10musllinux: musl 1.2+ i686

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARMv7l

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

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

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

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

stringzilla-5.0.2-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.2-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl (825.0 kB view details)

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

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

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

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

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

stringzilla-5.0.2-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.2-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl (790.3 kB view details)

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

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.10macOS 10.13+ x86-64

File details

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

File metadata

  • Download URL: stringzilla-5.0.2.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.2.tar.gz
Algorithm Hash digest
SHA256 27f9601165773f762b87c30c618382fcb22c65c760c962791575e7a99762bf8e
MD5 c101b2f86d373cff2d08969fcf2608ae
BLAKE2b-256 d07b25d14b021842f9a04becf90163825041948df2b07c2dd85d480337d567c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 bf7fe44c19fb2a333945829a6114aaf4fe1d21a251b918d4eca5edbaebd9ddd1
MD5 4370dafdab24253629690884fb651fdc
BLAKE2b-256 3527cfb8888cc700ec4828e161b0dcf81ab5b044b7876e773c9171eabf7c833a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: stringzilla-5.0.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 475.0 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.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 8a9bca66a24d5c67d9d7a3ff9272508671c9567be734c88e3921a1f28de470bf
MD5 da1277d7b206acc7d2a6a7abfad66487
BLAKE2b-256 70869b4dc099078b59c855df19fd23c30f586d3dc906713fa186d0d93208adf3

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 29c883cddbcd30533b84ee244e698585ade1ca533fe9d31bda90c8896e5824df
MD5 b9a2b9eb2e5db43c1778ab056aedcc86
BLAKE2b-256 7681b6b820c39baf8fe43874f825a627c03f64787b1494da20a625f17b651453

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b5efb2efc47d995cdfdfe5264d935987fe84111e10a8a9cf2359e8f5775d0220
MD5 21db605783eda662b2b151bb5b0f0694
BLAKE2b-256 f9e82701c4d030410dbbde7b5ce979bbf064df8c802ad6c5dfa6585840626d9c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 19bd04d88b80e5d79500a8aed7b1397473f507d5e0e06b51cb72cc20d0aefa3d
MD5 604a0823723b9d615503a553fac6a38c
BLAKE2b-256 7bde40cdada14cb5943e36afe5b8a59e245e2e9a52cdfb26d39dada28c09a666

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 0b107244bf8adffd6de9eb6dd6dcfd95adc071567710c5120beec1a1feb96c8d
MD5 6957f35197e7ead5a229e60aaa5d24f8
BLAKE2b-256 5ca185b5babc602188df4a38ea8e196576717deb98e9a653817559fdba482f5c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 c4da15606e92e4e27ec5961c4186724ca2fd428ec028b4fd7c7707611b769200
MD5 2593dc9503bad34fc6e96dc4224cb110
BLAKE2b-256 0b7427a8f1ace05f6407dd7e0072873793e7546b7ba25778873222e6a68e9429

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 e793064eb41e86df6912b7dae79beefb9e2131fa9f2d2ac0ccac055d88b16983
MD5 18871d6a9a749425521143cc91d29a3c
BLAKE2b-256 79983a0991275ac0d84277d5f62d383f4b3f6fca8c3c1d30a266a0d12199eb19

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 0d0380a51ee70b2b7485867b1acb242dc9f2d220856d77c887bd1aa457840d29
MD5 49f5b5a57481168bcd31cc01f2c96efa
BLAKE2b-256 6dde074751b9fe1c4f1a183e54c669099c9dc96d5cb738c39c9d4d04a2a5f1d1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 725072e7e11838b16f0ad1bb8d297748c69f8c2aacf55f054fb029d19e9f3956
MD5 b555ddccf51d5b5bae0b7023f4aefb8d
BLAKE2b-256 415bbc7f2ff627f168ed32afdae0346c4e6dee5ce624745c2f8ea3ce9b34b7f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 20beae0dc3d6532fefc7f14af5aafb122064a9890a67ad586fce39282a34e87d
MD5 94eae25439f919a899a1d0fd76354067
BLAKE2b-256 18eed0690422150ed168ab9a77b30ee50199b3dc1d2f1dd56e60813caa4144ef

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.2-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.2-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d40b7cb972a96dc20ff7d1979b1697f484a9a7e60477587a90bfbfff378983f1
MD5 f6778383a5d87640148f1d67007ebba3
BLAKE2b-256 98154e6ef27156fa3e65bd6f6cd16913dd390d7a937b7008e6eb3d7d6b53c390

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 571167afcdadfffc7beff68c52d1ee47991c2be6e5758dca9ffdb59bf6556eab
MD5 a83a790ddb72e9e02af17aa65ce4cd92
BLAKE2b-256 42468dd80bb4f6e679ef1d2cc98556324f9a0e78eaf3ef640d33a9c055a830b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 76b42ba4c0bf0ff4a1800783599048232904fa50f509d10d003666455853b8d8
MD5 1f7696c34f39f14024c92488796fa6aa
BLAKE2b-256 5683aec3a23c3e03045efea379c475013aa7de6ca78386c8775884e8c72c94cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 bbe73740552878ce7a927d29baa219206c80f0391d51ad843b2252bd771b796b
MD5 20ffb935591cc725020e4a37be92b3d1
BLAKE2b-256 c3d0d672412b379336fff7be18a756a863caf0d9db7a8a33c42c75d9b147780e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 b06d4e67465511f64cb24376fba0745c4b576189bd54a13ebc00d7a6c65b35ba
MD5 a72703bee9a4ca710c2650170e162301
BLAKE2b-256 813f75a53641f69c054c03fbb28a053a5859ca3f45261ff4a6ac0c468dcb86f3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 d64472f31d41357c8ba3e05ef148c47af6fb2d18f75050f3c596cb3e0283d004
MD5 9150acf86475d45183dddbbcbbbf44dc
BLAKE2b-256 ee5fef618a8a9b5111c71ee83fd98b1fe0e204975ddcb84f65a2cec60fa1cfd2

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 eee7411e3ac26543b99df342cd074c49485410a244d9f1e23696cae2456c3e07
MD5 3e6d7b697a711b241d3c4a4913e63bf0
BLAKE2b-256 f8d5d751b9de2d077cbb10368d61c15b951e690be47c8c1072781c04bc4d85a7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 a2a656383423b7f69a3bc0dc11e1e3bacba360a344c82a6dcc5d3fb8444f99fd
MD5 f46cad729441b39540621c6577feb632
BLAKE2b-256 6d7d9685df9e613857b284aefd1d6a83b5a53bbd11f59a0093aa3c8591788018

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 fadbec3d3d4d903e19909bbdca21f8f683ea91b8afe8dec5c9ad73c32d891305
MD5 54ff960c408f0fb5ce4cd0cbb51d50d4
BLAKE2b-256 b17e07f03a4e074f769fb217af9890d68be2e9ae85dc46b88f775a7adc608b67

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 1a4a1173df082c3ed5cbc877f5de757debcfbdcfa8e33fac63a73e224fb7d209
MD5 3fb29257534002da68117f1218a23b93
BLAKE2b-256 8e6bdd88bfbf5a1a20e9b26b2ffa08501de058968cb497ec93cf3dbc475102ba

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 0ac37f30dd145877ee29bd0163ee5416241e81ee9b172b3ddeadb95587d3ea70
MD5 e20f4dfc764e14624836635b4af1e131
BLAKE2b-256 54f7f31dc8d8d30e901350a23411a66af8b8bf67233e7b5c55fee2e11843a172

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 bc49e384d72484b6e854567c118a4f62116136fdab012324bdee3320e3677f68
MD5 251f1c75cb4a7c6b12b9c4eab755b20d
BLAKE2b-256 d6fd29680de498a4d2876c33482322bcf9f5d7a600337cb0cd5a6d7d7469baef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 19e3b63ddefbf9a17718e516c012d634dd55abfb49aae1a826a0a578fe91f2ca
MD5 d2587006043e1ae1beffe31d6aa2c4c8
BLAKE2b-256 18cb631193000ec38da1ff3968316c1e53c2a28750e3237bf99cae9ae1f0a28d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 619c101bb9ebc766ffb76442e27e3caa629128b615e0f422329b88f822c12470
MD5 fe4173196624f49eac91c47e49c2cd46
BLAKE2b-256 bae10679e077ab0121855cf1061a965453f69e3cf53ef5f35026e84ec11ab464

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 0b7898ba30da1c452263c24f3831c71cad44701051e9e409ffb2688d1d7b4d97
MD5 090e470d598db815870fc4e2dcec1bca
BLAKE2b-256 3fa22866f41935f44cb6fafb5e3975d6d03ab191f8c66d0ca017c32885086a8b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 829deac3faaca6f470a475107de98b49cd95a8540cc9a73cc7bcab26febdb61a
MD5 c26016b14388cb6dac68f491b74b51db
BLAKE2b-256 3669357df0264a6d21b6eeeedce8d68713224027a86115422b6b6632fa421a54

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 8acb9439fe9eaa2f79826b135b761e6af0d07abc3bc5877f9c21a6e096b81231
MD5 30c32992d8aa9d523fe56461b62fab70
BLAKE2b-256 4115b3fb6399fc89ae4350e21ac21109e836926f61758e086c3194a007c1f88b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fa12facfc060567429b7ef20d8683d4ea8d428f4c7a97e9b095c8e8a3dbfc014
MD5 92fef2841e1c402c2f4451731e127224
BLAKE2b-256 e65d30f76578775c31b773523a4707045c083c186781dcfa4171cfc8acb0dc9e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 d8f3998354af8bd4bf272e4bdbfffb5ddedcaeafa8c60f65c0b4e8e5a9d116b5
MD5 4bd75588885f2fe23ab816e1cb834b53
BLAKE2b-256 7779f742172fcf3645ceb7a80297b9dbe7c6dc02d9b2f646c9db4a641083d03f

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.2-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.2-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 334f8790e0f7c73e5bd3ddb2250ab7b8c1fc6c85bb1f7abf534ef6c50c187081
MD5 c69ffead57dcb2811c98195cbbafb397
BLAKE2b-256 5f32403c3c473493cc26154f89a47317a51cdf60999ae766c1af86ab271a8628

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 21e15883cdf286d4038753898df29723d2f5efe989c89d82689524a829f1bc34
MD5 1792362fedb79839ade5f9b571a3d5b9
BLAKE2b-256 6b75d5792121fbc78ea1c733bce53490dad757ea6fe365b1c05b5a44900393b1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 9cd2d13e36ff52efccd06c680520305687deec8e4c58d25af27895fc1571d83c
MD5 f7bdd836ea590fcac92bf9a931707336
BLAKE2b-256 66c748fd3f63afa6738223a053effe39bbeb7c9c8fefde45614f0429810f94f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 5aee64d2e0350364faff5190645479c66796ce6860f51a23d4c8223347c14b08
MD5 ca006d9d0f7dcb52e276ad23dacd496a
BLAKE2b-256 f41b4b17ffdf52c9161e0d81957384f0a79e6e6ae12178dbc17ca01c28401d97

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 cbf0890b4a951f508c5ecdc35e790bb3d10cd005dabcedca29041556461f0dda
MD5 40fc7d0487da8b0bd9bc53f00d5ac1c1
BLAKE2b-256 4a7b1e363bd4454ff23577d9c162fd584393f7888457a508ba53d4035337e379

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 0d20ebb1b4b82106b485cc4c9626e8cb1fcfbb8a75fbfa800471de04d375cea4
MD5 bc95236b1fbfb893283dff236b2a1c2d
BLAKE2b-256 eb5d1e3fe7d001c6e1a6c327ae63c3696f7b58c600340b998e407c52852d769f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 da052bd1141b681dcdf44bf194498d0d5a2aea805445f2830e81859182a21d3b
MD5 24f54e9de49690536a19fe3bf40cf020
BLAKE2b-256 b538ca6ab5d416ca57f8d57dede8836452172f1acc61e5dc50e76e4b4e59e594

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 5be7c27002d3470de0db35ea9dc9afa283c02d4e2a09c14dcdbc953ed84506ad
MD5 fab497091f037cc28d6c1f12c5f1ce87
BLAKE2b-256 3e910b94ea5452c39ce3fbbd3d0b30957e5c5e8b335b3e9e7380c61f2a446e0c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 da458fbf963358469a2b3c5629875f00609206bb1cadf845a8498cddc6f86b6b
MD5 880a5788143beb573dcffeac30f7576d
BLAKE2b-256 3a9436999a502e3ab127c93ddd699438096b0d0c7b66ff983dbb32c0c4d70cce

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 6440950fbab5961a55fd46327ecf7e0460e8cb72e89499e7d1c74c7e8f373715
MD5 60d9fb70b05fbbea2168925605e73273
BLAKE2b-256 39f887381c23f018a8725ee31665ce8a0dc7ddf0c53c2f8be59088bb7d29af3d

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 a14346a56131fd76d89159bb731d049bc12c44c81a0c946c72734b19faeb33e6
MD5 47b6027cc03153fd943ff416a11208af
BLAKE2b-256 55e7859253fd8a29f723f864f90e4c068da42b6e4e46ba8622e47254f6f3dbee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 59d2e0457077e0a7c09333942a08bcbddab69e642209f910aefb4fcd383b6157
MD5 84539e85c6ced9eb062e9c606d81781b
BLAKE2b-256 19b6987d95dcd62ccfa19075643dd38f606b8f98d367c992375bf1d57b610fb9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 b1330372d6bdfc54188c64530252bb50aa399d69152b356f309c1520595809b8
MD5 bed18422cff4b116370fed681d9705d2
BLAKE2b-256 a868eb7e93534d9346646712a410b063643b0a3630a527ecb9287a9134334108

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 71e8f4f866250b28801ba4a2a87105764418b044d58fad27fd70b1e380b7957e
MD5 f67742b3188a22f5bc3190c266b05192
BLAKE2b-256 574867effe4e65e1233fd226f0de23d8b3b695d6538f5f513b8f1770cfd43bed

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 4a6436b024251a2493ab56f52c9aeeb7f003af6af37ae978ba195fde88c93c65
MD5 c795bd0a0d1896fe6e513c84f13751e3
BLAKE2b-256 30b40b61ea6b66cf1cdd84b13d9e728a7f54c3e1f151ec9eb1a56f07cdfa08c4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 cb874d929b2f32fb5579341ed5fdb00d0ea9cf659d2028cc7542ec096f80f481
MD5 125570a5f132125518729bdb9930cc42
BLAKE2b-256 651fb5ccbde326860f99afbeb7dc8a2ff667d6c77c4e6c38be309712ebeb5442

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 f1adb35f3462ad593dea421fd29e668f90b17200c1a1478b7437a7c7f1b3d9f4
MD5 c9d5bf998989ea1273c92e2dc26e19c5
BLAKE2b-256 3340945b6adb37985e40349c6b689d49123f2f49693ff352921d049c73b5673e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 de71938024efdb620388a732d508e7dd163c52dacc38353db9188d3d78a8fc82
MD5 a802acf214a7cfcb068f020b2a35bc4c
BLAKE2b-256 8afebc4c4d687a0a038890acefbef1bbe40285557409913392b15d2536c9c135

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 36c02a64d4d5d2453b2087ac5dd750469c265a2e6896e674064497f54827123a
MD5 9d9b125b8a216733d2b35cf5ef32c44d
BLAKE2b-256 6e61c77edfba050b7b11d9288c6eac8e8252658d352b0bc5223365c8fd54d263

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.2-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.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 35ababc6dd280cb5bf72a7b23e545a0c0571c5056a9a9022f584a8a93cfe82bc
MD5 a807faa085149191b6881b62f6873ba8
BLAKE2b-256 4e1e2666e1c1c3b754064140ec8f765de3efec2f63cf3a2ef3c71f7580cd82fa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 bc7618aa34db76441047cd9c5bc78dfcaecc1360fcde0ae86b66d47b0e8715ab
MD5 ace7411275519fa41eddfcc89fc53dcc
BLAKE2b-256 6c1e849ddc6e0e8165faadbe7a720e3d455adb224bdf2fcd547e51a4b8aa6999

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 19d1643f61e66b310cadd446f8db4ff13b3d3e51845bc7efb205df284f676684
MD5 da6d4b9d2a7a163ac7dd0a8b676ff052
BLAKE2b-256 f9b36aea67106794bb03b2d1b6e8ad6f821b7d7bd65d9857e04aaa6d35688f78

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 d4aa55d8b4a99e595a021f7afba5c472244739b7a6f54425a7155ebf976103c2
MD5 cdee0530406034345ff9dd6a85e9f498
BLAKE2b-256 23b2441de6f66ef2de3654e271fd19b539d0f41ea96968287317edd311622c0e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 23afff1cdcfb20974127a487049dc03866643d63fb5458f106eb71babc7407e9
MD5 c8cae5c6414bbaa03941654a8c7a4f84
BLAKE2b-256 b76906bbc08ebf9428a3698dea858aa3036845c30c9df67adc26293bd724b273

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 62e92b5fd2cca72df6bc524959ce4c4eddcc205e1d2233621c2f6d0605763dd5
MD5 ba868e24b005753c6f7206aa0c45c5e3
BLAKE2b-256 38e3f9274f120d22ba0c3b206c944a99b4f1f1e2356119bca09693f6a6021127

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8276ae89ea3e6effa5ff236f82f3124ba9f0824a3b72b082c544548503a7e32c
MD5 0ba490aac75ad17f86bb0f82879d6f8c
BLAKE2b-256 7f3797a5e0270686c05fec31f529eaee9fa7b1ad92cbc7e047a3f84a6d5026d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 a6e4a3e6fa5290d0ff5c2623a6d29d4c769234daca0bd7eee67e53b9127b08ed
MD5 0eb7d6618663c2e1035028fd905339a7
BLAKE2b-256 15e540f379bcf927ec5c90d2bcf2037a6498d1014c193b42187336028a64064a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 16f0fe67077a7d51149936f37e2598584f7d0e23cb9debdb885a09486656265d
MD5 0e1bebbc7e61af34305b352623054272
BLAKE2b-256 c14f8599ce7d0a44f040f1419fdd5766816b6af753c33cbee299424f6dd5a863

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 25ccc5f66e602ecb4d9369f2a28c70e4d936164427cd22e47a3a0b719fecc95a
MD5 6adccf609a7daae5787d759d78cc0852
BLAKE2b-256 4b468fcc9c51eb2bd8191c99b3fbbbca19e72624b3db630b9f7030a18abfadb1

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 5e6b3667a12ba797806500e4ebf93904641e519e48bc25a2ce32e00b74a2f2c0
MD5 fcb39d6da7311922839d26efc758c130
BLAKE2b-256 a60203c7a3b08caa909f89f5df7a5018dd220f2555928d61f367e62af4cf9f78

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 fe92bbd1f3ed07f494e455bdf4ae07919c0ececf10f60a3371f196e31daaf427
MD5 b864479e4b687a4b062db2a8e51a1a4c
BLAKE2b-256 1c53740f946cbfc956e8f1374c117fc7fd4f2cab23853db15aed7d51439fe4d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 0355bc55df6640b27dad4d1984329a22b704346112e48f37e712781c447d89bd
MD5 be1367bad2861f3e9ce7e237589d38ef
BLAKE2b-256 ddebd14f7baad79f48f7d1b2fba76a661a05a7367826ceb2fbf5c1c37e5a5805

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 30e2df8e1d41cdb30bbb3d63bdbd40830c29923de9f564229563cb54fd3be158
MD5 98fac9cfd823b2b151211f48935ba88d
BLAKE2b-256 82c2faf8458791ab5336aa8a759c59605f068877bc93e404c304184618939bac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 1f47ffdf843137d63cce8a764f05d05af102f8f8cbd7b1604fd39d6234fd2da5
MD5 b37b725a1b2339906d7f5852327114d5
BLAKE2b-256 ebe6441e35b27a582cafd73cae1d8a055c39b96fe0b0d4c9bf46b1fdf59fbd00

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 5a5bd0f46ff3b565eb4a4652a065dc31f5861a99aa73954db4c2aaac0fa7454b
MD5 2b37997f118150423d40b0d11066ebca
BLAKE2b-256 2593e6b27bf296edc16d9fcf8974cf2174bec066ede5f7401cde3d16fa6af02e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 0dc28716ae8817a6ab1e7254b3c7d069d60165d15cdb0312aae5c8b9b5c87b44
MD5 101bbbc377ef6b16f86eab6acbb39e45
BLAKE2b-256 5f2a35a30e6747e56816e4bf7ed3a84faabde29fe1b0ecbb01d0960063660329

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 618af7272253a95845577337a4a51e2044701cd3fb63dc22acaddcb7a3730578
MD5 2ee7873fc2632fe87c4c8df6d260164c
BLAKE2b-256 88696c45288d25fedc09b12197de3c6d74dccc3a459d465089f8e92c9d103923

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 1a28e07bb5f066dfefdcae31da11d221654e7c62915050f41b30c628f04418e7
MD5 06193d55763ca3b386cbaf3b59024f10
BLAKE2b-256 9e127a3fdeccec89d71628d401dd423ea955a22d435bce9051e54bc333bb6b7e

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.2-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.2-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 694b251bbc2ffa65aa4877c77524b7d145d581898e54d4bd9c5a389645b38176
MD5 f8ccab42f7e9304c70d8cc9aecf79084
BLAKE2b-256 b6ea461262ebb472963f2eb337a36d53c2561588117e03049621a8cba92ec57f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 85df855a638f45d74e31e2e622437f0ee864e309abb047666f34ed7985b5a23d
MD5 305bfc79ce3012dfd0ebbcdbe8a2e646
BLAKE2b-256 0a51a5bb5c2e77acf0086da27db52f924cd1f446bcbc18b1b964c53951ae0d69

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 deefde5eb2c1f0e9165c24d9c957e116944c3471187fde72cf984c24d955e642
MD5 0431173022449ede2b302e7631663fca
BLAKE2b-256 05e577b505883945b36686a1a4b79ee38403da118428950cb84beae81ced04b6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 600146ba4cef11bafa3dc948a8f736838ae69f7426ccfc004a29cbcfa7852cff
MD5 c4ac42cce024ddd70ac1f1e05cccb5f5
BLAKE2b-256 e72c66e36f94c28b015c7b66a9f23ffcba594506304ba1e5199d66e7111129a1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 34b4c2c0babf143ba842c16e7eaac64727124fca421364099f264be50e4b5cba
MD5 4098e864adb64e080bef57373b3bc9b7
BLAKE2b-256 20dc99943e34387f6181b5458ccfc5ed9d474191474dbc279fd24e9ca5153330

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 d2455e87de2c9ea738940a488ff068095a0ad375da9f8b97c42d530ba64c2733
MD5 02f840c265851ef0a73d5400d43d1ead
BLAKE2b-256 189880c3e76149f51923757cdc56a500f11d9314710069d8d2938ec51498e8fb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 81afdf2f16cd4ebb9a3af43690cd12f942a2d98cd379b29bea4861cc167bf265
MD5 8550e413981756061eb9ee636df2d95a
BLAKE2b-256 b59b2e253e2c3e3cb2f1d5452836e4d373125208207b58952910d7b9a141ad75

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp311-cp311-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 02bdadec6bd4b13479d03c2aefd3e20763718c6c6f5619483e1d3804e77beb6a
MD5 ba04a7bc12ba06910140e81eaf4e7e7a
BLAKE2b-256 3c4197b0a6d5aae9324258066a20b2e2ade53b2b87ac82fa0214637144982027

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 aea880795b365a2d412e194cbbec86d96abc0814581e6b02c0f0f5997679bf93
MD5 2b276b26ca2a0af8cd3ecc3601d2526e
BLAKE2b-256 5b40e9a426762800c1e6ac24839de14bc5d9edac4f255e1eeba3070b4a3254a8

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 a927c104c6756289aca3d954cc38bfe621254e7eba266b86b7f97fd0e526f4e4
MD5 57dc94f2d11111c55aacb1bc79b58c10
BLAKE2b-256 e23f6daa60052c8b280e62424d4d456103f3a3b090a0f42033d5ffdcfb205e08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 5e8533aaabf7337ae7471e5e46315b3db9ae09bda2d7c3d2950c70fc39739658
MD5 cb339d0d86c74e2077b0c622679326f7
BLAKE2b-256 1707e02d2836b757698fe40efc923bb9aab34edeb7823c8b724e91b635f1fcac

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-musllinux_1_2_s390x.whl
Algorithm Hash digest
SHA256 06a8b7d7980a7dd734c173fbc5fdf30ecfd5fec76efd39edd9407d6ef39d2529
MD5 524d655e7036ed492ecf9a7fad365a08
BLAKE2b-256 28fa3dc85819f6cfafb1fb73cea294d3b3b418bfbeeb78f8ac4b596ecc3301c0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-musllinux_1_2_riscv64.whl
Algorithm Hash digest
SHA256 50ffde8dcb9ae4cef577ed6736972cac29a461b201e50d6fb488e11a3a8c47a1
MD5 ae893c2a11eef3da087deb5262216951
BLAKE2b-256 340b59f0c4ed4fb10d23b650016e7cbbc8f5c091beedb371ba57321832fed6a3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-musllinux_1_2_ppc64le.whl
Algorithm Hash digest
SHA256 f61d529fbec53a128d21cba058654b3a7877a84a3dd6f68501cbde15d380ffe7
MD5 5693d012fa4726ed0f9fdef84546b81a
BLAKE2b-256 42dc847388f185be2d454149da965f8b9d5aee92c5d66e869f0bb7b8bddc2dc3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-musllinux_1_2_i686.whl
Algorithm Hash digest
SHA256 f1f33015e02897ceb62a4b402029daf0678235d25bdbff3b2c1b2b57ed72f316
MD5 101a17f3f3a013e9d39d1470bd94c65e
BLAKE2b-256 6bbe6b8c2f75600b83bbde5e8bd2a1aeb8df20c643fba5a3300372e7baface57

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-musllinux_1_2_armv7l.whl
Algorithm Hash digest
SHA256 67af7db32214185dcad6b36e519ff9e642781fb552b4d3ec2fd847b3e30107eb
MD5 dd190c99500eac06e721262bb56c2715
BLAKE2b-256 ed5c944352514d9e1fb7ce63ae29678912deb3e2e947361ac8f5f40db4ac2794

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 399d8bac0bd1dc763c9987c7fc9d681b800192828689b94dade7decdedd3db75
MD5 d66a7ef44e4e758ad3d608ec57343b4c
BLAKE2b-256 798165c0595c4787b0ac0724d8cb097beb648ad667a8e92edb33c4383a59d72d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-manylinux_2_34_riscv64.manylinux_2_39_riscv64.whl
Algorithm Hash digest
SHA256 0670c3bf2a848df86bad93021b34ef06615995732a96cfc1af3782670e3234f1
MD5 036a08bb2bee634b4600e974d8caec0b
BLAKE2b-256 8abdddd352cb28bf3367b72aeec5988231f410ab8d776dbeda9cb05e8aa3a3ce

See more details on using hashes here.

File details

Details for the file stringzilla-5.0.2-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.2-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b7d8cbe3c6e002417d211887c99e4fd482c6dd56bc3f2eb20fa7837c1a0d844e
MD5 0bd007dc6f5b5c2f49f43751f0218a3f
BLAKE2b-256 a237a03ede67905809c11c9937d8296ea3e3a1c9930ce5ee2a0f03cf0f19b89d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl
Algorithm Hash digest
SHA256 69eb40031e2128425a1f5cba1c2bb50e54a53ea980ae767e1b7f24e50631a865
MD5 40bfd59289af2575679b2396bef3d12c
BLAKE2b-256 1413e7bb5306914bac2a967df6eeb2b47fb619e84fef0cc1db30617219a70560

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl
Algorithm Hash digest
SHA256 8e55be12c80df4f42aba0c78fe0eff9b648fc09aadc80b7594d90545e40e5ccd
MD5 5e7941bf515c09c80836ce5252a20acf
BLAKE2b-256 42c0b2c94657bcf3d0adbd9a915cafe6aaf8785d108eebc68f8de8cd0af9e1b5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-manylinux2014_armv7l.manylinux_2_17_armv7l.manylinux_2_31_armv7l.whl
Algorithm Hash digest
SHA256 c551526df14d46a12a3aa529646000f94511e46785fde0d6c72ec9967588ec26
MD5 b9c11511debccc52cb27a851dd6c48b4
BLAKE2b-256 296706336a5bb52847560744dadcf2e6eba2b805262ebeb8cb50232c38769cdb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 16c453002d36259b7709907cde4249d3b54c6ef5e21160f1d273792a6c165977
MD5 38de97af06a73f024daa5f37a4af1e9d
BLAKE2b-256 dcfa4ef9d88246065a53ff038c7bea48eb450cc47dccf875d8bcdc4d8fb730d4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-manylinux1_i686.manylinux_2_28_i686.manylinux_2_5_i686.whl
Algorithm Hash digest
SHA256 dbad69260dd3a0f918256019e45fec6d6faea02a3039c1b66b07803a6ebe32e6
MD5 7e460754174c979d0b2b1e3124cb52bb
BLAKE2b-256 60dde122064f969177e317d97ba9c1180d481eb5f3ff8c1102b5e9c313d85d35

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 23ae71645886b2beab23804ad0ac17bc5bb0f6d865fff4bc147a4023531f8296
MD5 d99e779f07842c6043577653fc5ee648
BLAKE2b-256 45fb9d581c8a62febc2a9323eaa2c63f12694c3de54907ccdde522ba694b3f08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for stringzilla-5.0.2-cp310-cp310-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 ff048967635b6a010887de7e13b2f17b9a3b743479967ee238b17cf42f4c43dd
MD5 9a7f4061699d67ac0371ee635766690a
BLAKE2b-256 c3e990efdf8fe14653a36f81bc2e7d9b4522d1ca6b53421cda5add6a770df1e3

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