Rust で再実装された PostgreSQL が、すべての PostgreSQL 回帰テストをクリアした

2026/07/09 15:18

Rust で再実装された PostgreSQL が、すべての PostgreSQL 回帰テストをクリアした

RSS: https://news.ycombinator.com/rss

要約

日本語翻訳:

pgrust は、PostgreSQL 18.3 の AI を活用した支援下で、Rust ベースの再実装として大きなマイルストーンを代表しています。これは、世界でも最も重要なオープンソースデータベースの一つを近代化するとともに、既存データの互換性を保ちながら、46,000 件以上の回帰テストをパスさせることを目的として設計されています。現在はマルチスレッド機能や一部の拡張子の互換性の欠如(例:PL/Python、PL/Perl など)により実験段階にあり、生産環境での使用にはまだ至っていませんが、コアデータベースを Rust で再構築しても機能が失われないことを実証しており、AGPL-3.0 ライセンスの下で開発者にメンテナンスが容易なコードベースを提供しています。パフォーマンス低下を防ぐための将来のロードマップには、マルチスレッド化、コネクションプーリング、JSON サポートの改善、実行時ガードレールなどの内部アップグレードが含まれています。直近の利用を目的とする場合、Docker イメージ(

malisper/pgrust:latest
または固定版
v0.1
)を使用して WebAssembly デモを利用可能です。macOS および Debian/Ubuntu におけるソースビルドには、特定の依存関係と環境設定(スタック制限の増加を含む)が必要です。レポジトリには新実装とアーカイブされた以前のバージョンが格納されており、さらにのコラボレーションについてはメールアドレス、Discord、または GitHub のイシューを通じて maintainer にご連絡いただけます。

本文

Rust による Postgres の再実装(pgrust)プロジェクト

PostgreSQL を Rust で再構築する「pgrust」プロジェクトの現状と活用方法です。

プロジェクト概要

  • 互換性: PostgreSQL 18.3 と完全な互換性を確保しています。
  • テスト結果: 46,000 件以上の回帰テストで、期待される出力と一致しています(検証済み)。
  • ディスクレイアウト: データディレクトリの構造が互換性があり、既存の PostgreSQL 18.3 のデータディレクトリからそのまま起動可能です。
  • 開発目標:
    • Postgres の内部実装をより容易に変更・カスタマイズ可能にすること。
    • PostgreSQL 特有の振る舞いを維持しながら、実際の PostgreSQL をテストケース(Oracle)として活用します。
    • Rust と AI 支援によるプログラミング手法を用い、サーバーレベルの変更点を深く探究しています。

現状ステータス

以下の点にご注意ください:

  • 利用制限: まだ生産環境での利用は推奨されていません
  • パフォーマンス: パフォーマンス最適化は完了しておりません。
  • 機能制限:
    • 既存の PostgreSQL エクステンション、PL/Python、PL/Perl、PL/Tcl など、手続き型言語拡張についての一般的な互換性は未確保です。
    • contrib
      モジュールの一部は既に移植済みですが、今後さらに多くの互換性が追加される見込みがあります。

ロードマップ

今後の開発予定事項です:

  • スケーラビリティ: マルチスレッド化された内部実装の実装。
  • コネクション: 内蔵接続プール機能の追加。
  • データ処理: JSON を多用するワークロードへのサポート強化。
  • パフォーマンス: フォークと分岐処理を高速化するワークフロー(Workflows)の構築。
  • ストレージ:
    no-vacuum
    設計など、ストレージに関する実験。
  • セキュリティ・品質:
    • AI が生成した SQL や不良クエリに対する実行時ガードレールの導入。
    • 突然の不良プラン切替(バッドプラン)の削減。

入手と利用方法

1. WebAssembly デモ

Web ブラウザ上での動作を試すには、以下の公式ページをご覧ください。

2. Docker で起動(推奨:
v0.1

Docker イメージ内で

psql
クライアントを使用します。安定した起動イメージとして
v0.1
を固定で利用してください(
latest
は同じリリースですが、バージョン指定が推奨されます)。

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

接続確認のコマンド例:

psql -h /tmp -p 5432 -U postgres -d postgres \
  -c "select version(), 1 + 1 as two"

3. ソースコードからのビルド

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 の場合

依存ライブラリを apt でインストールします。

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

② データディレクトリの作成と初期化 PostgreSQL 18.3 の共有ファイル(share)を指定して初期化します。

target/release/postgres --initdb \
  -D /tmp/pgrust-data \
  -L "$PWD/vendor/postgres-18.3/share" \
  --no-locale \
  --encoding UTF8 \
  -U postgres

③ サーバー起動 スレッド制限などを適切に設定して起動します。

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

回帰テストの実行方法

PostgreSQL の公式回帰テストを pgrust に対して実行するには、以下のスクリプトを使用します。

  • 前提条件:
    PATH
    に PostgreSQL 18 の
    psql
    クライアントが存在する必要があるか、
    PGRUST_PSQL
    でパスを指定してください。
  • 使用方法:
PGRUST_BIN="$PWD/target/release/postgres" \
scripts/run-regression

このランナーは、pgrust 独自の

--initdb
コマンドに加え、リポジトリ内のvendorフォルダにある Postgres 18.3 のテストファイルを使用します。

沿革と背景情報

  • 現在の状態: リポジトリには、回帰テストのマイルストーン(46,000 件達成)をクリアした最新のインプレメンテーションが含まれています。
  • 過去バージョン: 古い公開ビルトは
    archive/pre-fabled-2026-06-23
    というパスでアーカイブされています。

関連リンク:

連絡先とライセンス

フィードバック

不具合やセットアップの問題、機能改善のご提案は、GitHub Issue を作成してください。

お問い合わせ窓口

ライセンス

  • 本プロジェクトは AGPL-3.0 ライセンスの下で提供されています。詳細は
    LICENSE
    ファイルをご確認ください。

同じ日のほかのニュース

一覧に戻る →

2026/07/09 17:05

Show HN:私の低速な PC で GLM 5.2 を動かしている

## Japanese Translation: **Colibrì**は、ランタイム依存関係ゼロの純 C 言語で書かれた軽量な C エンジンであり、約 25 GB の RAM を搭載する汎用ハードウェア上で、740 億パラメータの GLM-5.2 モデルをローカルに実行することを可能にする。これは、ディスクストリーミング技術を採用することで実現しており、メモリ内に密度の高いコア(〜17B パラメータ)と頻繁に使用されるエキスパートのみを保持し、残りの約 21,504 のルーティング済みエキスパートをディスクからストリーミング処理する。このエンジンは、DeepSeek-V3 スタイルのルーティング、MLA アテンション、圧縮された KV キャッシュ、そして Native MTP 推論的デコード(int8 専用ヘッド)を含む GLM-5.2 の MoE アーキテクチャをネイティブでサポートしている。AVX2 インタージェンタートド積の最適化済みカーネルを採用し、使用パターンを学習して自動的にメモリピン固定を行う自動メモリ管理システムを活用することで、初期のコールドスタート後(最初の推論時にトークンあたり約 11 GB のディスク読み込み)のレイテンシを最小化している。プロジェクトには純 C ランタイムと、コンバージョン専用で Python のみが必要となるオフライン FP8→int4 変換スクリプトが含まれており、Linux/WSL2 および設定可能な環境パラメータに対応する。Apache 2.0(エンジン用)と MIT(ウェイト用)のハイブリッドライセンスの下にあり、研究者が消費者向け NVMe ドライブまたは高エンドハードウェア上においてローカルで最先端モデルを実行できるよう、完全なポートabilityを備えている。システムの性能に応じて、約 0.1 トークン/秒から 15 トークン/秒以上の速度を実現する。 (注:改善されたバージョンは、元のサマリーの流れを保ちつつ、量子化、推論的デコード、コールドスタートのメカニズム、ライセンスの詳細に関する不足していた技術的な specifics を統合しています。)

2026/07/09 20:03

欧州議会で Chat Control 1.0 が承認される

## Japanese Translation: 欧州議会は、Instagram、iCloud、Gmail などの主要プラットフォームにおける私的通信の無許可的大規模スキャンを 2028 年まで、あるいは恒久的な合意に至るまでの間を認める暫定規則を承認した。投票結果は賛成 276 票で可決されたが、絶対多数 361 票には届かなかった。一方、スキャン対象を司法手続きにおける被疑者だけに限定する修正案(322 対 255 の支持率)も、同様に絶対多数に達しなかったため採択されなかった。その結果、Meta や Apple など大規模な米国技術企業は当局から無許可でダイレクトメッセージのスキャンを義務付けられることとなり、WhatsApp のようにエンドツーエンド暗号化が実施されているアプリは除外されることとなった。データによると、この大規模監視は虐待通報の 36% しか説明しておらず(2022 年以降の米国事例において報告件数は 50% も減少しており、これは暗号化強化によるものとして示唆されている)、残りの大部分の通報は公開投稿やクラウドストレージから出ている。市民権利活動家や性暴力被害者を含む批判者は、この法律を「滑稽なもの」と糾弾し、それは真摯な児童保護よりもむしろビッグテックのデータ利益を追求するものだとしている。また、Meta が生成した通報のほとんどは、すでに企業が把握していた材料に過ぎないという発見にも言及している。恒久版のための協議は立法による立滞の解消後、9 月に再開予定となっており、この措置が安全性を損なう一方で実証的な保護的成果をもたらしていないと考える活動家からは激しい反対運動が生じている。

2026/07/09 21:48

Show HN: 18語

## Japanese Translation: ## 日本語訳: 提供された要約は、重要な点を明確かつ忠実に反映しているため、改訂の必要はありません。 ## Text to translate: The provided summary is clear and faithful to the key points, so no revision is necessary.