Changelog

All notable changes to ulak will be documented in this file.

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

0.1.0 (2026-09-07)

⚠ BREAKING CHANGES

  • sql: ulak_application and ulak_monitor lose SELECT on ulak.endpoints (use ulak.endpoint_status); ulak.prevent_payload_modification() is removed; redrive_message() raises for DLQ rows that are not in failed state.
  • core: ulak.database requires a server restart to change (pg_reload_conf no longer applies it), and metrics() no longer returns spawns_total, spawn_failures_total or restarts_total.

Features

  • sql: endpoint_status view, tighter grants, single queue trigger and 0.1.0 upgrade path (0ffc72e)

Bug Fixes

  • http: stable webhook ids, whsec_ secrets, stricter SSRF guard and 4xx handling (9f2d3d4)
  • kafka: fix use-after-free in batch growth and stale delivery callbacks (cdc4aec)
  • mqtt: wait for the broker acknowledgement on synchronous QoS ½ publishes (52a4059)
  • nats: confirm JetStream publishes via AckHandler instead of dropping errors (02ae498)
  • nats: require the result buffer in dispatch_ex (2f85dcb)
  • resolve v0.0.3 review findings and prepare the 0.1.0 upgrade path (64aafb5)
  • worker: drain LISTEN queue, defer rate-limited rows and expire messages (948ed2f)

Code Refactoring

  • core: remove dead launcher, DSM and entity layers; log endpoint DDL at LOG level (6438255)

Documentation

  • readme: link test directories with relative paths (19aca5c)

Continuous Integration

  • fail the clang-tidy gate on errors and suppress cppcheck’s branch-limit notice (73b1d31)

Miscellaneous

  • release: list every commit type in the changelog (f8b29ae)
  • release: verify the extension upgrade chain reaches the released version (569fa79)

0.0.3 (2026-05-12)

Bug Fixes

  • trigger release for accumulated worker and ci fixes (#6) (4e7b59f)

0.0.2 (2026-04-15)

Bug Fixes

  • add manual trigger to Docker publish workflow (dfa5fa8)

0.0.1 (2026-04-15)

Features

[0.0.0]

Added

  • Core transactional ulak with send(), send_with_options(), send_batch(), and send_batch_with_priority() functions.
  • Pub/Sub system with publish(), publish_batch(), event types, and subscriptions.
  • Six protocol dispatchers: HTTP (always enabled), Kafka, MQTT, Redis Streams, AMQP, and NATS (conditional compilation via ENABLE_* flags).
  • Batch dispatch support for Kafka, MQTT, and AMQP with async produce/flush.
  • Multi-worker background processing with modulo-based queue partitioning (bgw_main_arg = (total_workers << 16) | worker_id).
  • Circuit breaker per endpoint with configurable threshold and cooldown.
  • Dead-letter queue (DLQ) with redrive_message(), redrive_endpoint(), redrive_all(), and dlq_summary().
  • Monthly-partitioned archive table with replay_message() and replay_range().
  • Backpressure control via max_queue_size GUC.
  • GUC parameters covering core, retry, circuit breaker, HTTP, Kafka, Redis, MQTT, AMQP, NATS, data retention, and response capture.
  • RBAC with three roles: ulak_admin, ulak_application, ulak_monitor.
  • HTTP dispatcher with libcurl, curl_multi batching, SSRF protection, OAuth2, SigV4, and Bearer/Basic/API-key authentication.
  • Kafka dispatcher with librdkafka, delivery reports, and batch produce.
  • MQTT dispatcher with libmosquitto, QoS levels, and PUBACK-based batch mode.
  • Redis Streams dispatcher with hiredis, TLS support, and consumer groups.
  • AMQP dispatcher with librabbitmq, publisher confirms, and batch produce.
  • NATS dispatcher with Core NATS / JetStream publishing and batch flush support.
  • Shared memory worker registry with LWLock coordination.
  • LISTEN/NOTIFY integration for low-latency message wake-up.
  • FOR UPDATE SKIP LOCKED concurrent queue consumption.
  • Ordering key support for per-key sequential delivery.
  • Idempotency key support with conflict detection.
  • Scheduled message delivery via scheduled_at parameter.
  • Message TTL with automatic expiration via mark_expired_messages().
  • CloudEvents envelope support for HTTP dispatcher.
  • Webhook HMAC signature verification.
  • 27 regression tests, 12 isolation tests, and 3 TAP tests with make installcheck.
  • Docker Compose development environment with all protocol services.
  • GitHub Actions CI for PostgreSQL 14-18 testing and static analysis.

This entry describes the initial contents of version 0.0.0.