Skip to content

Changelog

0.3.0 (2026-11-06)

⚠ BREAKING CHANGES

  • typed task results with TaskHandle[T] (#90)
  • move the shared worker and scheduler plumbing into one Runner base (#83)

Features

  • OpenTelemetry tracing and metrics, activated when opentelemetry-api is installed (#86) (7379e91)
  • per-task timeout (#85) (7176e38)
  • typed task results with TaskHandle[T] (#90) (b6e9268)

Bug Fixes

  • end RedisConsumer.deliveries() when the Redis client swallows a cancellation (#92) (e5f1120)

Refactoring

  • move the shared worker and scheduler plumbing into one Runner base (#83) (5a3babf)

0.2.0 (2026-11-06)

⚠ BREAKING CHANGES

  • publish through an injected callable so Task no longer holds the App (#80)
  • tasks must be async def (#77)

Refactoring

  • publish through an injected callable so Task no longer holds the App (#80) (5f765e6)
  • tasks must be async def (#77) (6107a2a)

Documentation

  • drop the hand-written release notes (#73) (e030264)
  • keep the release notes in a single file (#69) (76567ae)
  • simplify the release notes steps for a single maintainer (#71) (e051d64)

0.1.0 (2026-11-06)

⚠ BREAKING CHANGES

  • Producer.publish takes a third parameter, options: PublishOptions | None = None; custom producers must accept it (they may ignore it).
  • the store is no longer registered in app.hooks (before_startup and after_shutdown start empty), after_shutdown hooks now run before the store stops, and they no longer run when startup fails. Runner subclasses must implement _serve().
  • every asynk exception now lives in asynk.errors, is exported from asynk and derives from AsynkError only; NotConfiguredError is no longer a RuntimeError, TaskNotFoundError no longer a LookupError, and CronError, DecodeError, EncodeError and InvalidEnvelopeError no longer ValueErrors. The old module paths (asynk.app, asynk.codec, asynk.hooks, ...) no longer provide them. TaskFailedError is renamed DeliveryFailedError.
  • before_task, after_task, BeforeTaskHook, AfterTaskHook and SkipTask are removed; use @app.middleware and TaskCall.skip(). A layer that raises after the task ran is logged and no longer redelivers.
  • require Python 3.11
  • hooks: dedupe hooks by object instead of module.qualname
  • remove the unix socket transport and SqliteStore
  • scheduler: release the slot claim when the publish fails, and add Store.delete (#44)

Features

  • add 3.10+ compatibility and improving some aspects (abd40fe)
  • add a Redis store (asynk[redis]) (#54) (fbc6935)
  • add a Redis Streams transport (asynk[redis]) (#59) (1e1e64a)
  • built-in task retries with backoff (#55) (6635ca1)
  • hooks (#5) (83ad790)
  • pluggable store for task results and scheduler dedupe (#16) (85743d7)
  • scheduler (cron-scheduled tasks) (#9) (89145cd)
  • task middleware, replacing before_task and after_task (#47) (0981b9f)
  • unix transport (#4) (1df1633)
  • unix transport (#6) (ce7a126)

Bug Fixes

  • hooks: dedupe hooks by object instead of module.qualname (af32a4a)
  • scheduler: release the slot claim when the publish fails, and add Store.delete (#44) (4c3ff71)
  • store: purge expired MemoryStore keys and free wait events (08cb4b6)
  • unwind the store when startup fails, and stop it after the shutdown hooks (#53) (f28af37)

Refactoring

  • add AsynkError and consolidate the exceptions in asynk.errors (#51) (b9f42b2)
  • add logging module to centralize logging configuration (#13) (efeda02)
  • improved task naming (6f09550)
  • make Codec a generic value serializer owned by the app (#18) (cc48608)
  • move JSON validation from Envelope to the codec (#14) (d28c787)
  • remove the unix socket transport and SqliteStore (0dbeab9)
  • split codec and transport into interface/implementation packages (a7cb614)

Documentation

  • add dark mode to the documentation site (#52) (e77d036)
  • add the advanced middleware page with a metrics example (#50) (0b61118)
  • add Zensical docs site with API reference and getting started (#46) (6488932)
  • bring docstrings in line with the docstring rules (#48) (12f4fc4)
  • fix python version in readme (#3) (a98aa3c)
  • slim the README and move the details to the documentation site (#49) (eac0cf6)

Miscellaneous

Changelog