Release History

What changed in each version of Higher-Kinded-J, and what to do when you move to it. Each release has notes, most with a link from each change to the issue or pull request behind it.

  • Upgrading? Upgrading lists, release by release, what can stop a build that compiled or change what a program does. It also lists every API due for removal in 0.5.0.
  • Following main? Unreleased: 0.5.0 collects the changes since 0.4.11.
  • Looking for a feature? Since which version? names the release that first shipped it.
  • Searching every release at once? The book's search reads every page of this chapter.

Releases at a glance

VersionReleasedHeadlineUpgrade notes
0.4.113 October 2026Generated client models map as generated, and the processor stops more shapes at the declarationTo 0.4.11
0.4.1030 August 2026Standard codecs, generic optics that compile, one answer from the Focus DSLTo 0.4.10
0.4.931 July 2026The record mapper: every wire shape, both PATCH styles, one rule for nullTo 0.4.9
0.4.817 July 2026Async typed errors, path-native resilience, accumulating validation and record mappingNone
0.4.726 June 2026Declarative Spring HTTP clients and type-safety improvementsTo 0.4.1 through 0.4.8
0.4.67 June 2026Optic-driven request batching, guardrails, and n-ary coupled lensesRemovals in 0.5.0
0.4.522 May 2026The Instances facade, more compile-time checks, and hardened migration recipesTo 0.4.1 through 0.4.8
0.4.416 May 2026The hkj-test module, PCollections integration, and type class enrichmentsRemovals in 0.5.0
0.4.37 May 2026Pluggable HTTP error status, header carriers, and a documentation refreshTo 0.4.1 through 0.4.8
0.4.218 April 2026EffectBoundary, Claude Code skills, and Spring HTTP ergonomicsTo 0.4.1 through 0.4.8
0.4.18 April 2026Effect handlers, Spring observability, and monad transformer enhancementsTo 0.4.1 through 0.4.8
0.4.022 March 2026SPI-aware path widening, an expanded generator plugin ecosystem, and a Focus DSL restructureNone
0.3.715 March 2026WriterT, MTL capabilities, smarter comprehensions, and one-line build setupNone
0.3.66 March 2026VStream lazy streaming, resilience patterns, and ForState comprehensionsNone
0.3.515 February 2026Extended for-comprehensions, a VTask API refinement, and a documentation restructureTo 0.3.5
0.3.431 January 2026External type optics and the examples galleryNone
0.3.324 January 2026Structured concurrency, atomic optics, and enhanced examplesNone
0.3.217 January 2026Virtual thread concurrency with VTaskNone
0.3.115 January 2026Static analysis utilitiesNone
0.3.04 January 2026The Effect Path API with Focus DSL integrationTo 0.3.0
0.1.0 to 0.2.8May to December 2025The HKT core types, optics, the Free monad, and the first Effect Path API and Focus DSLv0.1.4 notes

Since which version?

The release that first shipped each feature, with the page that teaches it.

Types and effects

FeatureSinceRead about it
Either, Try, IO, Lazy, Reader, State, Writer and EitherT0.1.0Monads
For comprehensions0.1.5For Comprehension
The Free monad and Trampoline0.2.0Free Monad
The Effect Path API0.2.6Effect Path Overview
ForPath comprehensions0.2.8ForPath Comprehension
WriterT and the MTL capability interfaces0.3.7WriterT
Effect handlers: @EffectAlgebra and @ComposeEffects0.4.1Effect Handlers
The Instances facade0.4.5Obtaining Instances
VResultPath0.4.8VResultPath
NonEmptyList and EitherOrBoth0.4.8NonEmptyList, EitherOrBoth

Optics

FeatureSinceRead about it
Lens, Iso, Prism and Traversal, generated from annotations0.1.6Optics
The Focus DSL0.2.5Focus DSL
Coupled fields: Lens.paired0.3.3Coupled Fields
Optics for types you cannot change: @ImportOptics0.3.4Importing Optics
Traversal generator plugins0.1.6Generator Plugins
SPI path widening, and generators for Guava, Vavr, Eclipse Collections and Apache Commons0.4.0Generator Plugins
Optic-driven request batching0.4.6Optic-Driven Batching

Validation and mapping

FeatureSinceRead about it
Accumulating assembly: fields(), accumulate() and @GenerateAssembly0.4.8Validated Assembly
@GenerateMapping and @GenerateMerge0.4.8Mapping at the Boundary
Bean-shaped wires and sparse PATCH with UpdateSpec0.4.9Bean-Shaped Wires, Sparse PATCH
Standard codecs0.4.10Standard codecs
protobuf-java messages and openapi-generator models0.4.11Bean-Shaped Wires
One-directional beans and @ReadOnly properties0.4.11One-directional beans, Properties you only read
JsonNullable properties in a sparse PATCH0.4.11What each JSON state does
@Flatten: a nested record on a flat wire0.4.11Flattening a nested component
Specs that nest, dispatch and merge across modules0.4.11Across modules

Concurrency and resilience

FeatureSinceRead about it
VTask on virtual threads0.3.2VTask
Structured concurrency with Scope0.3.3Structured Concurrency
VStream lazy streaming0.3.6VStream
Retry policies0.2.6Retry
Circuit breaker, bulkhead and saga0.3.6Resilience
One with* resilience vocabulary across every Path0.4.8Resilience

Spring

FeatureSinceRead about it
EffectBoundary for Free programs0.4.2EffectBoundary Integration
Pluggable error status: ErrorStatusCodeStrategy0.4.3Spring Boot Integration
Declarative HTTP clients: @HkjHttpClient0.4.7Declarative HTTP Clients
The 422 response for every bad field0.4.9The 422 leg

Tooling

FeatureSinceRead about it
Build plugins, hkj-bom and compile-time checks0.3.7Build Plugins, Compile-Time Checks
Claude Code skills0.4.2Claude Code Skills
hkj-test assertions0.4.4Testing With hkj-test
PCollections integration0.4.4PCollections Integration
Migration recipes on Maven Central: hkj-openrewrite0.4.11Migration Recipes

See Also


Previous: Concurrency & Resilience Next: Upgrading