Skip to content

goio v0.5.0-beta.1

Pre-release
Pre-release

Choose a tag to compare

@Primetalk Primetalk released this 17 Sep 18:44
· 4 commits to master since this release
a5eff22

Release Notes

v0.5.0-beta.1 (2026-09-17)

Compatibility

  • Raises the minimum supported Go version from Go 1.26 to Go 1.27.
  • Keeps v0.4.x available as the final Go 1.26-compatible release line.

Generic methods

  • Adds Map, FlatMap, and Fold methods to io.IO.
  • Adds Map, FlatMap, and Through methods to stream.Stream.
  • Adds Map, FlatMap, and Use methods to resource.Resource.
  • Adds Map, FlatMap, and Match methods to option.Option.
  • Adds Fold to either.Either.
  • Retains all existing package-level combinators as supported APIs.

The methods are thin delegates to the existing combinators and preserve their laziness, error handling, stream state, and resource-release behavior.

This prerelease is intended to gather experience with the method names and chaining style before the stable v0.5.0 API is finalized.

v0.4.0 (2026-09-17)

Compatibility

  • The minimum supported Go version is raised from Go 1.18 to Go 1.26.
  • Maintained releases now support the two most recent stable Go release families, currently Go 1.26 and Go 1.27.
  • This is a compatibility-breaking change and is therefore assigned to the v0.4.0 release line.
  • Users that cannot upgrade their Go toolchain can remain on v0.3.7, which retains the Go 1.18 module floor.
  • v0.4.x is the final release line supporting Go 1.26. Development after v0.4.0 targets Go 1.27 so that goio can adopt generic methods.

See MIGRATION.md for downstream upgrade instructions.

Validation policy

  • Ordinary tests run on Go 1.26 and Go 1.27 across Linux, Windows, and macOS.
  • Race-detector validation runs on Go 1.27 Linux.
  • The repository coverage badge is generated by one deterministic Go 1.26 Linux job.
  • Codecov coverage runs on Go 1.27 Linux.

Runtime stabilization

  • Prevents Async callback delivery from deadlocking when completion races with registration.
  • Makes fiber result publication and closure safe under concurrent completion, joining, and shutdown.
  • Ensures nested resources are released in reverse acquisition order, including failed inner acquisition, while preserving the primary error when cleanup also fails.
  • Recovers panics that cross documented IO execution boundaries and clarifies where direct invocation remains an ordinary Go call.
  • Adds bounded tests for timeout, race-selection, continuation-depth, fiber-close, panic, and resource-cleanup behavior.

API additions

  • Adds fun.ConstNoArg and fun.Delay.
  • Adds slice.BuildIndex, slice.Distinct, slice.Intersperse, and slice.ToSlice.
  • Adds stream.EvalEmpty, stream.Fib, and stream.StepResultMatch.
  • Renames option.Fold to option.Match.

Compatibility boundary

The Go version increase and the option.Fold rename require downstream attention. This release does not claim cancellation or structured-concurrency support, and it does not change the documented non-cancelling nature of timeout and first-result race operations.

Dependency upgrades and source modernization enabled by the newer floor are intentionally deferred to focused follow-up changes.