Uma biblioteca de formatação para C++ que oferece uma alternativa rápida e segura quanto aos tipos a C stdio e iostreams, implementando std::format do C++20.
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
Instale o pacote Python
pip install stringzilla - 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
Um parser JSON em C++ que usa instruções SIMD para processar gigabytes de JSON por segundo com validação completa.
Framework aberto de compilação de machine learning que permite personalizar pipelines de compilação em Python e implantar modelos em diversos alvos de hardware.
Biblioteca Python para comparar objetos aninhados, pesquisar dentro deles, gerar hashes baseados no conteúdo e armazenar e aplicar diferenças como deltas.
Framework de TUI para Go baseado na Elm Architecture, com layout compatível com Unicode, renderização inline ou em tela cheia e uma biblioteca de componentes.
Ferramenta de linha de comando rápida e otimizada com SIMD, além de biblioteca Node.js, que compara imagens pixel a pixel e gera uma imagem de diferenças.