Changelog
Complete release history of functional-reactive โ from 0.0.2 in 2017 to the current 06.x line.
The full release history of functional-reactive, current version on top. Major namespace switches and breaking changes are flagged.
For the latest release, see also the blog post.
06.01.01 โ current
Parent BOM updated to com.svenruppert:dependencies:06.01.01. All previous functionality from the 03.x rename remains stable.
<dependency>
<groupId>com.svenruppert</groupId>
<artifactId>functional-reactive</artifactId>
<version>06.01.01</version>
</dependency>
03.00.00 โ BREAKING
Namespace switch. The project moved from org.rapidpm to com.svenruppert. No new features โ purely a coordinated rename.
- New groupId:
com.svenruppert - New parent:
com.svenruppert:dependencies:06.00.00 - Source packages renamed from
org.rapidpm.frp.*tocom.svenruppert.functional.*
Migration: search-and-replace org.rapidpm.frp โ com.svenruppert.functional in your imports, bump the dependency.
02.00.04-SRU
Fixed JDK version in the jitpack YAML.
02.00.03-SRU
Updated parent POM. Minimum Maven version bumped to 3.9.6.
02.00.02-SRU
Switched groupId to 02.00.02-SRU because the jitpack custom-domain mapping was unreliable. Updated to parent 05.00.03-SRU.
02.00.00-SRU โ BREAKING (namespace)
First namespace change. The artifact moved to com.svenruppert:functional-reactive. The 02.x line still used the org.rapidpm.frp Java packages internally; only the Maven coordinates changed. (The Java package rename followed in 03.00.00.)
01.01.00-RPM-SNAPSHOT
Documentation pass: expanded test coverage and added Apache licence headers to every source file. No API changes โ basic structures and functions had been in production use for some time at this point.
01.00.07-RPM
- New:
Transformations.iteratorToStream()โFunction<Iterator<T>, Stream<T>>. - New:
<V, R> Result<R> thenCombineFlat(V value, BiFunction<T, V, R>)onResultโ combine with a plainBiFunction(noResultwrap required). - Started the YouTube series on this library.
- Removed JitCI from the production pipeline.
01.00.03-RPM
Added JitCI for deployment alongside other targets. Dependency version updates.
01.00.02-RPM
- New:
Transformations.asCheckedFunc(Function<T, R>)โ cast a plainFunctionto aCheckedFunction. - New:
Converting.convertToString(),convertToInteger(),convertToDouble(). - New:
SystemPropertiesutility class. - New:
Single<T>(1-tuple) for symmetry withPair,Tripleand friends.
01.00.01-RPM
Bug fix: Result was, in some chains, evaluating its source value twice.
01.00.00-RPM
First “final” release of the 01.x line โ no major changes had landed in months, so it was time to cut a stable version.
- JDK 8 used to build the published JAR.
module-info.javashipped in the_datafolder for JPMS users.
00.07.06-RPM
Parent POM update. Dependency version updates.
00.07.05-RPM
Parent POM update. Added Docker-based deploy scripts.
00.07.04-RPM
Version format change. Switched to 00.07.04-RPM-style versioning (leading zeros + -RPM suffix). Rationale: with many similarly-named dependencies floating around, plain 0.7.4 was easy to mix up between projects. The new format reduces accidental confusion in dependency reports.
0.7.3
- New:
CompletableFutureQueue.thenCombineAsyncFromArray(Function<R, N>[])โ append several stages of the same shape from an array. - Dependency updates.
0.7.2
Bug fix for module-info.java.
0.7.1 โ โ ๏ธ DO NOT USE
module-info.java is broken in this release. Activated JIGSAW; updated to rapidpm-dependencies 4.0.2. Skip this version.
0.7.0 & 0.7.0-JDK8-SNAPSHOT
- Started JDK 10/11 support.
- Used JDK 11 for development, JDK 10 for the deployed artifact.
0.6.2
The latest JDK-8-only release. From here on, the project moved to the JDK 10/11 deployment model.
0.6.1
- Added Docker scripts for cross-JDK compilation.
- Updated parent versions.
- Deactivated the Nexus mirror for Drone CI.
- Deactivated the original IBM JDK 8/9 Docker images.
0.6.0
Maintenance release โ no new functionality.
- Switched to
dependencies:0.6.3(licence-header plugin, version updates, minimised profiles). - Removed an indirect dependency on the old Nexus.
- Updated all file headers.
0.5.3
- New:
CheckedTriFunction<T1, T2, T3, R> extends TriFunction<T1, T2, T3, Result<R>>. - Fixed typos:
unCurryBifunctionโunCurryBiFunction,unCurryTrifunctionโunCurryTriFunction. - New currying for checked functions in
Transformations:curryCheckedBiFunction()โFunction<CheckedBiFunction<A, B, R>, Function<A, CheckedFunction<B, R>>>unCurryCheckedBiFunction()โ the inversecurryCheckedTriFunction()andunCurryCheckedTriFunction()โ same forCheckedTriFunction
0.5.2
Result<T> gains a fluent API: ifFailed, ifPresent and ifAbsent now return Result<T> instead of void, so they can chain.
0.5.1
- Renamed
Tripel(German) โTriple(English). - Pitest now works alongside JUnit 5.
0.5.0
- New:
void ifFailed(Consumer<String>)onResult. - Switched to JUnit 5.
- Updated parent POM to 3.5.7.
0.1.0
- New:
<U> Result<U> asFailure()โ re-type a failure asResult<U>. - New:
<U> Result<U> flatMap(Function<T, Result<U>>)โ chainResult-returning operations. ExceptionFunctions.message()now prefixes the exception’s class name.- New:
CompletableFutureQueueโ the first version of the chainable async pipeline type.
0.0.6
- New:
Function<Exception, String> message()onExceptionFunctions. - New:
Function<Exception, Stream<StackTraceElement>> toStackTraceStream(). - New tuple classes:
Sext,Sept.
0.0.5
- New package
model.serialโSerializablevariants of all tuple classes. - New:
Transformations.curry/unCurryforBiFunctionandTriFunction. - New:
StreamFunctionsโ<T> Function<Predicate<T>, Function<Stream<T>, Stream<T>>> streamFilter(). - New:
Result.ofNullable(...). - Renamed
Result.bind(Consumer<T>, Consumer<String>)โifPresentOrElse(Consumer<T>, Consumer<String>). - New JDK 9-style signature:
ifPresentOrElse(Consumer<? super T> action, Runnable emptyAction). - New JDK 9-style signature:
Stream<T> stream(). - New:
Result<T> or(Supplier<? extends Result<? extends T>>). - New:
void ifAbsent(Runnable). - New:
<U> Result<U> map(Function<? super T, ? extends U>).
0.0.4
- New:
Result.thenCombineandResult.thenCombineAsync. - New:
CheckedBiFunction<T1, T2, R>.
0.0.3
- New:
CheckedPredicate<T>.
0.0.2
The first publicly tagged release with the core types in place.
- Basic data holders:
Pair,Triple,Quad. - New:
Result.fromOptional/Result.toOptional. - New:
CheckedFunction,CheckedConsumer,CheckedSupplier. - Extracted
TriFunctionfromMemoizerinto thefunctionspackage. - New:
QuadFunction. - New:
StringFunctionsโ initial port of patterns from Strman-Java. - New:
Transformations.
Notes on the version-number history
If you came here looking for a clean SemVer history, you’ll have noticed that this project has been through three different versioning schemes:
0.0.xโ0.7.xโ plain SemVer-ish numbers used during the earlyorg.rapidpmyears.00.07.04-RPMโ01.00.07-RPMโ zero-padded version numbers with an-RPMsuffix, introduced in 00.07.04 to reduce confusion in dependency reports.02.xโ06.xโ first undercom.svenruppertgroup ID (02.x, packages stillorg.rapidpm.frp), then a full namespace move in03.x.
The current line (06.x) is the one to use. Everything older is here for archaeological purposes only.