functional-reactive
Made in the European Union

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.* to com.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>) on Result โ€” combine with a plain BiFunction (no Result wrap 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 plain Function to a CheckedFunction.
  • New: Converting.convertToString(), convertToInteger(), convertToDouble().
  • New: SystemProperties utility class.
  • New: Single<T> (1-tuple) for symmetry with Pair, Triple and 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.java shipped in the _data folder 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 inverse
    • curryCheckedTriFunction() and unCurryCheckedTriFunction() โ€” same for CheckedTriFunction

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>) on Result.
  • Switched to JUnit 5.
  • Updated parent POM to 3.5.7.

0.1.0

  • New: <U> Result<U> asFailure() โ€” re-type a failure as Result<U>.
  • New: <U> Result<U> flatMap(Function<T, Result<U>>) โ€” chain Result-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() on ExceptionFunctions.
  • New: Function<Exception, Stream<StackTraceElement>> toStackTraceStream().
  • New tuple classes: Sext, Sept.

0.0.5

  • New package model.serial โ€” Serializable variants of all tuple classes.
  • New: Transformations.curry/unCurry for BiFunction and TriFunction.
  • 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.thenCombine and Result.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 TriFunction from Memoizer into the functions package.
  • 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:

  1. 0.0.x โ€“ 0.7.x โ€” plain SemVer-ish numbers used during the early org.rapidpm years.
  2. 00.07.04-RPM โ€“ 01.00.07-RPM โ€” zero-padded version numbers with an -RPM suffix, introduced in 00.07.04 to reduce confusion in dependency reports.
  3. 02.x โ€“ 06.x โ€” first under com.svenruppert group ID (02.x, packages still org.rapidpm.frp), then a full namespace move in 03.x.

The current line (06.x) is the one to use. Everything older is here for archaeological purposes only.