sids 1.0.3

An actor-model concurrency framework providing abstraction over async and blocking actors.
Documentation
# Changelog

All notable changes to this project 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]

## [1.0.3] - 2026-03-26

### Security

- Published a follow-up patch release from `main` containing the merged security and compatibility fixes from `1.0.2`.

## [1.0.2] - 2026-03-26

### Security

- Updated transitive dependencies to address RustSec advisories in TLS/QUIC stack:
  - `aws-lc-sys` to `0.39.0`
  - `quinn-proto` to `0.11.14`
  - `rustls-webpki` to `0.103.10`

### Fixed

- Restored MSRV CI compatibility for Rust `1.83.0` by pinning `toml` to `1.0.4` and compatible transitive TOML crates.

### Added

- **Actor-Critic Example**: New `examples/actor_critic.rs` for reinforcement learning
  - Multi-armed bandit environment with 3 arms
  - Actor agent learning action policy with softmax selection
  - Critic agent learning value function estimates
  - Coordinator managing training episodes
  - Shows coordinating actors with TD learning

## [1.0.0] - 2026-02-26

### First Stable Release 🎉

This release marks the v1.0.0 stable API baseline with expanded documentation.

### Added

- **API Stability Policy**: Stability guarantees and semantic versioning commitments
  - `docs/STABILITY.md` - Complete API stability documentation
  - Stability markers in code documentation
  - Clear distinction between stable and experimental APIs
- **Performance Benchmarks**: Benchmark suite using Criterion
  - Actor benchmarks: spawn, messaging, concurrency, response handlers, lookup
  - Streaming benchmarks: source creation, pipelines, transformations, operations
  - Benchmark documentation in CONTRIBUTING.md
  - CI integration for benchmark validation
- **Documentation Enhancements**:
  - Module-level documentation in `lib.rs` with stability information
  - Experimental feature warnings for supervision/visualization
  - README link to stability policy

### Changed

- **API Stability Commitment**: All core APIs are now stable
  - Core actor system APIs: guaranteed stable
  - Streaming APIs: guaranteed stable
  - Supervision APIs: marked as experimental, may change in minor versions
- **CI Enhancement**: Added benchmark runs to GitHub Actions workflow
  - Benchmarks run in test mode on all PRs
  - Validates benchmarks compile without errors

### Stability Guarantees

Starting with v1.0.0, SIDS guarantees:

- **Stable APIs**: No breaking changes without major version bump
- **Semantic Versioning**: Strict adherence to semver 2.0.0
- **MSRV**: Minimum Supported Rust Version 1.70.0
- **Feature Flags**: `streaming` stable, `visualize` experimental

For complete details, see [docs/STABILITY.md](docs/STABILITY.md).

## [0.8.0] - 2026-02-26

### Added

- **Actor management APIs**: Four new core APIs for better actor control
  - `stop_actor(&mut system, id)` - Stop a specific actor by ID
  - `list_actors(&system)` - Get all actors with IDs and names
  - `find_actor_by_name(&system, name)` - Find actor ID by name
  - `actor_exists(&system, id)` - Check if actor exists
- Internal actor name tracking for all actors (not just with `visualize` feature)
- Tests for new actor management APIs
- **CONTRIBUTING.md**: Contributor guidelines including development setup, testing, code style, and PR process

### Removed

- **BREAKING**: Removed unused `etl` feature flag from Cargo.toml

## [0.7.0] - 2026-02-26

### Added

- **Error handling system**: Structured error types (`ActorError`, `ConfigError`)
- `ActorResult<T>` and `ConfigResult<T>` type aliases for cleaner code
- `ResponseHandler` trait pattern to replace raw oneshot senders
- Proper error variants for all failure modes
- `ERROR_HANDLING.md` - Complete error handling guide
- `ERROR_HANDLING_REFACTORING.md` - Technical migration guide
- CI/CD pipeline with GitHub Actions
- Security policy (`SECURITY.md`)
- Issue templates and PR template
- Dependabot configuration
- Code coverage reporting
- Automated release workflow

### Changed

- **BREAKING**: All public APIs now return `Result` types instead of panicking
  - `send_message_by_id()` → `ActorResult<()>`
  - `send_message_to_actor()` → `ActorResult<()>`
  - `ping_system()` → `ActorResult<()>`
  - `get_actor_ref()` → `ActorResult<ActorRef<...>>`
  - `get_actor_sender()` → `ActorResult<ActorRef<...>>`
  - `Config::from_toml_str()` → `ConfigResult<Config>`
  - `Config::load_from_file()` → `ConfigResult<Config>`
- **BREAKING**: Response handlers now use `Arc<dyn ResponseHandler<Response>>` instead of `oneshot::Sender`
- Error messages are now structured with context instead of plain strings
- Updated all examples to use proper error handling
- Fixed all compiler warnings (0 warnings)

### Fixed

- Memory leak potential from abandoned oneshot channels
- Static lifetime issues with response channels
- Panic behavior in public APIs - now returns errors instead

### Migration Guide

See `ERROR_HANDLING_REFACTORING.md` for detailed migration instructions from 0.6.x.

**Quick migration:**

```rust
// Old (0.6.x)
send_message_by_id(&mut system, 0, msg).await;

// New (0.7.0)
send_message_by_id(&mut system, 0, msg).await?;
// or
send_message_by_id(&mut system, 0, msg)
    .await
    .expect("Failed to send message");
```

## [0.6.0] - 2026-01-15

### Added

- Streaming module with `Source`, `Flow`, and `Sink` actors
- Backpressure support in streaming pipelines
- File-based data sources
- Stream transformation and filtering
- Integration tests for streaming
- Visualization support with `visualize` feature flag

### Changed

- Improved actor supervision patterns
- Enhanced guardian actor capabilities
- Better concurrent message handling

### Fixed

- Race conditions in actor spawning
- Message ordering issues under high load

## [0.5.2] - 2025-12-10

### Added

- Blocking actor support with dedicated thread pools
- `spawn_blocking_actor()` function
- Response channels for blocking actors
- Examples covering blocking actor patterns

### Fixed

- Thread pool exhaustion under heavy load
- Deadlock scenarios with nested actor calls

## [0.5.1] - 2025-11-20

### Fixed

- Documentation typos and broken links
- Example code compilation issues
- Missing re-exports in public API

## [0.5.0] - 2025-11-15

### Added

- Actor system with guardian actor pattern
- Message passing with `Message<MType, Response>` type
- Actor lifecycle management (spawn, stop, supervision)
- Async actor trait implementation
- Response handling with oneshot channels
- Configuration loading from TOML files
- Multiple examples (chatbot, loggers, supervision)
- Test suite

### Changed

- Refactored actor system architecture for better performance
- Improved message routing efficiency

## [0.4.0] - 2025-10-01

### Added

- Initial actor model implementation
- Basic message passing
- Actor spawning and management

---

## Version History

- **0.7.0** (2026-02-26) - Error handling system, CI/CD, breaking API changes
- **0.6.0** (2026-01-15) - Streaming module, backpressure, supervision
- **0.5.2** (2025-12-10) - Blocking actors, thread pools
- **0.5.1** (2025-11-20) - Bug fixes, documentation
- **0.5.0** (2025-11-15) - Core actor system, configuration
- **0.4.0** (2025-10-01) - Initial release

[Unreleased]: https://github.com/professor-greebie/sids/compare/v1.0.3...HEAD
[1.0.3]: https://github.com/professor-greebie/sids/compare/v1.0.2...v1.0.3
[0.7.0]: https://github.com/professor-greebie/sids/compare/v0.6.0...v0.7.0
[0.6.0]: https://github.com/professor-greebie/sids/compare/v0.5.2...v0.6.0
[0.5.2]: https://github.com/professor-greebie/sids/compare/v0.5.1...v0.5.2
[0.5.1]: https://github.com/professor-greebie/sids/compare/v0.5.0...v0.5.1
[0.5.0]: https://github.com/professor-greebie/sids/compare/v0.4.0...v0.5.0
[0.4.0]: https://github.com/professor-greebie/sids/releases/tag/v0.4.0