Skip to content

Releases: vavr-io/vavr

v1.0.1

01 Mar 06:12
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Fixes a native HashMap serialization bug, which serialized the internal HashArrayMappedTrie structure including the pre-computed hash values of keys.

For keys like enums that use Object.hashCode() (non-deterministic across JVM restarts), these stored hash values would differ in another process, causing lookups to fail.

giphy-3

Full Changelog: v1.0.0...v1.0.1

v1.0.0

09 Feb 20:17
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Vavr started in 2014 as Javaslang, a small experiment in bringing functional programming to Java. Over the years, it grew into a comprehensive library trusted by thousands of projects.

This is the first* stable major release. It marks the point where the API is mature, battle-tested, and ready for long-term production use with full semantic versioning guarantees going forward. Vavr 1.0.0 is intentionally not a revolution. The goal of this release is to formalize the stability that 0.x users have relied on for years, not to reinvent the library.

The 1.0.0 label reflects what has been true in practice for a long time: Vavr is production-ready, stable, and not dead

Thank you to every contributor who filed issues, submitted pull requests, improved documentation, and helped shape the library over the past 12 years.

Philosophy of 1.0.0

1.0.0 is a drop-in replacement for 0.11.0. The API you know is the API you get. If your project compiles against 0.11.0, upgrading to 1.0.0 should be a version bump and nothing more (unless you used the experimental Task API, which was the only removal).

Larger changes - such as an aggressive minimum Java version bump, potential API redesigns, and leveraging modern JVM features - are deliberately staged for Vavr 2.x. The 1.0.0 line will remain a conservative, Java 8-compatible foundation for projects that need long-term stability above all else.

What's Changed

Full Changelog: v0.11.0...v1.0.0

v0.11.0

14 Dec 06:12
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

The day has come - Vavr 0.11.0 is out, marking the first minor release in several years.

giphy

From here on, the focus shifts toward Vavr 1.0.0, starting with a significant Java version bump.

The 0.11.x line will continue to receive bugfixes and maintenance updates, but no new features are planned. Roadmap details can be found here.

Huge thanks to everyone who contributed in any form.

Significant Additions

Lazy For() Comprehension (#3085)

The for-comprehension API has been expanded with lazy, evaluation-friendly signatures that accept functions instead of eagerly-evaluated objects:

Option<Integer> result = API.For(
  calculate1(),
  (r1) -> calculate2(r1),
  (r1, r2) -> calculate3(r1, r2))
  .yield((r1, r2, r3) -> r1 + r2 + r3);

JSpecify Integration (#3113)

Vavr now integrates JSpecify annotations, enhancing null-safety support in IDEs and modern static analysis tools.

Better Future Cancellation (#3107)

As a result of internal refactoring, cancellation is now possible for Futures that have not yet started execution.

Various API Additions

  • Either/Validation.cond()
  • Value.mapTo(U) and Value.mapToVoid()
  • Try.toEither(Throwable -> L)

What's Changed

New Contributors

Full Changelog: v0.10.7...v0.11.0

v0.10.7

20 Jul 11:32
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Maintenance release - fixed broken JavaDoc stylesheets.

btw, we're getting really close to shipping v0.11.0...

Patch Release 0.10.6

01 Feb 13:09
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

This release brings Virtual-Thread-friendliness and documentation updates.

This is the last planned patch release for the 0.10.x train. 0.11.x incoming!

Changes

Full Changelog: v0.10.5...v0.10.6

Committers

🎉 MANY THANKS TO ALL COMMITTERS! 🎉

Patch Release 0.10.5

12 Oct 08:46
Immutable release. Only release title and notes can be modified.

Choose a tag to compare

Vavr is back with a new maintainer, roadmap, and... a release.

image

This release brings various performance enhancements, bugfixes, and explicit jlink-friendly module declarations instead of automatic modules.

Committers

🎉 MANY THANKS TO ALL COMMITTERS! 🎉
@KrnSaurabh @achinaou @sleepytomcat @j-baker @Kevin222004 @pivovarit

Changes

Patch Release 0.10.4

14 Jul 13:53

Choose a tag to compare

Info

This is a maintenance release for the 0.10.x release train. It back ports bug fixes and improvements from the upcoming 1.0.0 release.

Please find the complete list of changes here.

The API Docs can be found here

Committers

🎉 MANY THANKS TO ALL COMMITTERS! 🎉

Changes

Patch Release 0.10.3

15 May 22:08

Choose a tag to compare

Info

This is a maintenance release for the 0.10.x release train.

Please find the complete list of changes here.

The API Docs can be found here

Committers

🎉 MANY THANKS TO ALL COMMITTERS! 🎉

Changes

  • Bugfix: #2583 Backport: Re-adds the automatic module name
  • Improvement: #2575 Backport "Avoid unnecessary copy in 'ofAll()' methods" to v0.10
  • Documentation: #2587 Bumps the copyright year to 2020

Patch Release 0.10.2

02 Aug 16:42

Choose a tag to compare

This patch release fixes the bug of overlapping JPMS module names by removing the Automatic-Module-Name attributes from the MANIFEST.MF files.

The upcoming release v1.0.0 will not have Automatic-Module-Name attributes.

The next release v2.0.0 will have proper JPMS modules.

Bugfix Release 0.10.1

23 Jul 11:18

Choose a tag to compare

Info

This is a maintenance release for the 0.10.x release train.

Please find the complete list of changes here.

The API Docs can be found here

Committers

🎉 MANY THANKS TO ALL COMMITTERS! 🎉

Changes

  • Bugfix: #2430 Future.reduce considers executor
  • Bugfix: #2426 Fixes DistictIterator to not eat null values
  • Bugfix: #2405 Fixes patmat corner case that might produce a ClassCastException
  • Bugfix: #2403 ClassCastException during pattern matching
  • Bugfix: #2399 Fix: CharSeq implements Comparable
  • Improvement: #2400 Improve performance of last() call on TreeMap