プログラミング
PostgresをRustで書き直し、Postgresの回帰テストを100%クリア
Postgres rewritten in Rust, now passing 100% of the Postgres regression tests (github.com)
要約
RustでPostgresを書き直したプロジェクト「pgrust」が、Postgresの回帰テストを100%クリアしたことが発表されました。Postgres 18.3との互換性を目指し、既存のデータディレクトリから起動可能で、RustとAIを活用してPostgresの内部変更を容易にすることが目標です。まだ本番環境での使用には適していませんが、Postgresの保守性向上と革新の可能性を示しています。
全文翻訳
pgrust PostgresをRustで書き直したもの。ブラウザデモ | Discord | メーリングリスト | イシュー
pgrustはPostgres 18.3との互換性を目指しており、46,000以上の回帰クエリでPostgresの期待する出力と一致しています。
pgrustはPostgresとディスク互換性があり、既存のPostgres 18.3データディレクトリから起動できます。目標は、Postgresの内部をより変更しやすくすることです。Postgresの形状を保ち、実際のPostgresテストをオラクルとして使用し、RustとAI支援プログラミングを使用して、より深いサーバー変更を探索します。
ステータス
pgrustはまだ本番環境での使用には適していません。まだパフォーマンス最適化もされていません。既存のPostgres拡張機能やPL/Python、PL/Perl、PL/Tclなどの手続き型言語拡張機能は、一般的にまだ互換性がありません。一部バンドルされているcontribモジュールは既に移植されており、時間とともにさらに互換性が向上する可能性があります。
ロードマップ
マルチスレッド化されたPostgres内部
組み込みコネクションプーリング
JSONを多用するワークロードのサポート強化
高速なフォークおよびブランチワークフロー
バキューム不要設計を含むストレージ実験
不正なクエリやAI生成SQLのためのランタイムガードレール
計画の突然の切り替えの減少
試してみる
WebAssemblyデモをhttps://pgrust.comで試してください。
Docker:
docker run -d --name pgrust -e POSTGRES_PASSWORD=secret malisper/pgrust:v0.1 && until docker exec -e PGPASSWORD=secret pgrust psql -h 127.0.0.1 -U postgres -c '\q' >/dev/null 2>&1; do sleep 1; done && docker exec -it -e PGPASSWORD=secret pgrust psql -h 127.0.0.1 -U postgres;
docker rm -f pgrust
これはDockerイメージ内のpsqlクライアントを使用しています。malisper/pgrust:latestは現在同じリリースを指していますが、v0.1は固定されたローンチイメージです。
ソースからビルド
macOS:
brew install icu4c openssl@3 libpq
export LIBRARY_PATH="$(brew --prefix openssl@3)/lib:${LIBRARY_PATH:-}"
export PKG_CONFIG_PATH="$(brew --prefix openssl@3)/lib/pkgconfig:$(brew --prefix icu4c)/lib/pkgconfig:${PKG_CONFIG_PATH:-}
export PATH="$(brew --prefix libpq)/bin:$PATH"
Debian/Ubuntu:
sudo apt-get update
sudo apt-get install -y build-essential pkg-config libicu-dev libssl-dev libldap2-dev libpam0g-dev postgresql-client-18
ビルド:
PGRUST_PGSHAREDIR="$PWD/vendor/postgres-18.3/share" \
cargo build --release --locked --bin postgres
データディレクトリの作成:
target/release/postgres --initdb \
-D /tmp/pgrust-data \
-L "$PWD/vendor/postgres-18.3/share" \
--no-locale \
--encoding UTF8 \
-U postgres
pgrustの実行:
ulimit -s 65520
RUST_MIN_STACK=33554432
target/release/postgres \
-D /tmp/pgrust-data \
-F \
-c listen_addresses= \
-k /tmp \
-p 5432 \
-c io_method=sync \
-c max_stack_depth=60000
接続:
psql -h /tmp -p 5432 -U postgres -d postgres \
-c "select version(), 1 + 1 as two"
回帰テスト
pgrustに対してPostgresの回帰テストを実行します:
PGRUST_BIN="$PWD/target/release/postgres" \
scripts/run-regression
ランナーはpgrust自身の--initdbと、このリポジトリにあるベンダー提供のPostgres 18.3テストファイルを使用します。PATHにPostgres 18のpsqlクライアントが必要です。psqlが別の場所にある場合は、PGRUST_PSQL=/path/to/psqlを設定してください。
検証済み起動結果:
pgrustは46,000以上の回帰クエリでPostgresの期待する出力と一致しました。
履歴
このリポジトリには、回帰テストマイルストーンを達成した新しいpgrust実装が含まれています。古い公開実装はarchive/pre-fabled-2026-06-23にアーカイブされています。
背景:
元のpgrustローンチ: https://malisper.me/pgrust-rebuilding-postgres-in-rust-with-ai/
67%回帰アップデート: https://malisper.me/pgrust-update-at-67-postgres-compatibility-and-accelerating/
Four Horsemenロードマップ: https://malisper.me/the-four-horsemen-behind-thousands-of-postgres-outages/
フィードバック
何か問題が発生した場合、セットアップが不明瞭な場合、または最初に実装してほしいPostgresの改善点がある場合は、イシューを開いてください。
連絡先
メール: maintainers@pgrust.com
Discord: https://discord.gg/FZZ4dbdvwU
メーリングリスト: https://malisper.me/subscribe/
ライセンス
pgrustはAGPL-3.0ライセンスの下で提供されます。LICENSEを参照してください。