Saltar al contenido principal
Version: 0.10.0

Release Notes

Quark is documented here as a v0.x project (currently v0.9.0 — late-alpha, not yet v1.0 production-ready). The public surface is broad and the core is stable, but some APIs may still move before v1.0.

Per-version release notes live in the main repository under docs/RELEASE_NOTES_*.md. The current tag is documented at docs/RELEASE_NOTES_v0.9.0.md. Migration steps for breaking changes are at docs/MIGRATION_v0.9.0.md.

v0.9.0

Phase 5: PostgreSQL engine-enforced multi-tenancy (RowLevelSecurityNative + the quarktenant policy CLI), transactional After* hooks that fire post-commit plus BeforeFind/AfterFind, Tx.OnCommit/Tx.OnRollback + quark.TxFromContext, a real EventBus (Client.UseEventBus), and an optional audit log (Client.EnableAuditLog) written atomically with each write. Two breaking-minor changes — see MIGRATION_v0.9.0.md.

v0.4.0 – v0.8.0

Phases 2–4: composable query builder (typed AST, subqueries, CTEs, window functions, set operators, pessimistic locking); schema-as-code migrations (introspection, pure-Go diff, transactional/resumable apply, quarkmigrate CLI, backfill); observability + production caché (OTel metrics, span redaction, slow-query log, stampede protection, deadlock retry); per-column timezones and Array[T]. Per-version notes are in-repo under docs/RELEASE_NOTES_v0.{4,5,6,7,8}.0.md.

v0.3.0

First proper tag since v0.1.1. Bundles Phase 0 P0 fixes (security, correctness) with the Phase 1 deliverables (rich types, dirty tracking, optimistic locking, soft-delete scopes). See the in-repo release notes for the full breakdown.

v0.1.0

Public release baseline.

Core

  • Generic Query[T] entry point through quark.For[T](ctx, provider).
  • Immutable builder methods for predictable query composition.
  • CRUD helpers for create, update, delete, hard delete, upsert, and map updates.
  • Read helpers for Find, First, List, Count, aggregates, pagination, streaming, and cursors.
  • Validation through validate tags and model-level Validate(context.Context) error.
  • Lifecycle hooks for create, update, and delete paths.

Dialects

  • SQLite, PostgreSQL, MySQL, MariaDB, SQL Server, and Oracle dialects.
  • Dialect-specific placeholders, identifier quoting, pagination, upsert SQL, generated-ID handling, JSON extraction, and DDL helpers.
  • Custom dialect registration through RegisterDialect.

Schema

  • Migrate for table and many-to-many join-table creation.
  • Sync for additive changes, renames, and controlled destructive drops.
  • CreateIndex and AddForeignKey helpers.
  • Versioned Go migrations through github.com/jcsvwinston/quark/migrate.

Relations

  • Preload for has_one, has_many, belongs_to, many-to-many, and polymorphic relations.
  • Recursive association persistence for common aggregate saves.
  • Tenant context propagation through association loads and saves where tenant columns are present.

Production Features

  • Transactions, manual transactions, savepoints, and nested savepoint-style callbacks.
  • TenantRouter with database-per-tenant, schema-per-tenant, and row-level strategies.
  • Cache abstraction with memory and Redis stores.
  • Query observers, middleware, and OpenTelemetry middleware.
  • SQLGuard validation for identifiers, operators, and raw-query escape hatches.

Compatibility Notes

  • The current module tree does not include a standalone cmd/quark CLI.
  • DeleteBy and DeleteBatch perform hard deletes.
  • Select accepts simple identifiers rather than arbitrary SQL expressions.
  • Raw SQL APIs require AllowRawQueries: true.
  • Migration commands that use migrate.Migrator should use a client configured with AllowRawQueries: true.