CHANGELOG.md

# 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).

## [0.3.0]

### Added

- Added asynchronous pipeline execution with `async/2` and `async/3` functions
- Added `await/1` function to wait for all pending async tasks to complete
- Added Task.Supervisor for managing async step execution
- Added Application behavior to Extep for proper supervision tree

### Changed

- Enhanced Extep struct with `tasks` field to track pending async operations
- Updated `run/2` and `run/3` to automatically await pending tasks before execution
- Updated `return/2` and `return/3` to handle pending tasks before returning results
- Enhanced error handling to properly shut down tasks when pipeline is interrupted
- Improved function guards and type specifications for better pattern matching

### Technical Details

- The `async/2` function runs checker functions asynchronously without modifying context
- The `async/3` function runs mutator functions asynchronously and stores results under given keys
- All async tasks are executed in parallel and results are merged in order when `await/1` is called
- Pipeline stops at first async task failure, with proper task cleanup
- Backward compatibility maintained - existing synchronous pipelines work unchanged

## [0.2.0]

### Added

- Added `label_error` option to `return/3` for better error debugging and identification
- Added extensive test coverage for `label_error` functionality

### Changed

- Improved `run/2` documentation with clearer explanations of:
  - Function return values and their effects
  - Error message labeling for named vs anonymous functions
  - Pipeline behavior and when functions execute
- Improved `run/3` documentation with detailed explanations of:
  - Parameter requirements and usage
  - Context mutation behavior
  - Error scenarios with step-by-step breakdowns
  - Halt scenarios and pipeline flow control
- Enhanced `return/3` documentation with comprehensive examples covering:
  - Successful pipeline scenarios
  - Error handling with and without labels
  - Halt message handling
  - Different error labeling behaviors
- Improved README.md API documentation with `label_error` usage examples

## [0.1.0] - Previous Release

### Added

- Initial implementation of Extep pipeline runner
- Core functions: `new/0`, `new/1`, `run/2`, `run/3`, `return/2`
- Basic error handling and pipeline flow control
- Railway-oriented programming pattern implementation