Expand description
oliphaunt-wasix
Embedded Postgres for Rust tests and local apps.
Real PostgreSQL. Direct Rust API or a local Postgres URL.
Guide · Performance · Extensions · Dump & Upgrade · Runtime · Tauri
oliphaunt-wasix brings the WASIX Oliphaunt/Postgres runtime to Rust with a
small API. Open a database directly with Oliphaunt, or hand OliphauntServer
to SQLx and any standard Postgres client. The release-built runtime is
PostgreSQL 18.4. Cargo resolves the matching WASIX runtime and AOT artifact
crates; applications do not download runtime assets at first database open.
§Add Postgres In One Minute ⚡
Already using SQLx or another Postgres client? The WASIX API shape is:
cargo add oliphaunt-wasixuse oliphaunt_wasix::OliphauntServer;
use sqlx::{Connection, Row};
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let server = OliphauntServer::temporary_tcp()?;
// For a persistent TCP server:
// let server = OliphauntServer::builder().path("./.oliphaunt").start()?;
let mut conn = sqlx::PgConnection::connect(&server.database_url()).await?;
let row = sqlx::query("SELECT $1::int4 + 1 AS answer")
.bind(41_i32)
.fetch_one(&mut conn)
.await?;
assert_eq!(row.try_get::<i32, _>("answer")?, 42);
conn.close().await?;
server.shutdown()?;
Ok(())
}That’s it. Real PostgreSQL, no service setup.
§Why oliphaunt-wasix ✨
Postgres should be as easy to add to a Rust project as SQLite.
- ⚡ No service tax: no Docker, no local Postgres, no testcontainers.
- 🔌 Use your real stack: SQLx,
tokio-postgres, CLIs, and other clients connect through a normal local URL. - 🌉 Proxy included: expose an embedded database to non-Rust tools with
oliphaunt-wasix-proxy. - 🧪 Clean tests: temporary databases are isolated, fast, and removed on drop.
- 💾 Persistent apps: keep local app data across restarts when you want it.
- 🧩 Extensions available: install exact extension release assets owned by your application.
- 📦 Portable tools: enable the
toolsfeature to resolve the matchingoliphaunt-wasix-toolspg_dumpandpsqlartifacts for logical backups, checks, and upgrade paths. - 🚀 Near-native feel: close to native Postgres, fully embedded.
§Near-Native Performance 🚀
Current local snapshot on Apple M1 Pro, 16 GB RAM, and macOS 26.4.1.
Full numbers and reproduction steps live in the
performance guide. Lower is better.
| Operation | native pg + SQLx | oliphaunt-wasix + SQLx | vanilla Oliphaunt + SQLx |
|---|---|---|---|
| 25,000 INSERTs in one transaction | 132.36 ms | 149.54 ms | 257.02 ms |
| 25,000 INSERTs in one statement | 46.14 ms | 59.39 ms | 117.19 ms |
| 25,000 INSERTs into an indexed table | 188.72 ms | 253.38 ms | 352.64 ms |
| 5,000 indexed SELECTs | 81.39 ms | 125.31 ms | 203.05 ms |
| 25,000 indexed UPDATEs | 351.05 ms | 578.96 ms | 720.63 ms |
oliphaunt-wasix stays close to native Postgres while running entirely embedded
and consistently performs better than vanilla Oliphaunt.
§Extensions 🧩
WASIX extensions are exact package artifacts. The base runtime does not include optional extension payloads. Applications select only the extension packages they use.
§Docs
Structs§
- Database
Error - Describe
Query Param - Describe
Query Result - Describe
Result Field - Engine
Capabilities - Capabilities advertised by the packaged WASIX runtime.
- Exec
Protocol Options - Exec
Protocol Result - Field
Info - Global
Listener Handle - Listener
Handle - Notice
Message - Oliphaunt
- Primary entry point for interacting with the embedded Postgres runtime.
- Oliphaunt
Builder - Builder for opening persistent or temporary
Oliphauntdatabases. - Oliphaunt
Error - Rich error type that mirrors the TypeScript
OliphauntErrorby carrying the original database error along with query context. - Oliphaunt
Server - A supervised local PostgreSQL socket backed by one embedded Oliphaunt runtime.
- Oliphaunt
Server Builder - Builder for
OliphauntServer. - Postgres
Config - PostgreSQL startup configuration applied through normal
postgres -cGUC handling before the embedded backend starts. - Query
Options - Query
Template - Results
- Templated
Query - Transaction
- Transaction handle used within
Oliphaunt::transaction.
Enums§
- Backend
Message - Data
DirArchive Format - Compression format for physical PGDATA archives.
- Data
Transfer Container - RowMode
- Row output mode matching the TypeScript
RowMode.
Functions§
Type Aliases§
- Notice
Callback - Parser
Map - Serializer
- Serializer
Map - Type
Parser - Parser function used to convert textual Postgres values into richer Rust values. Mirrors the signature of the TypeScript parser callbacks.