packages feed

valiant-cli-0.1.0.1: CHANGELOG.md

# Changelog

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

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased] - 2026-04-29

### Per-package version bumps

- **pg-wire** 0.1.0.0 → 0.2.0.0: replaced the per-connection
  prepared-statement cache with SIEVE
  ([NSDI'24](https://www.usenix.org/conference/nsdi24/presentation/zhang-yazhuo)).
  Breaking: `Connection` record fields changed (`connStmtCache` is now
  `SieveCache ByteString ByteString`; `connStmtTick` removed). Added
  `clear`, `capacity`, `foldEntries` to `PgWire.Cache.Sieve`. Removed
  `psqueues` dependency.
- **valiant** 0.1.0.0 → 0.1.0.1: `Valiant.Execute` and `Valiant.Batch`
  now use the SIEVE cache from `pg-wire` 0.2. No public API change.
  Removed `psqueues` dependency. Bumped `pg-wire` bound to `==0.2.*`.
- **valiant-cli** 0.1.0.0 → 0.1.0.1: bumped `pg-wire` bound to `==0.2.*`.
- **valiant-bluefin**, **valiant-effectful**, **valiant-mtl**,
  **valiant-fused-effects** 0.1.0.0 → 0.1.0.1: bumped `pg-wire` bound
  to `>=0.2 && <0.3`.

Streaming adapters (`valiant-conduit`, `valiant-pipes`,
`valiant-streaming`, `valiant-streamly`) and `valiant-plugin` are
unchanged at 0.1.0.0.

## [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.

[0.1.0.0]: https://github.com/joshburgess/valiant/releases/tag/v0.1.0.0