FJ 4.3 now available

163 views
Skip to first unread message

Mark Perry

unread,
Feb 14, 2015, 2:27:24 AM2/14/15
to functio...@googlegroups.com

I have released FunctionalJava 4.3 and the artifacts are now available from Maven Central.  I have repeated the 4.3 release notes from https://github.com/functionaljava/functionaljava/blob/master/etc/release-notes/release-notes-4.3.adoc below.  Thanks to everyone who contributed to this release as noted in the release notes.

Mark

= Release 4.3

Released: 14 February 2015

== Enhancements

* Added toInt and fromInt to fj.Ordering (#71)
* Added Java 8 collectors (#69)
* Made Seq.empty() and List.nil() return singleton instances (#70)
* Made anonymous classes using lamdas (#67)
* Improved show for list, tree, set, treemap, stream, array, V arity 2 to 8, HList (#77)
* Added TreeMap.splitLookup (#4)
* Add union to TreeMap (#83)
* Added List.isSingle (#84)
* Added Option traverse family of methods (#85)
* Added equals, hashCode and toString to classes P's, Array, Either, List, Option, Seq, Set, Stream, Tree, TreeMap, Validation (#75, #86)
* Added release notes as asciidoc (#92)
* Added F0 interface (#93)
* Added wrapper functions for function interfaces arity 1 and 2 (#94)
* Enhanced implementation of equals for standard classes (#95)
* Added traverse method family to P1, P2, Either, List, Validation (#80)
* Enhanced integration with basic Java types (#99)
* Made artifact OSGI compatible, suitable as Eclipse plugin (#72)
* Added predicate combinators (#98)

== Fixes

* Fixed TreeMap.split (#4, #79)
* Fixed Option.fromNull javadoc (#73)
* Fixed Try javadoc (#91)
* Fixed stack overflow in TreeMap.update (#97)
* Fixed concurrency issue with P1.memo (#105)

== Breaking Changes

* #93 added the F0 interface which P1 implements. This could break code where the _1 method for a new P1 called the method 'f' outside P1's scope. Making P1 implement F0 means that P1 now has an 'f' method which hides the visibility of the previously visible outer 'f'. You can fix this by using P.lazy, as per the example below.

[source,java]
----
// old code
return fromString(s.some()).append(new P1<Stream<Character>>() {
public Stream<Character> _1() {
return f(reader); // call outer f, 4.3 code change breaks this
}
});

// new code
return fromString(s.some()).append(P.lazy(u -> f(reader))); // outer f now visible
----


== Documentation

* Added contributors from commit log.

== Contributors

* Mark Perry
* Amar Potghan
* Dobes Vandermeer
* Paul Horn
* Alexey Mz
* daneko
* Greg Row


Reply all
Reply to author
Forward
0 new messages