mrkeyoor.com_
Sat 07 Nov 08:59 UTC
Dataevaluationupdated 24 Oct 2026

pgrust review

pgrust is an experimental Rust reimplementation of PostgreSQL. The current README describes v0.4-beta as PostgreSQL 18.6 compatible, with a threaded concurrency model, the Gravity vectorized query engine and pgrcolumnar storage. The maintainers still advise against production use. Our recorded October 4, 2026 run covers an earlier commit, 79ad992, rather than validating the current beta.

+40stars / 7d
Verdict

pgrust is worth evaluating as an experimental PostgreSQL reimplementation, with disposable data and a specific compatibility question. Our October 4, 2026 run at 79ad992 built successfully in 377 seconds, but cargo test timed out after 900 seconds; the recorded 619 passes do not establish a complete passing suite. Current v0.4-beta packaging and JIT support have moved beyond that checkout, and two previously cited issues are closed with maintainer-reported fixes. None of this overrides the project's advice to keep PostgreSQL as the source of truth for important data.

We ran it

Lab card: what happened when we ran pgrustScreenshot of pgrust (pgrust.com)
Install✓ · 30s1796 packages
Build✓ · 377s
Tests✗ timed out · 900s619 passed · 0 failed of 619 (cargo test)
Repo403712 files~4,765,324 lines of source · 513.5 MB · 0 CI workflows

Answers from our run

Does pgrust build from source?

Dependencies installed in 30 seconds (1796 packages), and the build succeeded in 377 seconds. We cloned commit 79ad992 into a clean Debian container with 3 CPUs and no project-specific setup.

Do pgrust's tests pass?

No. The project's own test command finished in 900 seconds and reported 619 passed, 0 failed (cargo test).

Who should not use pgrust?

Teams choosing a production source of truth: the maintainers recommend PostgreSQL for data they cannot afford to lose.

What are the alternatives to pgrust?

PostgreSQL, ClickHouse. pgrust is worth evaluating as an experimental PostgreSQL reimplementation, with disposable data and a specific compatibility question.

Setup3/5Our October 4 run at 79ad992 built successfully, but did not establish server startup. Current self-contained beta packaging is documented but was not tested in that run.
Docs4/5The current README explains release packaging, platform requirements, upgrade limits and production warnings. Our run does not independently validate the current instructions.
Community2/5Issues 67 and 76 have maintainer responses and closure updates, but pull requests are not actively accepted. This rates the documented participation path; adoption and support responsiveness are not measured.
Maturity2/5The current release is v0.4-beta, and maintainers advise against production use. Extension ABI and columnar compatibility limits remain; our timed-out test run supplies no production validation.

Discussed on

  1. hnPostgres rewritten in Rust, now passing 100% of the Postgres regression tests832 points
  2. hnpgrust passes 100% of the Postgres regression tests21 points
  3. hnPgrust v0.2: Now faster than Postgres and Clickhouse Latest18 points
  4. hnShow HN: Pgrust, Postgres in Rust (passing 100% of Postgres regression tests)6 points
  5. hnPgrust was built: four attempts to rewrite Postgres in Rust with AI6 points

Who it’s for

Database engineers studying PostgreSQL compatibility and Rust server design.
Researchers prepared to reproduce behavior and performance on their own workloads.
Developers evaluating PostgreSQL clients against a disposable experimental server.
Contributors investigating specific compatibility reports, while noting that the maintainers are not actively accepting pull requests.

Who it’s NOT for

Teams choosing a production source of truth: the maintainers recommend PostgreSQL for data they cannot afford to lose.
Users expecting arbitrary PostgreSQL extensions to work unchanged: there is no stable extension ABI, despite the bundled ports.
Workloads requiring PL/Python, PL/Perl or PL/Tcl, which the current README lists as unsupported.
Operators requiring a surviving postmaster after a fatal memory-safety signal: the documented threaded design relies on an external supervisor and WAL recovery.
Users expecting v0.3 columnar data to open directly in v0.4-beta: the README requires dump and restore.

Setup reality

In our recorded run on October 4, 2026, at commit 79ad992ede22bcf6ae0c4fdead6fb01eeac5a990, the dependency step succeeded in 30 seconds and the build step succeeded in 377 seconds. The dependency parser recorded 1,796 packages; the download tail does not establish that a server was installed or started. The build tail identifies a dev profile, not an optimized release build.

The cargo test command timed out after 900 seconds with exit code 124. Its parser summary recorded 619 passed and zero failed across 43 suites before termination. Those counts have not been reconciled against a complete log and do not establish exhaustive unique coverage or a completed passing suite. The tail shows a range stack-guard test running for over 60 seconds, without a final result. This is an incomplete run, not proof that the database is broken.

The recorded sandbox had 3 CPUs, 12 GB of memory and image label lab-rust:1. No installed-binary check, initialized server, recovery exercise or workload benchmark is documented.

Setup has changed since that commit. Its pinned README described v0.3 binaries requiring PostgreSQL 18 tools and share files. The current v0.4-beta README describes self-contained tarballs with postgres, initdb, psql and share files. Current source-build instructions specify Rust 1.96.0 and RE2. We have not executed those current instructions.

A successful build answers only the first question

pgrust gives database engineers a Rust reimplementation of PostgreSQL to investigate. Our recorded build succeeded, but our test command did not finish. That distinction matters when deciding whether to explore its architecture or trust it with data.

The current repository README describes v0.4-beta as PostgreSQL 18.6 compatible. It also says the software still has many bugs and recommends PostgreSQL for production use. Wire and SQL dialect compatibility are project claims, not a guarantee that every client, extension or workload will behave identically.

What our October 4 run establishes

Our stored run began at 2026-10-04T03:40:08.815Z and checked commit 79ad992ede22bcf6ae0c4fdead6fb01eeac5a990, dated September 15, 2026. The sandbox configuration recorded 3 CPUs, 12 GB of memory and image label lab-rust:1. That label does not establish the actual Rust compiler version.

The dependency step completed in 30 seconds. Its parser recorded 1,796 packages, while its tail shows dependency downloads. This does not prove that pgrust was installed as a usable server. The build step completed successfully in 377 seconds; its tail reports an unoptimized dev profile with debug information. The recorded step duration and Cargo's own compilation duration cover different scopes.

The cargo test step reached the 900-second limit and exited with code 124. The parser summary recorded 619 passed, zero failed and 43 suites. These are partial recorded counts: exhaustive unique coverage has not been verified, and the command did not complete. The final tail shows the range stack-guard test range_deep_nesting_raises_54001_and_does_not_abort running for over 60 seconds. It provides no final outcome or established cause for that delay.

This record supports a successful build and an incomplete test run. It does not establish a successful server startup, installed-binary verification, crash recovery, performance or production readiness. No new execution was performed for this review.

The collector also recorded 403,712 files, 4,765,324 lines and 513.5 MB. Their source-only scope is not established, so they should not be read as a clean source-code inventory. Its detection flags found zero CI workflows and no Dockerfile, Compose file or top-level tests directory. Those flags do not establish an absence of tests or Docker support: the test tail contains tests, and the README documents a published Docker image.

Keep the measured checkout separate from current setup

The README pinned to our measured commit describes v0.3, PostgreSQL 18.6 compatibility and native binaries that borrow PostgreSQL 18's initdb, psql and share files. Its JIT targets Graviton4. Those are historical setup constraints for that snapshot.

The current v0.4-beta README describes self-contained release tarballs containing bin/postgres, bin/initdb, bin/psql and their share files. It specifies glibc 2.34 or newer for Linux binaries and macOS 11 or newer for macOS binaries. The macOS binaries are signed ad hoc but are not notarized. Current source instructions pin Rust 1.96.0 and require RE2 for release builds.

The current Docker instructions use the explicit v0.4-beta tag for amd64 or arm64. The README says latest still points to v0.3. It also says v0.3 columnar tables require dump and restore before use with v0.4-beta. These are documented instructions and constraints; our run did not validate either distribution path.

The architecture has changed beyond the original review

The current README calls the query engine Gravity. It describes a vectorized, push-based executor whose JIT emits AArch64 and x86-64 machine code, with WebAssembly support in the browser build. The old statement that the current JIT only targets Graviton4 is therefore outdated.

Connections and parallel workers still use threads. The README describes query scheduling and work stealing, plus an automatic memory manager covering the buffer pool, columnar caches and running queries. Near the memory limit, it says pgrust cancels the statement holding the most memory. These are implementation descriptions, not behavior we exercised in the sandbox.

The current extension position also needs precision. Arbitrary PostgreSQL extensions do not work out of the box because pgrust has no stable extension ABI, but the project lists bundled ports including pgvector, pg_cron, pg_stat_statements and postgres_fdw. PL/Python, PL/Perl and PL/Tcl remain unsupported. Columnar tables currently lack ON CONFLICT and MERGE support, and UTF8 is the only server encoding listed.

Closed reports still explain useful limits

Issue 76 originally reported that file_fdw accepted a program option and then panicked during SELECT. On September 10, 2026, the maintainer reported that the path had been implemented with its privilege check and a regression fixture, and closed the issue. It should not be presented as an outstanding defect. We did not rerun the reproducer.

Issue 67 raised a crash-isolation concern through static review, without demonstrating corruption. On September 10, the maintainer reported a merged fix releasing held LWLocks on crash-class exits, with a unit test, and closed the issue. The same update retained the architectural contract for hard signals: the whole process dies, with an external supervisor and WAL recovery responsible for restart. Closure addresses the reported lock-handling work; it does not turn threads into separate fault-isolated processes.

Compatibility claims and benchmarks need their own evidence

The pinned v0.3 README claimed 46,066 PostgreSQL regression tests passed, while also directing readers to conformance documentation about what that figure counts. That is an upstream claim, separate from our partial cargo test summary. Neither figure proves general correctness.

Likewise, the v0.2 release compared tuned Graviton4 builds against PostgreSQL 18.3. It is historical benchmark evidence, not the current compatibility version or a result from our sandbox. Current README performance claims concern different software and stated workloads. We measured no database workload and cannot select a performance winner from this run.

For production-ready PostgreSQL, the project's own recommendation is PostgreSQL. For a column-oriented analytical database, ClickHouse is a relevant separate evaluation. Those choices answer different requirements; neither is ranked by our build timing.

How to use this review

The scores use a five-point editorial rubric: 1 means substantial barriers or insufficient evidence for the intended use; 2 means significant limits; 3 means a usable evaluation path with unresolved questions; 4 means clear supporting documentation with bounded gaps; 5 requires broad corroboration in that category. These are judgments about the supplied evidence, not benchmark results. Community scoring concerns the documented participation path, not adoption, and maturity concerns production suitability.

For a disposable trial, follow the current README, select an explicit release and check the server's reported version after connecting. Test the particular SQL behavior and extensions you need. Keep important data in PostgreSQL while evaluating pgrust; our build result and incomplete test run do not justify moving that boundary.

Alternatives

ProjectWhat it isPick it when
PostgreSQL gh↗An object-relational SQL database supporting transactions, foreign keys, triggers and user-defined functions.Choose PostgreSQL when you need production-ready PostgreSQL today, as pgrust's maintainers recommend.
ClickHouse gh↗An open-source column-oriented database management system for analytical reporting.Evaluate ClickHouse when your main requirement is a column-oriented analytical database rather than experimenting with a PostgreSQL reimplementation. The supplied source supports that role, not a performance winner for your workload.

What people are saying

  1. [github-trending] malisper/pgrust

Sources

  1. pgrust README
  2. pgrust repository
  3. pgrust v0.2 release
  4. Issue 67: threaded crash isolation concern
  5. Issue 76: file_fdw program panic

More data reviews

rerun · telegraf · rocksdb · redash · akshare · DB-GPT · the whole board →