HomePlaygroundExpressionsDocsDriversBlogStatusRoadmapChangelog GitHub

v0.16.0

February 8, 2026 Latest
โš™๏ธ Centralized Configuration โ€” single qail.toml with ${VAR} env expansion

QailConfig Loader (qail-core)

  • qail.toml: Single config file for all drivers โ€” postgres, qdrant, gateway
  • ${VAR} Expansion: Environment variable interpolation with ${VAR:-default} fallback syntax
  • Layered Priority: Environment variables > qail.toml > hardcoded defaults
  • Env Overrides: DATABASE_URL, QDRANT_URL, QAIL_BIND

Driver Integrations

  • PgPool::from_config(): One-liner pool creation from qail.toml with full pool tuning
  • PoolConfig::from_qail_config(): Available on qail-pg, qail-qdrant
  • GatewayConfig::from_qail_config(): Maps postgres, gateway, project sections to gateway config

Code Quality

  • 18 clippy warnings fixed across workspace โ€” zero remaining
  • qail init now generates .env.example alongside qail.toml
  • Configuration docs added to mdBook

v0.15.7

February 8, 2026
๐Ÿ”— TypedQail<T> โ€” Compile-time relation safety with join_related()

First-Class Relations (Complete)

  • TypedQail<T>: Table-typed query wrapper โ€” carries source type through builder chain
  • join_related(target): RelatedTo<T> trait bound โ€” compiler rejects invalid joins at build time
  • Typed Columns: typed_column(), typed_columns() for batch typed column selection
  • Typed Filters: typed_eq(), typed_filter() with ColumnValue<C> bound
  • Full Delegation: with_cap(), with_rls(), limit(), offset(), order_by()

Verified

  • 253 tests pass โ€” zero regressions
  • Full workspace build clean across 16 crates

v0.15.6

February 7, 2026
๐Ÿ” RlsContext โ€” Unified multi-tenant context for all drivers

Row-Level Security

  • RlsContext: operator(), agent(), operator_and_agent(), super_admin() constructors
  • Query Methods: has_operator(), has_agent(), bypasses_rls()
  • with_rls(ctx): AST-level tenant injection โ€” auto-scopes queries without manual WHERE clauses
  • Display impl: Safe logging/debugging for RLS contexts

Typed System

  • Protected Columns: column_protected() with CapabilityProvider trait for data governance
  • CapQuery<C>: Capability-gated query builder โ€” compile-time access control

v0.15.5

February 2026

Multi-Tenant Features

  • Tenant Injection: Qail::get("users").with_rls(ctx) โ€” automatic scope to operator/agent
  • RLS Policy Codegen: schema.qail generates PostgreSQL RLS policies via qail migrate
  • SSH Tunneling: qail exec --ssh host for secure remote database access with auto-cleanup

v0.14.18

January 9, 2026
๐ŸŽฏ Type-Safe Seeding โ€” qail exec for database operations

qail exec Command

  • Type-Safe: Uses driver.execute(ast) โ€” no raw SQL
  • QAIL Syntax: qail exec "get users fields id where active = true"
  • Batch Support: Execute multiple statements from .qail files
  • Transaction: --tx flag with automatic rollback on error

Documentation

  • Updated CLI doc comments to v2 QAIL syntax examples
  • Added qail exec to CLI reference docs

v0.14.13

January 2, 2026
๐ŸŽฏ Unified Qail AST โ€” Same API across PostgreSQL, Qdrant + Native Cache

Native Cache: Gateway Query Cache

  • QueryCache: DashMap-based LRU with configurable TTL (default: 60s, 1000 entries)
  • Auto-Invalidation: Mutations automatically invalidate by table name
  • Prepared Statement Cache: LRU cache for PG server-side prepared statements (max 100)
  • EXPLAIN Cache: TTL-based query plan caching (300s default)

Vision: "QAIL Decides"

  • Qail::get("users") โ€” PostgreSQL (facts)
  • Qail::search("products") โ€” Qdrant (meaning)

v0.14.12

January 2, 2026
โšก 4x Qdrant Speedup - HTTP/2 Pipelining & Pooling

Performance

  • HTTP/2 Pipelining: search_batch() multiplexes requests (4.00x faster)
  • Connection Pooling: QdrantPool with semaphore concurrency (1.46x faster)
  • Zero-Copy: Buffer splitting replaces cloning for true zero-alloc

v0.14.10

January 1, 2026

New Crate: qail-qdrant

  • Zero-Copy gRPC Driver: Direct protobuf wire encoding (1.17x faster than official)
  • REST Driver: Full Point/Payload API support
  • Vector Support: Value::Vector(Vec<f32>) AST extension

v0.14.9

January 1, 2026

Security

  • PG: Reject literal NULL bytes (0x00) in execute_raw()
  • PG: encode_value() now returns Result for safe error handling

v0.14.8

January 1, 2026
๐Ÿ”’ Production Hardening - Connection lifecycle, identity columns

Features

  • Terminate on Drop: Sends 'X' packet for graceful connection cleanup
  • Identity Columns: GENERATED ALWAYS AS IDENTITY support
  • SERIAL Fix: Correctly converts to INTEGER in ALTER TABLE

Verified

  • Pool overhead: 9.5ฮผs/checkout (excellent)
  • 3D/4D arrays: Work correctly
  • All chaos tests passed

v0.14.7

January 1, 2026
๐Ÿข Enterprise Shadow Migrations - PlanetScale for Everyone

Features

  • COPY Streaming: Zero-dependency data sync (100+ rows/sec)
  • State Persistence: _qail_shadow_state table for recovery
  • Safe Promote: Apply to primary, don't swap databases
  • Column Intersection: Handles ADD/DROP COLUMN correctly
  • Data Drift Warning: Warns about changes since sync

Stress Tested

  • Promote without shadow โ†’ proper error
  • Double abort โ†’ idempotent
  • ADD COLUMN migration โ†’ verified

v0.14.6

January 1, 2026
๐Ÿš€ 1.3M Queries/Second - 10-Connection Pool Benchmark

Fixed

  • Shadow migration bug - now applies base schema before diff commands
  • Added schema_to_commands() for AST-native schema conversion
  • Updated Migration Impact Analyzer docs with real test output

Performance

  • Pool Benchmark: 78M queries in 60s with 10 connections
  • Single vs Pool: 336K q/s โ†’ 1.3M q/s (~4x throughput)

Added

  • Shadow migration shows [1.5/4] step for base schema
  • Rollback Safety Analysis table in analyzer docs
  • CI/CD integration with GitHub Actions --ci flag

v0.14.4

December 31, 2025
๐ŸŽ๏ธ 27% Faster Than SQLx - Zero-alloc + LRU Cache

Performance (Zero-Alloc Encoding)

  • Reusable sql_buf and params_buf on PgConnection
  • fetch_all() now uses prepared statement caching by default
  • LIMIT/OFFSET use parameterized values ($N) - dramatically improves cache hits

Enterprise Memory Management (LRU Cache)

  • Bounded LRU cache for prepared statements (default: 1000)
  • Auto-evicts least recently used statements when full
  • New clear_cache() and cache_stats() methods

Benchmark Results (50K iterations)

  • qail-pg (cached): 4,534 q/s (221ฮผs)
  • SeaORM: 4,032 q/s - 12% slower
  • SQLx: 3,573 q/s - 27% slower

v0.14.3

December 31, 2025

Added

  • qail migrate create now generates timestamped .up.qail and .down.qail file pairs
  • Format: YYYYMMDDHHMMSS_name.up.qail / YYYYMMDDHHMMSS_name.down.qail
  • Inline metadata: @name, @created, @author, @depends
  • Example: qail migrate create add_users --author "orion"

v0.14.2

December 31, 2025
๐ŸŽ‰ 100% PostgreSQL Coverage - Expressions, DML, and DDL

Wire Protocol Encoders (AST-Native)

  • DISTINCT ON (col1, col2, ...) queries
  • COUNT(*) FILTER (WHERE ...) aggregate syntax
  • Window FRAME clause (ROWS/RANGE BETWEEN ... AND ...)
  • GROUP BY with ROLLUP, CUBE, and GROUPING SETS
  • CREATE VIEW and DROP VIEW DDL
  • Comprehensive tests: complex_test.rs, expr_test.rs

Expression System (100% Grammar Coverage)

  • Expr::ArrayConstructor - ARRAY[col1, col2, ...]
  • Expr::RowConstructor - ROW(a, b, c)
  • Expr::Subscript - Array/string subscripting arr[1]
  • Expr::Collate - Collation expressions col COLLATE "C"
  • Expr::FieldAccess - Composite field selection (row).field
  • GroupByMode::GroupingSets - GROUPING SETS ((a, b), (c))
  • Action::CreateView and Action::DropView

CLI Improvements

  • qail diff --pretty displays MigrationClass (reversible/data-losing/irreversible)

Changed

  • Expr::Window.params from Vec<Value> to Vec<Expr> for native AST philosophy

v0.14.1

December 30, 2025

Fixed

  • Critical bug in encode_update() where column names were encoded as $1 placeholders

Added

  • Comprehensive battle test suite (battle_test.rs) with 19 query operations
  • Modularized values.rs into values/ directory

v0.14.0

December 30, 2025

Added

  • MigrationClass enum for classifying migrations: Reversible, DataLosing, Irreversible
  • Type safety warnings for unsafe rollbacks
  • FK ordering regression tests for parent-before-child table creation

Changed

  • Modularized migrations.rs (1044 lines) into 9 focused modules

v0.13.x

December 2025
  • CTE with RECURSIVE support
  • Connection pooling for qail-pg
  • Enhanced JOIN condition encoding
  • COPY protocol for bulk inserts

Earlier Versions

For complete history, see the full changelog on GitHub .