Change Log: 0.1.6¶
Released: May 27, 2026
Focus¶
0.1.6 is a confidence release. It tightens CI hygiene, makes benchmark
reporting trustworthy again, and removes a small set of avoidable runtime hot
path costs without introducing new public APIs or changing the core execution
model.
Implemented¶
CI Hygiene¶
- Added
mypyto themake citarget so type checking is part of every local validation pass alongside ruff and pytest - Resolved all 86 pre-existing mypy errors across the codebase so the type checking gate starts clean
Benchmark Truthfulness¶
- Removed
tracemallocfrom the timed path of both core and plugin benchmark lanes so throughput numbers are no longer distorted by heap sampling overhead - Updated the core and plugin benchmark reports to hide
Peak Py Heapwhen heap sampling is intentionally disabled and to explain that throughput is now measured withouttracemalloc - Kept the benchmark lane split (
core,Kafka,Redis) but made the generated reports better match what they actually measure in practice
Runtime Fixes¶
- Fixed
trace_span()to return a zero-allocation singleton scope whenNoopTraceris active, eliminating per-record span object allocation on the hot path for pipelines that do not collect traces - Fixed
MapMiddlewareto cache whether its callable is async at construction time instead of re-running coroutine-function inspection for every record - Fixed
SinkFanOut.write()to use the same_WRITE_OKsingleton fast path thatwrite_batch()already used for single-sink pipelines, avoiding unnecessary list allocation per record - Fixed
MiddlewareChain.stop_all()to continue stopping remaining middlewares when one raises during shutdown, logging each failure instead of aborting the shutdown sequence early - Fixed
AIBatchMiddleware.submit()variable shadowing that causedUnboundLocalErrorwhen the queue was active - Replaced deprecated
asyncio.iscoroutinefunction()usage withinspect.iscoroutinefunction()in the middleware and CLI paths that still used the old helper
Type Checking¶
- Added
Anyimports and type annotations to untyped functions acrosscli/,config/,core/,runner/,middlewares/,sinks/,sources/,schema/,metrics/, andai/modules - Fixed
on_errorparameter defaults in all AI middleware subclasses to useOnError.PASSTHROUGHenum value instead of the bare string"passthrough" - Fixed
asyncio.Task,asyncio.Future, anddictgeneric type arguments throughout the codebase - Removed stale and incorrect
type: ignorecomments that mypy flagged as unused after other fixes landed
Packaging¶
- Bumped
agora-etlto0.1.6