Releases: cicirello/JavaPermutationTools
Releases · cicirello/JavaPermutationTools
JavaPermutationTools, v6.0.0
[6.0.0] - 2024-07-25
Added
- SequenceSampler.getDefault() method for creating an instance of the default implementation of SequenceSampler.
- SequenceSampler.getDefault(RandomGenerator) method for creating an instance of the default implementation of SequenceSampler from a given source of randomness.
- SequenceSampler.getDefault(seed) method for creating an instance of the default implementation of SequenceSampler, specifying a seed for the random number generator.
- Seeded constructors added to SequenceReservoirSampler, SequencePoolSampler, SequenceInsertionSampler, SequenceCompositeSampler.
- Default constructors added to SequenceReservoirSampler, SequencePoolSampler, SequenceInsertionSampler, SequenceCompositeSampler.
Changed
- Refactored to improve code quality and to perform minor optimizations of the following classes:
- org.cicirello.permutations.distance.EditDistance
- org.cicirello.sequences.distance.EditDistance
- org.cicirello.sequences.distance.EditDistanceDouble
- Refactored to improve code quality and to optimize SequenceReservoirSampler, SequencePoolSampler, SequenceInsertionSampler, SequenceCompositeSampler.
- Minor optimizations to Permutation.scramble() methods.
Removed
- Removed the previously deprecated (in v5.1.0) constructor
org.cicirello.sequences.distance.EditDistance(double, double, double)
. To compute edit distance with double-valued costs for arrays and other sequences, use the existingEditDistanceDouble
class instead. This does not impact the class with the same name that computes edit distance for permutations (i.e., theorg.cicirello.permutations.distance.EditDistance
class still accepts doubles for the costs). - Removed default method implementations in SequenceSampler interface (all interface methods now implemented in the implementing classes).
Fixed
- Fixed potential integer overflow error in ReinsertionDistance
- Fixed transient fields in Permutation that shouldn't be transient
- Classes implementing SequenceSampler interface: methods with probability p of sampling an element fixed to always use specified randomness source (previously incorrectly used default randomness source on some calls).
- Fixed potential finalizer vulnerability in org.cicirello.sequences.distance.EditDistance, detected by SpotBugs analysis.
Dependencies
- Bump rho-mu from 3.1.0 to 4.1.0
- Bump org.cicirello:core from 2.5.0 to 2.7.0
CI/CD
- Integrated SpotBugs static analysis into build process.
- Integrated Find Security Bugs static analysis into build process.
- Discontinued publication of a
jar-with-dependencies
(BREAKING CHANGE only if you were using the fat jar).
JavaPermutationTools, v5.1.0
[5.1.0] - 2023-05-30
Deprecated
- Deprecated double-valued costs constructor of EditDistance for arrays and other sequences, with the existing EditDistanceDouble class as its replacement. This constructor will be removed in the next major release, most likely sometime in the Fall of 2023.
Dependencies
- Bump core from 2.4.6 to 2.5.0
- Bump rho-mu from 3.0.4 to 3.1.0
JavaPermutationTools, v5.0.4
[5.0.4] - 2023-04-14
Changed
- Optimized or otherwise refactored for code quality the scramble, reverse, and swapBlocks methods of the Permutation class.
JavaPermutationTools, v5.0.3
[5.0.3] - 2023-04-13
Changed
- Permutation now caches hash on first call to hashCode() to optimize applications that rely heavily on hashing.
Dependencies
- Bump rho-mu from 3.0.3 to 3.0.4
JavaPermutationTools, v5.0.2
[5.0.2] - 2023-03-07
Changed
- Minor code improvements and/or optimizations within the following classes:
- Permutation
- PermutationIterator
- KendallTauDistance
- WeightedKendallTauDistance.
- CyclicEdgeDistance
- CyclicRTypeDistance.
- The various SequenceSamplers
- KendallTauSequenceDistance
Dependencies
- Bump core from 2.4.4 to 2.4.6
- Bump rho-mu from 3.0.2 to 3.0.3
JavaPermutationTools, v5.0.1
[5.0.1] - 2023-01-12
Dependencies
- Bump core from 2.4.3 to 2.4.4
- Bump rho-mu from 3.0.1 to 3.0.2
JavaPermutationTools, v5.0.0
[5.0.0] - 2022-11-18
BREAKING CHANGES: See the Removed section for details.
Added
- Added the SequenceSampler interface's methods to SequenceCompositeSampler.
- Added the SequenceSampler interface's methods to SequenceReservoirSampler.
- Added the SequenceSampler interface's methods to SequencePoolSampler.
- Added the SequenceSampler interface's methods to SequenceInsertionSampler.
- Methods to sample by specifying probability of including element in sample to the classes that implement SequenceSampler
including SequenceReservoirSampler, SequencePoolSampler, SequenceInsertionSampler, and SequenceCompositeSampler.
Changed
- SequenceSampler converted from a utility class of static methods to an interface, retaining the existing static
methods that use a default source of randomness, but introducing nextSample methods for classes to implement.
Removed
- SequenceSampler.sampleReservoir methods, previously deprecated in 4.3.0, replaced by the SequenceReservoirSampler class.
- SequenceSampler.samplePool methods, previously deprecated in 4.3.0, replaced by the SequencePoolSampler class.
- SequenceSampler.sampleInsertion methods, previously deprecated in 4.3.0, replaced by the SequenceInsertionSampler class.
Dependencies
- Bump rho-mu from 2.5.0 to 3.0.1
JavaPermutationTools, v4.3.1
[4.3.1] - 2022-11-17
Changed
- Reformatted all sourcecode to Google Java Style
Fixed
- Corrected configuration of maven-shade-plugin to ensure full pom with all dependencies published during deploy.
Dependencies
- Bump core from 2.4.0 to 2.4.3
CI/CD
- Configured the refactor-first-maven-plugin within a profile in the pom.xml.
- Configured Spotify's fmt-maven-plugin to format to Google Java Style during builds.
Other
- Adopted Google Java Style
JavaPermutationTools, v4.3.0
[4.3.0] - 2022-10-17
Added
- EditDistanceDouble: extracted from EditDistance (for sequences) all of the distancef methods for
double-valued distances. The original EditDistance now subclasses this one to retain existing functionality. - Extracted the following classes from SequenceSampler that implement different algorithms for efficiently
randomly sampling array elements without replacement:- SequencePoolSampler: the pool sampling algorithm of Ernvall and Nevalainen (1982),
- SequenceReservoirSampler: the reservoir sampling algorithm of Vitter (1985),
- SequenceInsertionSampler: the insertion sampling algorithm of Cicirello (2022), and
- SequenceCompositeSampler: the composite of the above three of Cicirello (2022).
Changed
- Refactored the following classes to reduce cyclomatic complexity, or for other maintainability reasons:
- SequenceSampler
- ExactMatchDistance (for sequences)
- KendallTauSequenceDistance
- EditDistance (for sequences)
Deprecated
- The SequenceSampler.sampleReservoir methods, which are now replaced by the SequenceReservoirSampler class.
- The SequenceSampler.samplePool methods, which are now replaced by the SequencePoolSampler class.
- The SequenceSampler.sampleInsertion methods, which are now replaced by the SequenceInsertionSampler class.
Dependencies
- Bump rho-mu from 2.4.1 to 2.5.0
- Bump core from 2.2.2 to 2.4.0
JavaPermutationTools, v4.2.0
[4.2.0] - 2022-08-30
Added
- Four Permutation.applyThenValidate methods, which are counterparts to the four Permutation.apply methods, but which validate the Permutation(s) that result from the applied operator; whereas the existing apply methods do not verify the state of the Permutation after operator application.
- IllegalPermutationStateException exception class that is thrown by the new Permutation.applyThenValidate methods if validation fails.
Dependencies
- Bump rho-mu from 2.3.2 to 2.4.1