Skip to content

Releases: cinchapi/accent4j

Version 1.16.0

18 Dec 23:32

Choose a tag to compare

  • Added comprehensive interface reflection utilities to the Reflection class for working with Java interfaces and default methods:
    • getImplementedInterfaces() - Returns interfaces directly implemented by a class, including interfaces extended by those directly implemented interfaces
    • getAllImplementedInterfaces() - Returns all interfaces from the entire class hierarchy, including interfaces from superclasses
    • getAllDefaultInterfaceMethods() - Returns all default interface methods available to a class from its implemented interfaces
    • getAllNonOverriddenDefaultInterfaceMethods() - Returns default interface methods that have not been overridden by the class or its hierarchy
    • invokeDefaultInterfaceMethod() - Invokes a default interface method on a target object using MethodHandles for proper access
    • Each method has both Class<?> and Object parameter variants for convenience
    • These utilities are particularly useful for reflection-based frameworks that need to understand interface inheritance and default method availability
  • Breaking Change: JoinableExecutorService has 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 JoinableDirectExecutorService implementation 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 a URLClassLoader

Version 1.15.0

13 Apr 13:19

Choose a tag to compare

  • Added a fluent builder API for Benchmark that 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

22 Feb 13:57

Choose a tag to compare

  • JoinableExecutorService: A new class in the concurrent package that enhances a standard ExecutorService with 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#newInstance method to throw a NullPointerException when a null was provided for a Nullable parameter.
Bug Fixes
  • Fixed a bug that caused some methods in Sequences to have poor performance if the toString method of a potential Sequence was computationally expensive

Version 1.13.1

01 Oct 20:23

Choose a tag to compare

  • Fixed a bug that caused a NoSuchMethodException to be thrown when using the Reflection utility to call a non-overriden interface-defined default method.

Version 1.13.0

05 Sep 12:31

Choose a tag to compare

  • Added the ByteBuffers#share method that returns a new ByteBuffer containing a shared subseqence of a source ByteBuffer while incrementing the position of the source the same number of bytes that are shared.
  • Upgraded logback dependency to version 1.2.11
  • Fixed a bug in Reflection#call that threw a NoSuchMethodException when trying to call an overriden method that accepts a generic parameter.

Version 1.12.1

30 Aug 19:40

Choose a tag to compare

  • Improved the performance of CountUpLatch by using better synchronization control.
  • Fixed a bug in AnyStrings#tryParseNumber that caused an error to be thrown instead of returning null when parsing strings with a leading E or e followed 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#getByteArray to return the backing array of a ByteBuffer if it exists and the position of the ByteBuffer is 0 as well as the number of bytes remaining being equal to its capacity.

Version 1.12.0

08 Dec 19:04

Choose a tag to compare

  • Fixed a bug that made it possible for the ByteBuffer returend from ByteBuffers#get(ByteBuffer int) to have a different byte order than the input source.
  • Deprecated ByteBuffers#encodeAsHex in favor of ByteBuffers#encodeAsHexString.
  • Deprecated ByteBuffers#decodeFromHex in favor of ByteBuffers#decodeFromHexString.

Version 1.11.0

12 Feb 08:45

Choose a tag to compare

  • Added the TriConsumer functional interface that is similar to BiConsumer for three input arguments.

Version 1.10.0

23 Nov 22:35

Choose a tag to compare

  • Added an improvement to LazyTransformSet that caches previously transformed values and makes a best effort to keep them from being transformed on subsequent iterations.
  • Added an ExecutorRaceService that 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 its Future returned to the caller.
  • Added the Multimaps#from method that transforms a Map whose values are a Set of objects into a Multimap.

Version 1.9.0

11 Nov 19:39

Choose a tag to compare

  • Added the CoalescableTreeMap data structure that contains a coalesce method to return values for a consecutive range of similar keys.