Опубликован проект pgrust с реализацией СУБД PostgreSQL, переписанной на языке Rust c использованием транслятора c2rust и AI-ассистента. Заявлено, что проект пока не готов для использования в рабочих проектах, но уже успешно проходит все регрессионные тесты PostgreSQL, совместим с форматом хранения данных PostgreSQL 18.3 и может использовать data-каталог от PostgreSQL 18.3. Код проекта распространяется под лицензией AGPLv3, в отличие от оригинального PostgreSQL, поставляемого под пермиссивной лицензией PostgreSQL, близкой к лицензиям BSD и MIT. Доступна online-демонстрация возможностей, основанная на сборке в WebAssembly, а также docker-образ для быстрого запуска.
В качестве цели разработки упоминается достижение полной совместимости с PostgreSQL 18.3, а также проведение экспериментов по изменению внутреннего устройства и созданию версии PostgreSQL, избавленной от архитектурных ограничений, от которых не удаётся избавиться по историческим причинам. Проект успешно проходит набор из более чем 46 тысяч регрессионных тестов PostgreSQL, но пока несовместим с дополнениями к PostgreSQL, не предоставляет желаемых оптимизиций производительности и не полностью реализует процедурные языки PL/Python, PL/Perl и PL/Tcl.
Планы на будущее:
- Перевод на многопоточную внутреннюю архитектуру.
- Реализация пулинга соединений.
- Оптимизация для рабочих процессов, активно использующих JSON.
- Возможность создания копий и ответвлений элементов БД в режиме Copy-on-Write без копирования данных.
- Эксперименты с архитектурой, не требующей выполнения операции VACUUM.
- Система ограничений SQL-запросов, позволяющая блокировать излишнее потребление ресурсов при выполнении некачественных запросов.
- Защита от переключение оптимизатора на менее эффективные планы выполнения запросов.
По словам автора проекта, в настоящее время ведётся работа над следующей версией pgrust, в которой вместо пула рабочих процессов реализована многопоточная модель обработки соединений, а также задействованы дополнительные оптимизации, такие как пакетная обработка строк в таблицах и упреждающая загрузка данных. При тестировании инструментарием percona-tpcc при обработке транзакций новая версия pgrust оказалась быстрее штатного PostgreSQL на 50%, а при обработке аналитических запросов — в 300 раз.
При переводе на Rust использован гибридный подход, при котором код PostgreSQL вначале был обработан помощи транслятора c2rust, генерирующего unsafe-представление Rust, близкое по своей структуре к изначальному коду на Си. После обработки в c2rust было создано около 1000 crate-пакетов, которые параллельно переводились на идиоматический Rust при помощи AI-модели Claude и инструментария Conductor для распределения задач между одновременно запускаемыми субагентами.
Источник: opennet.ru
