Sobre el proyecto

FrankenSQLite es una reimplementación independiente y desde cero de SQLite escrita en Rust, que busca abordar el cuello de botella del escritor único y las preocupaciones de durabilidad de SQLite. Introduce Control de Concurrencia Multiversión (MVCC) a nivel de página para permitir escritores concurrentes, reemplazando el bloqueo tradicional a nivel de archivo. El motor está diseñado con un núcleo seguro en Rust, limitando el código `unsafe` al VFS y al shim opcional de la ABI C. **Características clave:** - **Escritores concurrentes:** MVCC a nivel de página con Aislamiento de Instantánea Serializable (SSI) por defecto, lo que permite superponer escritores que tocan páginas diferentes. Los conflictos en la misma página actualmente abortan y reintentan con `SQLITE_BUSY_SNAPSHOT`; una escalera segura de fusión de escrituras está latente. - **Compatibilidad de formato de archivo:** Lee y escribe bases de datos estándar de SQLite 3.x, soportando codificaciones de texto UTF-8 y UTF-16. La verificación de paridad es más profunda en UTF-8. - **Motor seguro en Rust:** El motor principal, pager, parser, VDBE y crates relacionados prohíben el código `unsafe`, con excepciones solo en `fsqlite-vfs` (mmap/shm) y `fsqlite-c-api` (FFI). - **Arquitectura por capas:** Un espacio de trabajo Cargo de 28 miembros con crates para tipos, errores, VFS, pager, WAL, MVCC, B-tree, parser, planificador, VDBE, funciones y extensiones (FTS5, JSON1, R-tree, ICU, etc.). - **Investigación de durabilidad:** Incluye componentes básicos RaptorQ/ECS para almacenamiento potencialmente autorreparable, pero esto es diseño más implementación parcial, aún no activo en modo de compatibilidad. - **Observabilidad de transacciones:** Superficies PRAGMA para estadísticas de transacción, transacciones activas, advertencias del asesor y líneas de tiempo JSON. **Estado actual:** El entorno de ejecución es híbrido, siendo el modo de compatibilidad sobre archivos estándar de SQLite la ruta activa. El modo nativo y las secciones ECS son diseño más implementación parcial. La CLI es un shell pequeño, no un frontend completo de sqlite3. Extensiones como FTS3/FTS4 son solo a nivel auxiliar; `dbstat`, `carray` y `dbpage` no están implementados. El crate del planificador existe pero no es la ruta principal de alto rendimiento para todas las consultas.