[0.2.1] - 2026-03-12
Patch release focused on HTTP retry semantics, registry durability, and concurrency safety across shared limiters.
Added
- Method-aware HTTP retry classification via
Foundation.Retry.HTTP.retryable_status_for_method?/3 - Method-aware retry decisions via
Foundation.Retry.HTTP.should_retry_for_method?/3 - Support for
Retry-AfterHTTP-date values inFoundation.Retry.HTTP.parse_retry_after/2 - Backoff policy aliases (
:base_delay_ms,:max_delay_ms) and string strategy names - Shared internal ETS registry helpers used by circuit breakers, rate-limit windows, and counting semaphores
Changed
- Circuit breaker registry calls now reserve half-open probes with CAS updates to enforce concurrency limits
- Dispatch snapshots now reflect backoff applied directly to the shared limiter
- Backoff windows now extend active deadlines instead of shortening them, and
wait/2re-checks after wakeups - Default ETS registries are reused or recreated more safely across owner exits
- ExDoc was updated to
0.40.0
Fixed
- HTTP-date parsing now degrades gracefully when
:httpd_utilis unavailable at runtime - Release docs and package metadata now explicitly clarify the 0.2.x rewrite and 0.1.x incompatibility
[0.2.0] - 2026-01-08
Complete rewrite focusing on lightweight, composable resilience primitives.
This release is not compatible with the 0.1.x series, and there is no direct upgrade path.
Added
Backoff (Foundation.Backoff)
- Configurable backoff policies with exponential, linear, and constant strategies
- Jitter support: none, factor, additive, and range strategies
- Pluggable random functions for deterministic testing
Retry (Foundation.Retry)
- Generic retry orchestration with
PolicyandStatestructs - Configurable max attempts, elapsed time limits, and progress timeouts
- Support for custom
retry_onpredicates andretry_after_ms_funcallbacks
Retry Helpers (Foundation.Retry.*)
Config- retry configuration struct with sensible defaultsHandler- stateful retry handler built from configHTTP- HTTP-specific utilities: status classification,Retry-AfterparsingRunner- generic retry runner with telemetry hooks and exception handling
Polling (Foundation.Poller)
- Generic polling loop with backoff, timeout, and max-attempts controls
- Async execution via
Taskwith graceful shutdown - Custom exception handlers
Rate Limiting (Foundation.RateLimit.BackoffWindow)
- Shared backoff windows for rate-limited APIs
- ETS-backed per-key limiter registry using atomic backoff deadlines
Circuit Breaker (Foundation.CircuitBreaker)
- Pure functional circuit breaker state machine (closed/open/half-open)
- Configurable failure threshold, reset timeout, and half-open call limits
Foundation.CircuitBreaker.Registry- ETS-backed registry with heir support
Semaphores (Foundation.Semaphore.*)
Counting- ETS-backed counting semaphore with blocking acquireWeighted- GenServer-backed weighted semaphore for byte budgetsLimiter- simple process-based semaphore for quick concurrency limits
Dispatch (Foundation.Dispatch)
- Layered dispatch limiter combining concurrency, throttling, and byte budgets
- Automatic throttle mode under backoff pressure
- Configurable byte penalty multipliers
Telemetry (Foundation.Telemetry)
- Lightweight wrappers around
:telemetry.execute/3 measure/3helper for timing function execution- Optional
telemetry_reporterintegration for reporter lifecycle management
Changed
- Minimum Elixir version is now 1.15
- Only runtime dependency is
telemetry ~> 1.2
Removed
- Legacy infrastructure wrappers (fuse, hammer, poolboy integrations)
- Configuration server and event store services
- Process registry and service registry modules
- All 0.1.x application supervision tree and runtime services
[0.1.5] - 2025-06-12
Added
- Service lifecycle integration tests
- Config logic unit tests
- Additional event store tests
- Utils test coverage improvements
Changed
- Flagged slow tests for better CI performance
- Updated test helper infrastructure
Fixed
- Resolved various issues discovered from expanded test coverage
[0.1.4] - 2025-06-06
Fixed
- Connection manager test reliability improvements (Fixes #4)
[0.1.3] - 2025-06-06
Added
- CHANGELOG.md updates
Fixed
- Event store query and validation improvements (Fixes #2)
- Event validator enhancements
[0.1.2] - 2025-06-06
Added
- Telemetry service with histogram API support
- Circuit breaker initialization tests
- Infrastructure module enhancements
- Documentation for Python bridge integration
Fixed
- Race condition in connection manager tests (Fixes #1)
- Dialyzer warnings cleanup
[0.1.1] - 2025-06-05
Fixed
- GitHub CI configuration bug
- Test infrastructure improvements for graceful degradation tests
- Chaos resilience test stability
[0.1.0] - 2025-06-05
Initial release of Foundation - an Elixir infrastructure library.
Added
Core Infrastructure
- Circuit breaker pattern implementation via Fuse integration
- Rate limiting via Hammer integration
- Connection pooling via Poolboy integration
- Configuration management with ConfigServer GenServer
- Event store for application events
Services
Foundation.Config- Runtime configuration managementFoundation.Events- Event publishing and queryingFoundation.Infrastructure- Circuit breakers, rate limiting, connection pools
Testing
- Comprehensive test suite with 506 tests and 49 property-based tests
- Test helpers and mock infrastructure
- Integration and stress tests
Documentation
- Architecture documentation
- API documentation with ExDoc