Postgres переписали на Rust, pgrust проходит 100% официальных регрессионных тестов

Разработчик malisper выпустил pgrust, реализацию PostgreSQL, переписанную с нуля на Rust, которая нацелена на совместимость с Postgres версии 18.3. По заявлению автора, pgrust совпадает с ожидаемым выводом оригинального Postgres более чем в 46 000 регрессионных запросов из официального тестового набора СУБД, то есть проходит его полностью. Проект дисково-совместим с обычным Postgres: pgrust умеет запускаться поверх уже существующего каталога данных (data directory) Postgres 18.3 без конвертации.
Цель проекта, не заменить Postgres ради самой замены, а сделать его внутреннее устройство более податливым к изменениям: сохранить поведение, идентичное оригинальному Postgres (тот же тестовый набор служит "эталоном" правильности), а язык Rust вместе с ИИ-ассистированным программированием использовать как инструмент для более смелых архитектурных экспериментов внутри сервера, таких, которые в старой кодовой базе на C делать рискованно.
Среди задуманных направлений: многопоточное ядро Postgres (сейчас классический Postgres строго однопоточный на процесс-соединение), встроенный пулинг соединений без внешних инструментов вроде PgBouncer, улучшенная работа с JSON-нагрузками, быстрые механизмы форков и веток базы данных, эксперименты с хранилищем, включая архитектуры без вакуума (no-vacuum, то есть без фоновой сборки мусора MVCC-версий строк), защитные ограничители (guardrails) для плохих запросов и SQL, сгенерированного ИИ, а также борьба с внезапной сменой планов выполнения запросов на неудачные.
Проект прямо называет себя не готовым к продакшену: он не оптимизирован по производительности, а расширения Postgres, включая процедурные языки PL/Python, PL/Perl и PL/Tcl, пока в основном не поддерживаются, хотя часть стандартных модулей contrib уже портирована. Попробовать pgrust можно через WebAssembly-демо на сайте проекта, через готовый Docker-образ или собрав из исходников (для Linux и macOS есть отдельные инструкции по зависимостям, icu4c, openssl, libpq и клиент psql версии 18).
Это уже вторая публичная версия проекта: до неё автор публиковал апдейт о достижении 67% совместимости с регрессионными тестами и материал о "Четырёх всадниках" (Four Horsemen), частых причинах тысяч простоев Postgres в проде, которые и мотивировали переработку. Старая реализация, не дошедшая до нынешнего рубежа тестов, заархивирована в отдельной ветке репозитория. Лицензия проекта, AGPL-3.0, публикация собрала на Hacker News 476 баллов и 446 комментариев.
Ключевые факты
- pgrust, переписанная на Rust реализация PostgreSQL, целится в совместимость с Postgres 18.3
- Проходит более 46 000 официальных регрессионных запросов Postgres, по заявлению автора, 100% тестового набора
- Дисково-совместим с обычным Postgres: может стартовать поверх существующего каталога данных Postgres 18.3
- Использует Rust и ИИ-ассистированное программирование, чтобы облегчить смелые архитектурные изменения: многопоточность, встроенный пулинг соединений, хранилище без вакуума, защита от вредоносного или сгенерированного ИИ SQL
- Проект не готов к продакшену: не оптимизирован по производительности, большинство расширений (PL/Python, PL/Perl, PL/Tcl) пока не поддерживаются; лицензия AGPL-3.0
Почему это важно
PostgreSQL, одна из самых распространённых открытых СУБД, а её кодовая база на C десятилетиями считалась крайне трудной для радикальных архитектурных изменений вроде многопоточности или отказа от механизма вакуума. pgrust заявляет, что смог воспроизвести поведение Postgres практически один в один (пройдя официальный регрессионный набор из 46 000+ запросов), используя при этом Rust и ИИ-ассистированную разработку как способ безопаснее и быстрее исследовать такие изменения изнутри, не ломая совместимость с существующими данными и приложениями.
Кому это важно
Администраторам баз данных и инфраструктурным инженерам, которые следят за будущим Postgres; облачным провайдерам и разработчикам managed-СУБД, заинтересованным в многопоточности и встроенном пулинге соединений; командам, экспериментирующим с ИИ-ассистированной разработкой системного ПО; авторам инструментов, где нужна защита базы от плохих или сгенерированных ИИ SQL-запросов.
Как это применить
Проект пока не для продакшена, но его можно опробовать: есть WebAssembly-демо на сайте pgrust.com, готовый Docker-образ (docker run с образом malisper/pgrust) и сборка из исходников на Linux/macOS с зависимостями icu4c, openssl, libpq и клиентом psql 18. Благодаря дисковой совместимости pgrust можно запустить поверх уже существующего каталога данных Postgres 18.3 для тестового сравнения поведения. Лицензия, AGPL-3.0, что важно учитывать при встраивании в собственные продукты.
Можно ли доверять
Заявление о прохождении 100% регрессионных тестов сделано самим автором проекта и пока не подтверждено независимым аудитом или сторонними бенчмарками. Проект, развитие более раннего pgrust, который на предыдущем этапе публично отчитывался о 67% совместимости, то есть прогресс отслеживаем и не выглядит внезапным. Тем не менее расширения (PL/Python, PL/Perl, PL/Tcl) пока не работают, производительность не оптимизирована, а сам автор прямо называет проект не готовым к продакшену, то есть заявленная тестовая совместимость не означает готовность к реальной эксплуатации.
Риски и подводные камни
Главный риск, незрелость: нет оптимизации производительности, не поддерживается большинство процедурных расширений, а значит многие существующие приложения на Postgres пока не смогут переехать на pgrust без потерь функциональности. Обсуждение на Hacker News собрало 446 комментариев, что обычно указывает на активные споры и скепсис сообщества по поводу заявленной полноты совместимости и целесообразности переписывания настолько критичного компонента инфраструктуры. Лицензия AGPL-3.0 накладывает более строгие требования на распространение, чем классическая лицензия PostgreSQL, что стоит учитывать при выборе для коммерческих продуктов.