Releases: GlenKPeterson/Paguro
Map.keyIterator() and .valIterator()
Added Nate Austin's memory-efficient iteration of just keys or just values from maps. Thank you Nate!
3.0.19 RRB Tree Split Bounds Fix
Fixed split() to handle splitIndex = 0 and splitIndex = size() thanks to a bug report from Jonathan Cornaz (curator of collekt). Also upgraded TestUtils to 0.0.7.
The 3.0.18 tag was incorrect - should have been .19, but I made a few very minor changes (fixed a typo, upgraded a test-only dependency) since then, so making it a new "Release." Thanks again Jonathan Cornaz for pointing this out.
RRB Tree Split Bounds Fix
Fixed split() to handle splitIndex = 0 and splitIndex = size() thanks to a bug report from Jonathan Cornaz (curator of collekt). Also upgraded TestUtils to 0.0.7.
RRB Tree
Fixed bugs found using FindBugs - thanks to @cprice404. Details in the change log. This release is 1.4K smaller than the previous. That's about 0.5% change, but it's better than growing!
RRB Tree
An RRB Tree is an immutable List (like Clojure's PersistentVector) that supports random inserts, deletes, and can be split and joined back together in logarithmic time.
There's been one for Scala for a while (Bagwell/Rompf who wrote the paper were Scala people), and a native Clojure one, but neither is super helpful for Java programmers.
This is an entirely new Apache 2.0 Java implementation, based on the Bagwell/Rompf paper.
It's easy to use:
import org.organicdesign.fp.collections.RrbTree.ImRrbt;
import static org.organicdesign.fp.StaticImports.rrb;
class Foo {
public static void main(String[] args) {
ImRrbt<String> rrb = rrb("This", "is", "a", "list");
rrb = rrb.insert(0, "Hello!");
System.out.println("rrb: " + rrb);
}
}
How to update
An upgrade script is in the Change Log along with a description of the 3.0 changes (there were may!).
2.0.12: Improved Serialization
This is mostly bug fixes and incremental changes to the Serialization and Mutable Builders releases.
- Changed order of serialization for PersistentTreeMap to serialize at the same speed, but deserialize more efficiently (by keeping a relatively balanced tree structure). This is 100% compatible with the previous Serialization release, but more efficient.
- Made
Option
serializable and addedOption.then()
for chainingSome
options (returnsthis
forNone
options). - Other small fixes.
<dependency>
<groupId>org.organicdesign</groupId>
<!-- NOTE: artifactId will change to "Paguro" in November 2016 -->
<artifactId>UncleJim</artifactId>
<version>2.0.12</version>
</dependency>
2.0.7: Mutable Builders
Exposed interfaces for mutable collections. Mutable builders are about 5x faster (only measured the Vector - assuming HashMaps are similar). There are also several serialization improvements since the Serialization release.
While this release was stable, minor improvements make me suggest using 2.0.12 instead. That introduced fewer new features and fixed more bugs.
2.0.2: Custom Serialization
Immutable collections will deserialize even if their implementations change. DO NOT USE THIS RELEASE - use 2.0.12 instead. This release introduced some breaking changes which were subsequently reverted.