Se ha publicado el proyecto pgrust con una implementación de la base de datos PostgreSQL, reescrita en el lenguaje Rust utilizando el traductor c2rust y un asistente de IA. Se afirma que el proyecto aún no está listo para su uso en proyectos en producción, pero ya pasa con éxito todas las pruebas de regresión de PostgreSQL, es compatible con el formato de almacenamiento de datos de PostgreSQL 18.3 y puede usar el catálogo de datos de PostgreSQL 18.3. El código del proyecto se distribuye bajo la licencia AGPLv3, a diferencia del PostgreSQL original, que se proporciona bajo una licencia permisiva de PostgreSQL, similar a las licencias BSD y MIT. Hay disponible una demostración en línea de las capacidades, basada en una construcción en WebAssembly, así como una imagen de docker para un arranque rápido.
Como objetivo del desarrollo se menciona lograr una compatibilidad total con PostgreSQL 18.3, así como realizar experimentos sobre la modificación de la arquitectura interna y crear una versión de PostgreSQL libre de las limitaciones arquitectónicas que no se pueden eliminar por razones históricas. El proyecto pasa con éxito un conjunto de más de 46,000 pruebas de regresión de PostgreSQL, pero aún es incompatible con las extensiones de PostgreSQL, no proporciona las optimizaciones de rendimiento deseadas y no implementa completamente los lenguajes de procedimientos PL/Python, PL/Perl y PL/Tcl.
Planes para el futuro:
- Transición a una arquitectura interna multihilo.
- Implementación de pooling de conexiones.
- Optimización para flujos de trabajo que utilizan activamente JSON.
- Capacidad para crear copias y ramificaciones de elementos de la base de datos en modo Copy-on-Write sin duplicar datos.
- Experimentos con arquitecturas que no requieren la ejecución de la operación VACUUM.
- Sistema de restricciones en consultas SQL, que permite bloquear el consumo excesivo de recursos en la ejecución de consultas de mala calidad.
- Protección contra la conmutación del optimizador a planes de ejecución menos eficientes.
Según el autor del proyecto, actualmente se está trabajando en la próxima versión de pgrust, en la que en lugar de un pool de procesos de trabajo se implementa un modelo multihilo para el procesamiento de conexiones, así como optimizaciones adicionales, como el procesamiento por lotes de filas en tablas y la carga anticipada de datos. En las pruebas con la herramienta percona-tpcc al procesar transacciones, la nueva versión de pgrust resultó ser un 50% más rápida que el PostgreSQL estándar y al procesar consultas analíticas, ¡300 veces más rápida!
Al traducir a Rust se utilizó un enfoque híbrido, donde el código de PostgreSQL fue procesado inicialmente con la ayuda del traductor c2rust, que genera una representación unsafe de Rust, cercana en su estructura al código original en C. Después del procesamiento en c2rust, se crearon alrededor de 1000 paquetes crate, que se tradujeron paralelamente a Rust idiomático con la ayuda del modelo de IA Claude y la herramienta Conductor para distribuir tareas entre subagentes que se ejecutan simultáneamente.
Fuente: opennet.ru
