Releases: cinchapi/accent4j
Releases · cinchapi/accent4j
Version 1.16.0
- Added comprehensive interface reflection utilities to the
Reflectionclass for working with Java interfaces and default methods:getImplementedInterfaces()- Returns interfaces directly implemented by a class, including interfaces extended by those directly implemented interfacesgetAllImplementedInterfaces()- Returns all interfaces from the entire class hierarchy, including interfaces from superclassesgetAllDefaultInterfaceMethods()- Returns all default interface methods available to a class from its implemented interfacesgetAllNonOverriddenDefaultInterfaceMethods()- Returns default interface methods that have not been overridden by the class or its hierarchyinvokeDefaultInterfaceMethod()- Invokes a default interface method on a target object using MethodHandles for proper access- Each method has both
Class<?>andObjectparameter variants for convenience - These utilities are particularly useful for reflection-based frameworks that need to understand interface inheritance and default method availability
- Breaking Change:
JoinableExecutorServicehas been refactored from a concrete class to an interface. This change requires using one of the static factory methods to create instances instead of using constructors directly. The refactoring provides better abstraction and allows for different implementation strategies. - Added
JoinableDirectExecutorServiceimplementation that executes tasks synchronously in the calling thread, enabling the same code constructs and execution paths when async behavior is not preferred or when configuration requires synchronous execution - Fixed
Application.classpath()to work on Java 9+ where the system class loader is no longer aURLClassLoader
Version 1.15.0
- Added a fluent builder API for
Benchmarkthat provides a more intuitive way to configure and run benchmarks. The builder supports specifying time units, performing warmup runs, and executing benchmarks asynchronously to ensure fair comparisons between multiple benchmarks by eliminating the impact of JVM warmup and optimization order.
Version 1.14.0
JoinableExecutorService: A new class in theconcurrentpackage that enhances a standardExecutorServicewith the ability for the calling thread to join task execution. This service allows threads to submit groups of tasks and then participate directly in executing those tasks, aiding in faster completion and improved resource utilization. It ensures tasks are initiated in iteration order but balances task execution across groups to maintain consistent system performance. This feature is beneficial for applications requiring high throughput and dynamic task management.- Fixed a bug that caused the
Reflection#newInstancemethod to throw aNullPointerExceptionwhen anullwas provided for a Nullable parameter.
Bug Fixes
- Fixed a bug that caused some methods in
Sequencesto have poor performance if thetoStringmethod of a potentialSequencewas computationally expensive
Version 1.13.1
- Fixed a bug that caused a
NoSuchMethodExceptionto be thrown when using theReflectionutility tocalla non-overriden interface-defined default method.
Version 1.13.0
- Added the
ByteBuffers#sharemethod that returns a new ByteBuffer containing a shared subseqence of a sourceByteBufferwhile incrementing thepositionof the source the same number of bytes that are shared. - Upgraded
logbackdependency to version1.2.11 - Fixed a bug in
Reflection#callthat threw aNoSuchMethodExceptionwhen trying to call an overriden method that accepts a generic parameter.
Version 1.12.1
- Improved the performance of
CountUpLatchby using better synchronization control. - Fixed a bug in
AnyStrings#tryParseNumberthat caused an error to be thrown instead of returningnullwhen parsing strings with a leadingEorefollowed by digit characters (e.g.e45). These strings were mistaken for a number in scientific notation, but the parser has been fixed so that error no longer occurs. - Optimized
ByteBuffers#getByteArrayto return the backing array of aByteBufferif it exists and the position of theByteBufferis0as well as the number of bytesremainingbeing equal to itscapacity.
Version 1.12.0
- Fixed a bug that made it possible for the
ByteBufferreturend fromByteBuffers#get(ByteBuffer int)to have a different byte order than the input source. - Deprecated
ByteBuffers#encodeAsHexin favor ofByteBuffers#encodeAsHexString. - Deprecated
ByteBuffers#decodeFromHexin favor ofByteBuffers#decodeFromHexString.
Version 1.11.0
- Added the
TriConsumerfunctional interface that is similar toBiConsumerfor three input arguments.
Version 1.10.0
- Added an improvement to
LazyTransformSetthat caches previously transformed values and makes a best effort to keep them from being transformed on subsequent iterations. - Added an
ExecutorRaceServicethat can be used to execute multiple tasks in parallel with the option to give one of the tasks a head start. The first of the tasks to complete has itsFuturereturned to the caller. - Added the
Multimaps#frommethod that transforms aMapwhose values are aSetof objects into aMultimap.
Version 1.9.0
- Added the
CoalescableTreeMapdata structure that contains acoalescemethod to return values for a consecutive range of similar keys.