Changelog of @hackage/valiant-cli 0.1.0.0

Changelog

All notable changes to the valiant project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

0.1.0.0 - 2026-04-25

Initial release. The project ships four primary packages plus eight adapter libraries.

Packages

  • pg-wire 0.1.0.0: pure-Haskell PostgreSQL v3 wire-protocol driver. No libpq, no C dependencies. Includes a connection pool with idle reaping, health checks, jittered max-life, queue mode (LIFO/FIFO), recycling modes, lifecycle hooks, and nothunks-checked invariants.
  • valiant 0.1.0.0: runtime library. Binary codecs for all common PostgreSQL types (numerics, text, time, UUID, JSON/JSONB, hstore, inet, macaddr, point, ranges, arrays, composites, enums), a Statement type, query execution, server-side cursor streaming, pipelined execution, COPY in/out, large objects, LISTEN/NOTIFY, advisory locks, transactions, and re-exports from pg-wire.
  • valiant-cli 0.1.0.0: valiant CLI with prepare, check, types, generate, and watch commands.
  • valiant-plugin 0.1.0.0: GHC source plugin that validates SQL files against the .valiant/ cache at compile time.

Adapters

Eight first-party adapters for popular effect systems and streaming libraries: valiant-bluefin, valiant-conduit, valiant-effectful, valiant-fused-effects, valiant-mtl, valiant-pipes, valiant-streaming, valiant-streamly.

Highlights

  • Compile-time SQL safety. Raw .sql files are validated against a live PostgreSQL database via valiant prepare and a .valiant/ cache. The GHC source plugin checks parameter and result types at compile time. No Template Haskell.
  • Performance. Roughly 5x faster than hasql on multi-row reads and 10x faster on pipelined batch writes in our comparative benchmarks (bench-compare). Competitive with asyncpg (Python) on throughput.
  • Wire protocol features. Extended query protocol with binary format, statement caching, prepared statements, server-side cursors, pipelining, COPY in/out (including CSV), large objects, LISTEN/NOTIFY, query cancellation, cleartext, MD5, and SCRAM-SHA-256 authentication.
  • Strict by default. StrictData, -funbox-strict-fields, and -fspecialise-aggressively across all libraries. -fno-full-laziness on streaming-sensitive modules. nothunks invariants on the pool.
  • Tested. 267 unit tests in pg-wire, 282 in valiant, 101 integration tests against a real Postgres, plus property tests with hedgehog and a state-machine test for the connection pool.

Added (post-tag)

  • refine and refineWith combinators in Valiant.Binary.Decode for validating decoded values against extra invariants without writing a full PgDecode instance.
  • fetchAllUnboxed: an unboxed-vector variant of fetchAllVec for fixed-size primitive result columns. Eliminates per-element pointer indirection for Int32/Int64/Double/Bool and tuples of those.

Documentation

  • Tutorial, performance notes, asyncpg comparison, async architecture, and gap analysis under docs/.
  • Per-package READMEs for pg-wire, valiant, valiant-cli, valiant-plugin, and each adapter.