You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Inside PersistentTreeMap, Made Red and Black extend Tuple2 instead of having different subclasses based on whether they just held a key (for TreeSet) or also a value (for TreeMap). Timed this change and found no performance difference. This made the returned Entries easily and quickly serializable (after making the left and right fields transient). Added ImUnsortSet, ImUnsortSetTrans, and ImListTrans interfaces to expose the Transient implementations. Added CodeStylePaguro.xml for instant consistent code style. Improved test coverage for TreeMap. Cleaned up change log. Added epl-v10.html Clojure collection license in accordance with its terms. Bumped version number to 2.0.4. Reused PersistentTreeMap.Box in PersistentHashMap and documented its (weird) usage.
- Reverted the most serious breaking changes from previous 2.0.x releases.
24
+
Going from 1.x to 2.0.3+ in the two projects I use Paguro in, no changes were necessary.
25
+
- Tuples all implement Serializable.
26
+
Serializable wants a zero-arg constructor and mutable fields on the parent class in order to deserialize the child class.
27
+
That's the opposite of what this project is about.
28
+
Better to have all tuples serializable than to make anyone write a serialization proxy on a subclass because tuples *aren't* serializable.
29
+
This also means that Tuple2 can still implement Map.Entry, which gets rid of the breaking changes in 2.0.0, .1, and .2.
71
30
- Changed serialized form of RangeOfInt to just serialize the start and end,
72
31
then calculate the size from that.
73
32
- Removed KeyVal class and made Tuples serializable instead. Back to using tup() instead of kv()
74
33
- Static method UnmodSortedIterable.equals() has been deprecated (renamed to UnmodSortedIterable.equal() to avoid confusion with Object.equals()).
75
34
76
-
## 2016-09-01 Release 2.0.2 USE 2.0.3 INSTEAD!
35
+
## 2016-09-01 Release 2.0.2: USE 2.0.3+ INSTEAD!
77
36
- Gave 5 main collections custom serialized forms (after reading Josh Bloch) so that we can change
78
37
the implementations later without breaking any clients who are using them for long-term storage.
79
38
- Decided *NOT* to make any itera**tors** serializable.
80
39
- Improved tests a bit, especially for serialization.
81
40
82
-
## 2016-09-01 Release 2.0.1 USE 2.0.3 INSTEAD!
41
+
## 2016-09-01 Release 2.0.1: USE 2.0.3+ INSTEAD!
83
42
- Made UnmodSortedIterable.castFrom... methods generic and serializable (and wrote tests for same).
84
43
- Fixed some Javadoc link errors.
85
44
86
-
## 2016-08-27 Release 2.0.0: USE 2.0.3 INSTEAD!
87
-
This is a major release due to the following **breaking changes** in order to make more things serializable without creating a mess:
45
+
## 2016-08-27 Release 2.0.0: USE 2.0.3+ INSTEAD - ALL SIGNIFICANT BREAKING CHANGES WERE REVERTED!
46
+
This is a major release due to making a new serializable format.
47
+
- Anything that used to be implemented as an anonymous class, object, or lambda is now implemented as an enum or serializable sub-class.
88
48
- Hash codes of all tuples are now calculated by adding together the hash codes of all member items.
89
49
They used to bitwise-or the first two items for compatibility with Map.Entry.
90
50
- Tuple2 no longer implements Map.Entry or UnmodMap.UnEntry. Instead, a new class KeyVal extends Tuple2, Map.Entry, UnmodMap.UnEntry, and Serializable.
@@ -95,6 +55,8 @@ This is a major release due to the following **breaking changes** in order to ma
95
55
- Moved ComparisonContext interface from inside the Equator interface, to it's own file: org.organicdesign.fp.ComparisonContext.
96
56
- Replaced Equator.ComparisonContext.DEFAULT_CONTEXT with ComparisonContext.CompCtx.DEFAULT
97
57
- KeyVal.toString() is now kv(k,v) like all the other Java toString methods.
58
+
- PersistentHashMap.ArrayNode, .BitMapIndexNode, .HashCollisionNode, and .NodeIter are now all private (were public or package).
59
+
There should never have been any reason to use or access these.
98
60
99
61
This release also contains the following non-breaking changes:
100
62
- Made serializable: Persistent- HashMap, HashSet, TreeMap, TreeSet, Vector. RangeOfInt,
@@ -105,6 +67,41 @@ This release also contains the following non-breaking changes:
105
67
106
68
Note: Xform is NOT serializable. I don't know yet whether that's good or bad.
107
69
70
+
##### Moved items in 2.0:
71
+
```
72
+
org.organicdesign.fp.collections.Equator:
73
+
DEFAULT_COMPARATOR is now Comp.DEFAULT
74
+
DEFAULT_EQUATOR is now Equat.DEFAULT
75
+
ComparisonContext moved to org.organicdesign.fp.collections.ComparisonContext
76
+
DEFAULT_CONTEXT is now org.organicdesign.fp.collections.ComparisonContext.CompCtx.DEFAULT
77
+
78
+
org.organicdesign.fp.collections.RangeOfInt:
79
+
LIST_EQUATOR is now Equat.LIST
80
+
81
+
org.organicdesign.fp.function.Function0:
82
+
NULL is now Const.NULL
83
+
New serializable sub-class for functions that always return the same value:
Copy file name to clipboardexpand all lines: README.md
+4-5
Original file line number
Diff line number
Diff line change
@@ -2,10 +2,9 @@ UncleJim ("**Un**modifiable **Coll**ections for **J**ava™ **Imm**utability") p
2
2
3
3
#News
4
4
5
-
##2016-09-06 Release 2.0.3: Serializable
6
-
**DO NOT USE Releases 2.0.0 - 2.0.2. Breaking changes from these were reverted.**
7
-
Thanks @sblommers for spotting the lack of serialization and writing the key unit test!
8
-
Fixing this involved some minor breaking changes. Please see the [Upgrade Notes in the Change Log](https://github.com/GlenKPeterson/UncleJim/blob/master/CHANGE_LOG.md#upgrade-from-1x-to-2x) for details.
5
+
##2016-09-06 Release 2.0.4: Serializable (Part 4)
6
+
**DO NOT USE Releases 2.0.0 - 2.0.2 because breaking changes from these releases were reverted.**
7
+
Full notes in the [Change Log](https://github.com/GlenKPeterson/UncleJim/blob/master/CHANGE_LOG.md).
9
8
10
9
###Renaming
11
10
This project will soon be renamed to "Paguro" ("pah-GUH-row" rhymes with "furrow") which is short for the Latin "Paguroidea" - the name of the Hermit Crab superfamily in Biology. These collections grow by adding a new shell, leaving the insides the same, much the way Hermit Crabs trade up to a new shell when they grow. Plus, hermit crabs are cute.
@@ -47,7 +46,7 @@ Available from the [Maven Repository](http://mvnrepository.com/artifact/org.orga
47
46
<groupId>org.organicdesign</groupId>
48
47
<!-- NOTE: artifactId will change to "Paguro" in November 2016 -->
0 commit comments