Repolode
ashvardanian

ashvardanian/StringZilla

Biblioteca de cadenas acelerada con SIMD y SWAR para C, C++, Python, Rust, JavaScript, Go y más; incluye búsqueda, hashing, ordenamiento y distancias de edición.

Estrellas
3,574
Forks
145
Issues abiertos
33
Último commit
hace 12 horas

¿Qué es?

StringZilla es una biblioteca de procesamiento de texto que utiliza instrucciones de CPU SIMD y SWAR para acelerar operaciones comunes con cadenas, como la búsqueda de subcadenas y conjuntos de caracteres, el hashing, el ordenamiento, el cálculo de distancias de Levenshtein y puntuaciones de alineamiento, y el plegado de mayúsculas y minúsculas y la segmentación Unicode. Está diseñada para complementar directamente las API estándar: por ejemplo, str.find de Python, strstr de C y std::string::find de C++ tienen equivalentes directos en StringZilla.

El núcleo es una biblioteca C de un solo encabezado con un wrapper de C++, y ofrece bindings para Python, Rust, JavaScript, Swift, Go, C# y Java. Una segunda capa, StringZillas, añade backends paralelos para CPU y GPU CUDA para calcular distancias de edición por lotes, puntuaciones de alineamiento y huellas digitales rodantes. El proyecto también incluye una función hash basada en instrucciones AES e implementaciones de SHA-256 que aprovechan las extensiones SHA del hardware cuando están disponibles.

La biblioteca es compatible con x86, Arm, RISC-V, PowerPC y WebAssembly, y busca ser portable entre distintas convenciones de endianness, tamaños de palabra y sistemas operativos. El grado de madurez varía según el binding, y el proyecto indica que algunas funciones Unicode aún están en desarrollo activo.

Funciones clave

  • 01Búsqueda de subcadenas y conjuntos de caracteres acelerada con instrucciones SIMD y SWAR.
  • 02Hashing con una función de 64 bits basada en AES y SHA-256 acelerado por hardware.
  • 03Ordenamiento e intersección de conjuntos de colecciones de cadenas.
  • 04Distancias de Levenshtein y Needleman-Wunsch, con ejecución por lotes en GPU mediante CUDA.
  • 05Plegado de mayúsculas y minúsculas en Unicode, manejo de UTF-8 y segmentación TR29.
  • 06Bindings para C, C++, Python, Rust, JavaScript, Swift, Go, C# y Java.

Casos de uso

  • Acelerar pipelines de datos con un uso intensivo de texto que procesan corpus grandes.
  • Reemplazar llamadas lentas de búsqueda de subcadenas o hashing en servicios sensibles al rendimiento.
  • Calcular por lotes distancias de edición o puntuaciones de alineamiento para cargas de trabajo de bioinformática o búsqueda.
  • Acelerar operaciones de tipo LIKE, ORDER BY y GROUP BY dentro de un motor de base de datos.

Inicio rápido

  1. 1

    Instala el paquete de Python

    pip install stringzilla
  2. 2

    Úsalo desde Python en lugar de str

Antes de usarlo

  • No todas las funciones están disponibles en todos los bindings de lenguaje.
  • Varias funciones de Unicode (normalización, segmentación y detección de saltos de línea) aún se consideran en desarrollo.

Temas

Preguntas frecuentes

¿Qué es StringZilla?
Biblioteca de cadenas acelerada con SIMD y SWAR para C, C++, Python, Rust, JavaScript, Go y más; incluye búsqueda, hashing, ordenamiento y distancias de edición. StringZilla es una biblioteca de procesamiento de texto que utiliza instrucciones de CPU SIMD y SWAR para acelerar operaciones comunes con cadenas, como la búsqueda de subcadenas y conjuntos de caracteres, el hashing, el ordenamiento, el cálculo de distancias de Levenshtein y puntuaciones de alineamiento, y el plegado de mayúsculas y minúsculas y la segmentación Unicode. Está diseñada para complementar directamente las API estándar: por ejemplo, str.find de Python, strstr de C y std::string::find de C++ tienen equivalentes directos en StringZilla.
¿StringZilla es gratuito? ¿Qué licencia tiene?
StringZilla es open source bajo la licencia Apache-2.0. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿StringZilla sigue mantenido?
Mantenimiento activo. El último commit de StringZilla fue el 22 oct 2026.
¿Para qué puedo usar StringZilla?
Acelerar pipelines de datos con un uso intensivo de texto que procesan corpus grandes. Reemplazar llamadas lentas de búsqueda de subcadenas o hashing en servicios sensibles al rendimiento. Calcular por lotes distancias de edición o puntuaciones de alineamiento para cargas de trabajo de bioinformática o búsqueda. Acelerar operaciones de tipo LIKE, ORDER BY y GROUP BY dentro de un motor de base de datos.
¿Cómo se instala StringZilla?
Instala el paquete de Python: pip install stringzilla Úsalo desde Python en lugar de str
¿Dónde consigo StringZilla?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/ashvardanian/StringZilla

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados