SQLite es la base de datos más desplegada del planeta. Está en miles de millones de dispositivos, en el firmware de aviones, en los navegadores web, en las apps móviles y en incontables proyectos pequeños que necesitan una base de datos sin servidor. La llaman «el código más confiable de la Tierra». Y ahora ese código se está reescribiendo en Rust.
El proyecto se llama Turso y es obra de la empresa del mismo nombre, que ya era conocida en el ecosistema SQLite por haber creado libSQL, un fork de SQLite en C que añadÃa replicación y un modo servidor. Turso (antes llamado Limbo durante su fase experimental) va más allá: es una reescritura completa desde cero, no un fork, compatible con el formato de fichero de SQLite pero construida en Rust desde los cimientos.
Por qué reescribir SQLite
SQLite tiene limitaciones de diseño que no se pueden resolver con un parche. La más conocida es el escritor único: solo puede haber un proceso escribiendo a la vez, porque el modelo de concurrencia original no contemplaba escrituras simultáneas. En 2024-2026, con aplicaciones que pueden tener cientos de conexiones concurrentes, eso es un cuello de botella real.
Rust resuelve otro problema: la seguridad de memoria. SQLite está escrito en C y, aunque es un código increÃblemente maduro y bien testeado, las vulnerabilidades de C siguen apareciendo. Reescribirlo en Rust elimina por diseño toda una categorÃa de bugs. Es el mismo argumento que llevó a Rust al kernel de Linux, tema que ya cubrimos en el artÃculo sobre Rust en el kernel de Linux.
Qué añade Turso sobre SQLite
MVCC y escrituras concurrentes. Turso implementa BEGIN CONCURRENT con control de concurrencia multiversión (MVCC): múltiples transacciones pueden escribir simultáneamente sin bloquearse entre sà ni bloquear a los lectores. Es el mismo modelo que usa PostgreSQL y que SQLite nunca ha tenido.
I/O asÃncrono nativo. El diseño de Turso es asÃncrono desde el núcleo. En Linux usa io_uring, la API de llamadas al sistema asÃncronas de alto rendimiento. Esto permite que una instancia maneje muchas operaciones de I/O simultáneas sin crear un hilo por conexión.
Búsqueda vectorial integrada. Sin extensiones externas ni librerÃas adicionales, Turso incluye búsqueda de similitud vectorial. Para aplicaciones de RAG (retrieval-augmented generation) o cualquier cosa que necesite guardar embeddings cerca de los datos, esto simplifica mucho el stack. No hace falta pgvector ni una base de datos separada para los vectores.
WebAssembly de serie. Turso está diseñado desde el principio para compilar a WASM. Ya tiene una implementación VFS que funciona con herramientas como Drizzle sin cambios. Esto abre la puerta a bases de datos que corren en el navegador o en edge workers con el mismo código que en servidor.
Change Data Capture (CDC). Turso incluye captura de cambios en tiempo real, útil para sincronización de datos, event sourcing y pipelines de datos reactivos.
La relación con libSQL
Es fácil confundirlos. libSQL es el fork de SQLite en C que lleva años en producción y que alimenta Turso Cloud (el servicio gestionado). Turso Database (el motor en Rust) es su sucesor a largo plazo, actualmente en beta. El propio equipo lo dice claramente: libSQL está listo para producción, Turso Database todavÃa no.
Si te interesa el ecosistema de bases de datos con lenguajes de sistemas, el artÃculo sobre TigerBeetle, la base de datos financiera escrita en Zig, es un buen contraste: otro proyecto que prefirió empezar desde cero en un lenguaje de sistemas antes que heredar la deuda técnica de una base existente.
Estado actual y hoja de ruta
Turso está en beta pública con clientes tempranos probando cargas de trabajo reales. El equipo avisa de que puede haber comportamientos inesperados y recomienda hacer backups si se usa con datos de producción. La compatibilidad con el formato de fichero .db de SQLite se mantiene, asà que migrar una base de datos existente es tan sencillo como apuntar Turso al mismo fichero.
El código está en GitHub bajo licencia MIT. Para quien quiera construir APIs sobre Rust y necesite una base de datos ligera con más capacidades que SQLite clásico, el artÃculo sobre Axum 0.8 cubre la parte del servidor HTTP que complementarÃa bien a Turso.
Imagen: Pexels / luis gomes
