aimdb-executor 0.2.0

Pure async executor trait definitions for AimDB - runtime-agnostic abstractions
Documentation
# Changelog - aimdb-executor

All notable changes to the `aimdb-executor` crate will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [0.2.0] - 2026-05-22

### Added

- **`TimeOps::duration_as_nanos`** — new required method on the `TimeOps` trait that returns the number of whole nanoseconds in a `Self::Duration`. Introduced for stage profiling (Issue #58) so features can convert elapsed time to a numeric, runtime-agnostic representation without binding to `std::time`. Implementations should saturate rather than overflow for durations larger than `u64::MAX` nanoseconds.
- **Join fan-in traits (Design 027)**: Runtime-agnostic abstraction for multi-input transform fan-in queues, replacing the previous `tokio::sync::mpsc`-only path in `aimdb-core`.
  - `JoinFanInRuntime` trait — runtime capability for creating bounded fan-in queues; implemented per adapter.
  - `JoinQueue<T>` trait — splittable into `Sender` / `Receiver` halves.
  - `JoinSender<T>` / `JoinReceiver<T>` traits — `async fn send` / `async fn recv` returning `ExecutorResult<()>`.
- **`ExecutorError::QueueClosed`** variant — returned by `JoinSender::send` / `JoinReceiver::recv` when the channel is closed (Tokio, WASM). Embassy channels never close, so this variant is unreachable on Embassy.

## [0.1.0] - 2025-11-06

### Added

- Initial release of runtime executor abstraction traits
- `RuntimeAdapter` trait for platform identification
- `Spawn` trait for async task spawning
- `TimeOps` trait for time operations (now, sleep)
- `Logger` trait for logging abstraction
- `no_std` compatibility for embedded targets
- Cross-platform support for Tokio and Embassy runtimes

---

[Unreleased]: https://github.com/aimdb-dev/aimdb/compare/v0.2.0...HEAD
[0.2.0]: https://github.com/aimdb-dev/aimdb/compare/v0.1.0...v0.2.0
[0.1.0]: https://github.com/aimdb-dev/aimdb/releases/tag/v0.1.0