Skip to content

Release v0.1.6

Choose a tag to compare

@thanhtham010891 thanhtham010891 released this 27 May 09:38
· 12 commits to main since this release

Benchmark Truthfulness

  • Removed tracemalloc from 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 Heap when
    heap sampling is intentionally disabled and to explain that throughput is now
    measured without tracemalloc
  • 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 when
    NoopTracer is active, eliminating per-record span object allocation on the
    hot path for pipelines that do not collect traces
  • Fixed MapMiddleware to 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_OK singleton fast path
    that write_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 caused
    UnboundLocalError when the queue was active
  • Replaced deprecated asyncio.iscoroutinefunction() usage with
    inspect.iscoroutinefunction() in the middleware and CLI paths that still
    used the old helper

Type Checking

  • Added Any imports and type annotations to untyped functions across
    cli/, config/, core/, runner/, middlewares/, sinks/, sources/,
    schema/, metrics/, and ai/ modules
  • Fixed on_error parameter defaults in all AI middleware subclasses to use
    OnError.PASSTHROUGH enum value instead of the bare string "passthrough"
  • Fixed asyncio.Task, asyncio.Future, and dict generic type arguments
    throughout the codebase
  • Removed stale and incorrect type: ignore comments that mypy flagged as
    unused after other fixes landed