v0.3.0 to v0.3.7
v0.3.7 (15 March 2026)
WriterT Transformer, For-Comprehension Power-Ups, Build Tooling, and Spring Virtual Thread Support
This release introduces the WriterT monad transformer with MTL-style capability interfaces, enriches for-comprehensions with parallel composition, traversal operations, and optics integration, adds compile-time Path type checking via the new hkj-checker javac plugin, delivers one-line project setup through build tool plugins (hkj-gradle-plugin and hkj-maven-plugin), and extends Spring MVC with virtual-thread-native return value handlers for VTaskPath and VStreamPath.
- WriterT: Monad transformer for output accumulation across effect boundaries, wrapping
Kind<F, Pair<A, W>>with automatic Monoid-based combining duringflatMapchains - MonadWriter: MTL-style capability interface with
tell,listen,pass,listens, andcensorfor output accumulation - MonadReader: MTL-style capability interface with
ask,local,reader, andasksfor shared environment access - MonadState: MTL-style capability interface with
get,put,modify, andgetsfor stateful computation - par(): Parallel/applicative composition for
ForandForPathcomprehensions; true concurrency onVTask, intent-documenting on sequential monads - traverse/sequence/flatTraverse: Bulk effectful operations within comprehension chains: apply an effectful function across a structure, flip
Structure<Effect<A>>toEffect<Structure<A>>, or traverse-and-flatten in one step - For-Comprehension Optics Integration:
through(Iso)for type-safe value conversion inFor;traverseOver(),modifyThrough(),modifyVia(), andupdateVia()for optics-driven state operations inForState - Fold Combinators:
Fold.plus(),Fold.empty(), andFold.sum()forming a monoid on folds for multi-path data extraction - Compile-Time Path Checks:
hkj-checkerjavac plugin detecting Path type mismatches at compile time forvia,then,zipWith,zipWith3,recoverWith, andorElse - Build Plugins:
hkj-gradle-plugin(one-line Gradle setup) andhkj-maven-plugin(Maven lifecycle extension) that auto-configure HKJ dependencies,--enable-previewflags, compile-time checking, and optional Spring Boot integration - hkj-bom: Bill of Materials POM for version-aligned dependency management across all HKJ modules in both Gradle and Maven
- Diagnostics:
hkjDiagnosticsGradle task andmvn hkj:diagnosticsgoal reporting active dependencies, compiler arguments, and checks - VTaskPath Spring MVC:
VTaskPathReturnValueHandlerconverting controller return values to asyncDeferredResultresponses on virtual threads - VStreamPath SSE:
VStreamPathReturnValueHandlerconverting controller return values to Server-Sent Events with pull-based backpressure, no Reactor required - Dependency updates: Gradle 9.4.0, JUnit 6.0.3, Jackson 3.1.0, Spring Boot 4.0.3, jOOQ 3.20.11, javapoet 0.12.0, and others
- Faster
FunctionValidatorandKindValidatorwith simplified implementation - Test reliability improvements: replaced
Thread.sleepwith Awaitility across test suite
v0.3.6 (6 March 2026)
VStream Lazy Streaming, Resilience Patterns, and ForState Comprehensions
This release introduces VStream, a lazy pull-based streaming type built on virtual threads with full HKT integration, adds four core resilience patterns (Circuit Breaker, Bulkhead, Retry, Saga) with Effect Path integration, extends ForState with filtering and pattern matching, and delivers a Market Data Pipeline capstone example.
- VStream: Lazy pull-based streaming on virtual threads with
Stepprotocol (Emit/Done/Skip), factory methods (of,range,iterate,generate,unfold), transformation combinators, and error recovery - VStream HKT Integration:
VStreamKindwitness type with Functor, Applicative, Monad, Foldable, Traverse, and Alternative type class instances - VStream Parallel Operations:
VStreamParwithparEvalMap,parEvalMapUnordered,parEvalFlatMap,merge,parCollect, and chunking combinators - VStream Resources:
bracket/onFinalizeresource lifecycle management andVStreamReactivebidirectionalFlow.Publisherbridge with backpressure - VStreamPath: Effect Path bridge with factory methods,
PathOpsoperations, terminal operations bridging toVTaskPath, and optics focus bridge - Circuit Breaker: State machine (Closed/Open/HalfOpen) with configurable failure thresholds and recovery timeouts
- Bulkhead: Concurrency limiting for isolating resource access
- Retry: Configurable retry policies with fixed delay, exponential backoff, and jitter
- Saga: Distributed transaction compensation with ordered rollback
- Combined Resilience: Composing multiple resilience patterns and Path API ergonomic methods:
retry(),circuitBreaker(),bulkhead(),timeout() - ForState: Filtering (
when), pattern matching (matchThen), traversals, zoom, andtoState()bridge from For comprehensions at all arities (1–12) - traverseWith(): Parallel effectful optics traversal for
FocusPath,AffinePath, andTraversalPathviaVTaskPathandStructuredTaskScope - Market Data Pipeline: 14-feature capstone example demonstrating concurrent feed merging, parallel enrichment, risk assessment, windowed aggregation, anomaly detection, and circuit breaker failover
- Refreshed Monads chapter with problem-first structure, real-world analogies, and consistent formatting
FunctionValidatoroptimisation: deferred error-message construction avoidsStringallocation on the happy path; fixed Gradle benchmark commands (-Pincludes)- Javadoc generation fix to include annotation-processor-generated sources (
Tuple2–Tuple12,MonadicSteps, etc.) - JMH benchmarks for VStream construction, combinators, terminals, and parallel operations
v0.3.5 (15 February 2026)
Extended For-Comprehensions, VTask API Refinement, and Documentation Restructure
This release extends for-comprehension arity to 12, simplifies the VTask API, adds Maybe-to-Either conversions, upgrades to JUnit 6, and delivers a comprehensive documentation restructure with quickstart guides, cheat sheets, migration cookbooks, and railway diagrams.
- For-Comprehension Arity 12:
ForandForPathnow support up to 12 monadic bindings (previously 5), with generatedTuple9–Tuple12andFunction9–Function12 - VTask API:
VTask.run()no longer declaresthrows Throwable; checked exceptions are wrapped inVTaskExecutionException - Maybe.toEither: New
toEither(L)andtoEither(Supplier<L>)conversion methods for seamlessMaybe→Eithertransitions - Quickstart: New getting-started guide with Gradle and Maven setup including
--enable-previewconfiguration - Cheat Sheet: Quick-reference for Path types, operators, escape hatches, and type conversions
- Stack Archetypes: 7 named transformer stack archetypes with colour-coded railway diagrams
- Migration Cookbook: 6 recipes for migrating from try/catch, Optional chains, null checks, CompletableFuture, validation, and nested records
- Compiler Error Guide: Solutions for the 5 most common Effect Path compiler errors
- Effects-Optics Capstone: Combined effects and optics pipeline example
- Railway operator diagrams for all 8 Effect Path operators and for EitherT, MaybeT, OptionalT transformers
- JUnit 6.0.2 upgrade (from 5.14.1) across all test modules
- Golden file test infrastructure with automated sync verification and pitest mutation coverage improvements
v0.3.4 (31 January 2026)
External Type Optics and Examples Gallery
This release introduces powerful optics generation for external types you cannot modify, plus a new Examples Gallery chapter documenting all runnable examples.
- @ImportOptics: Generate optics for JDK classes and third-party library types via auto-detection of withers and accessors
- Spec Interfaces: Fine-grained control over external type optics with
OpticsSpec<S>for complex types like Jackson'sJsonNode - @ThroughField Auto-Detection: Automatic traversal type detection for
List,Set,Optional, arrays, andMapfields - Examples Gallery: New chapter with categorised, runnable examples demonstrating core types, transformers, Effect Path API, and optics
- Comprehensive hkj-processor testing improvements with enhanced coverage
v0.3.3 (24 January 2026)
Structured Concurrency, Atomic Optics, and Enhanced Examples
This release introduces structured concurrency primitives, atomic coupled-field updates, and a comprehensive Order Workflow example demonstrating these patterns.
- Structured Concurrency:
Scopefor parallel operations withallSucceed(),anySucceed(),firstComplete(), andaccumulating()joiners - Resource Management:
Resourcefor bracket-pattern cleanup with guaranteed release - Coupled Fields:
Lens.pairedfor atomic multi-field updates bypassing invalid intermediate states - Order Workflow Overview: Reorganised documentation with focused sub-pages
- Concurrency and Scale: Context, Scope, Resource, VTaskPath patterns in practice
EnhancedOrderWorkflow: Full workflow demonstrating Context, Scope, Resource, VTaskPathOrderContext: ScopedValue keys for trace ID, tenant isolation, and deadline enforcement- Scope & Resource Tutorials: 18 exercises on concurrency patterns
- Release History: New page documenting all releases
v0.3.2 (17 January 2026)
Virtual Thread Concurrency with VTask
This release introduces VTask<A>, a lazy computation effect leveraging Java 25's virtual threads for lightweight concurrent programming.
- VTask: Lazy computation effect for virtual thread execution
- Structured Concurrency:
Scopefor parallel operations withallSucceed(),anySucceed(), andaccumulating()patterns - Resource Management:
Resourcefor bracket-pattern cleanup guarantees - VTaskPath: Integration with the Effect Path API
- Concurrency and Scale: Practical patterns in the Order Workflow example
Parparallel combinators for concurrent execution- Comprehensive benchmarks comparing virtual vs. platform threads
v0.3.1 (15 January 2026)
Static Analysis Utilities
This release adds utilities for statically analysing Free Applicative and Selective functors without execution.
- Choosing Abstraction Levels: Guide to selecting Functor, Applicative, Selective, or Monad
- Free Applicative: Static analysis with
FreeApAnalyzer - Selective: Conditional effects with
SelectiveAnalyzer - Tutorial 11 on static analysis patterns
v0.3.0 (4 January 2026)
Effect Path Focus Integration
Major release introducing the unified Effect Path API and Focus DSL integration. Requires Java 25 baseline.
- Effect Path Overview: The railway model for composable effects
- Path Types: 17+ composable Path types including
EitherPath,MaybePath,IOPath - Focus DSL: Type-safe optics with annotation-driven generation
- Focus-Effect Integration: Bridge between optics and effects
- ForPath Comprehension: For-comprehension syntax for Path types
- Spring Boot Integration: Spring Boot 4.0.1+ support
- Order Workflow: Complete example demonstrating Effect Path patterns
Previous: v0.4.0 Next: v0.1.0 to v0.2.8