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.tomlwith 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 initnow generates.env.examplealongsideqail.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()withColumnValue<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()withCapabilityProvidertrait for data governance - CapQuery<C>: Capability-gated query builder โ compile-time access control
v0.15.5
February 2026Multi-Tenant Features
- Tenant Injection:
Qail::get("users").with_rls(ctx)โ automatic scope to operator/agent - RLS Policy Codegen:
schema.qailgenerates PostgreSQL RLS policies viaqail migrate - SSH Tunneling:
qail exec --ssh hostfor 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
.qailfiles - Transaction:
--txflag with automatic rollback on error
Documentation
- Updated CLI doc comments to v2 QAIL syntax examples
- Added
qail execto 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:
QdrantPoolwith semaphore concurrency (1.46x faster) - Zero-Copy: Buffer splitting replaces cloning for true zero-alloc
v0.14.10
January 1, 2026New 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, 2026Security
- PG: Reject literal NULL bytes (0x00) in
execute_raw() - PG:
encode_value()now returnsResultfor 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_statetable 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
--ciflag
v0.14.4
December 31, 2025 ๐๏ธ 27% Faster Than SQLx - Zero-alloc + LRU Cache
Performance (Zero-Alloc Encoding)
-
Reusable
sql_bufandparams_bufon 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()andcache_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, 2025Added
-
qail migrate createnow generates timestamped.up.qailand.down.qailfile 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
FRAMEclause (ROWS/RANGE BETWEEN ... AND ...) -
GROUP BYwithROLLUP,CUBE, andGROUPING SETS -
CREATE VIEWandDROP VIEWDDL -
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 subscriptingarr[1] -
Expr::Collate- Collation expressionscol COLLATE "C" -
Expr::FieldAccess- Composite field selection(row).field -
GroupByMode::GroupingSets-GROUPING SETS ((a, b), (c)) -
Action::CreateViewandAction::DropView
CLI Improvements
-
qail diff --prettydisplaysMigrationClass(reversible/data-losing/irreversible)
Changed
-
Expr::Window.paramsfromVec<Value>toVec<Expr>for native AST philosophy
v0.14.1
December 30, 2025Fixed
-
Critical bug in
encode_update()where column names were encoded as$1placeholders
Added
-
Comprehensive battle test suite (
battle_test.rs) with 19 query operations -
Modularized
values.rsintovalues/directory
v0.14.0
December 30, 2025Added
-
MigrationClassenum 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
RECURSIVEsupport - 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 .