Changelog

View Source

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[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