Repolode
ashvardanian

ashvardanian/StringZilla

Biblioteca de strings acelerada por SIMD e SWAR para C, C++, Python, Rust, JavaScript, Go e outras linguagens, com busca, hashing, ordenação e distâncias de edição.

Estrelas
3,574
Forks
145
Issues abertas
33
Último commit
há 12 horas

O que é?

StringZilla é uma biblioteca de processamento de texto que usa instruções SIMD e SWAR da CPU para acelerar operações comuns com strings, como busca por substring e conjunto de caracteres, hashing, ordenação, cálculo de distâncias de Levenshtein e pontuações de alinhamento, além de conversão de maiúsculas e minúsculas e segmentação Unicode. Ela foi projetada para complementar diretamente as APIs padrão: por exemplo, Python's str.find, C's strstr e C++'s std::string::find têm equivalentes diretos no StringZilla.

O núcleo é uma biblioteca C em um único header, com um wrapper em C++, e há bindings para Python, Rust, JavaScript, Swift, Go, C# e Java. Uma segunda camada, StringZillas, adiciona backends paralelos para CPU e GPU CUDA para calcular distâncias de edição em lote, pontuações de alinhamento e fingerprints deslizantes. O projeto também inclui uma função de hash baseada em instruções AES e implementações de SHA-256 que usam extensões de hardware SHA quando disponíveis.

A biblioteca oferece suporte a x86, Arm, RISC-V, PowerPC e WebAssembly e busca ser portátil entre diferentes endianness, tamanhos de palavra e sistemas operacionais. O nível de maturidade varia conforme o binding, e o projeto indica que algumas funções Unicode ainda estão em desenvolvimento ativo.

Recursos principais

  • 01Busca por substring e conjunto de caracteres acelerada por instruções SIMD e SWAR.
  • 02Hashing com uma função de 64 bits baseada em AES e SHA-256 acelerado por hardware.
  • 03Ordenação e interseção de conjuntos em coleções de strings.
  • 04Distâncias de Levenshtein e Needleman-Wunsch, com execução em lote na GPU via CUDA.
  • 05Conversão de maiúsculas e minúsculas Unicode, processamento de UTF-8 e segmentação TR29.
  • 06Bindings para C, C++, Python, Rust, JavaScript, Swift, Go, C# e Java.

Casos de uso

  • Acelerar pipelines de dados com uso intenso de texto que analisam grandes corpora.
  • Substituir chamadas lentas de busca por substring ou hashing em serviços sensíveis a desempenho.
  • Calcular em lote distâncias de edição ou pontuações de alinhamento para cargas de trabalho de bioinformática ou busca.
  • Acelerar operações no estilo LIKE, ORDER BY e GROUP BY dentro de um mecanismo de banco de dados.

Início rápido

  1. 1

    Instale o pacote Python

    pip install stringzilla
  2. 2

    Use-o no Python em vez de str

Antes de usar

  • Nem todos os recursos estão disponíveis em todos os bindings de linguagem.
  • Vários recursos de Unicode (normalização, segmentação e detecção de quebras de linha) ainda são considerados trabalhos em andamento.

Tópicos

Perguntas frequentes

O que é StringZilla?
Biblioteca de strings acelerada por SIMD e SWAR para C, C++, Python, Rust, JavaScript, Go e outras linguagens, com busca, hashing, ordenação e distâncias de edição. StringZilla é uma biblioteca de processamento de texto que usa instruções SIMD e SWAR da CPU para acelerar operações comuns com strings, como busca por substring e conjunto de caracteres, hashing, ordenação, cálculo de distâncias de Levenshtein e pontuações de alinhamento, além de conversão de maiúsculas e minúsculas e segmentação Unicode. Ela foi projetada para complementar diretamente as APIs padrão: por exemplo, Python's str.find, C's strstr e C++'s std::string::find têm equivalentes diretos no StringZilla.
StringZilla é gratuito? Qual é a licença?
StringZilla é open source sob a licença Apache-2.0. Confira os termos da licença antes de usá-lo em produtos comerciais.
StringZilla ainda é mantido?
Manutenção ativa. O último commit de StringZilla foi em 22 de out. de 2026.
Para que posso usar StringZilla?
Acelerar pipelines de dados com uso intenso de texto que analisam grandes corpora. Substituir chamadas lentas de busca por substring ou hashing em serviços sensíveis a desempenho. Calcular em lote distâncias de edição ou pontuações de alinhamento para cargas de trabalho de bioinformática ou busca. Acelerar operações no estilo LIKE, ORDER BY e GROUP BY dentro de um mecanismo de banco de dados.
Como instalar StringZilla?
Instale o pacote Python: pip install stringzilla Use-o no Python em vez de str
Onde consigo StringZilla?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/ashvardanian/StringZilla

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados