Stringzilla

Latest version: v3.12.3

Safety actively analyzes 723158 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 1 of 13

128.64

Running benchmark using `testing.Benchmark`.
strings.Contains : 309 3818144 ns/op
sz.Contains : 664 1881251 ns/op
strings.Index : 325 3669081 ns/op
sz.Index : 624 1990093 ns/op
strings.LastIndex : 12 85201713 ns/op
sz.LastIndex : 494 2306318 ns/op
strings.IndexAny : 6321228 181.0 ns/op
sz.IndexAny : 10608960 112.6 ns/op
strings.Count : 156 8015292 ns/op
sz.Count (non-overlap) : 285 4206698 ns/op
sz.Count (overlap) : 284 4204370 ns/op


So if you are processing a lot of text in Go, try doing so with StringZilla and stay tuned for the upcoming 4.0 release 201 🥳

3.12.3

Patch

- Improve: C++ Lifetime bounds (caf5650)

3.12.2

Patch

- Fix: Horspool corner-case (216) (ffa4518)

3.12.1

Patch

- Fix: Uninitialized bad shift table (213) (d2480a5)

3.12.0

Together with MarkReedZ we've added basic GoLang bindings to StringZilla, which look surprisingly fast compared to native GoLang strings. We currently use the [new `cGo` annotations](https://dev.to/leapcell/go-124-released-massive-optimizations-key-upgrades-1mbn) available in [Go 1.24](https://tip.golang.org/doc/go1.24):

> Cgo has gained new capabilities in Go 1.24, supporting new C function annotations to improve runtime performance. Among them, `cgo noescape cFunctionName` is used to inform the compiler that the memory passed to `cFunctionname` will not escape; `cgo nocallback cFunctionName` indicates that this C function will not call back any Go functions. In addition, Cgo's inspection of multiple incompatible declarations of C functions has become more stringent. When there are incompatible declarations in different files, errors can be detected and reported more timely and accurately.

I was using an Intel Sapphire Rapids machine on AWS for preliminary testing and benchmarking. I've precompiled StringZilla with dynamic dispatch enabled, linked to the thin GoLang binding layer:

sh
$ ~/StringZilla/golang$ CGO_CFLAGS="-I$(pwd)/../include" \
CGO_LDFLAGS="-L$(pwd)/../build_golang -lstringzilla_shared" \
LD_LIBRARY_PATH="$(pwd)/../build_golang:$LD_LIBRARY_PATH" \
go run ../scripts/bench.go --input ../leipzig1M.txt --split lines --seed 42


... and compared to native GoLang strings on some key operations:

sh
Benchmarking on `../leipzig1M.txt` with seed 42.
Total input length: 129644797
Total lines: 1000000

3.11.3

Patch

- Improve: Pointer casting rules (a3f2f00)
- Docs: LLVM build instruction (89be0cb)

Page 1 of 13

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.