Skip to content

Change Log

Martin Thompson edited this page Jun 27, 2022 · 129 revisions

1.16.0 (27 Jun 2022)

  • Add optimised versions of compute on maps. PR #259.
  • Add Object2IntCounterMap. PR #257.
  • Fix Int2ObjectCache/Int2ObjectHashMap.containsValue() to perform equality based on the value stored in the map.
  • Ensure that Object2*HashMaps and ObjectHashSet always check equality using the value in the map and not vice versa. PR #253.
  • Add primitive unboxed for-each methods to primitive maps. PR #254.
  • Fix race on MarkFile.close with unmapping files.
  • Upgrade to BND 6.3.1.
  • Upgrade to ByteBuddy 1.10.12.
  • Upgrade to Mockito 4.6.1.

1.15.2 (16 May 2022)

  • Improved error messages for Counters.
  • Perform equality checks using the keys/values stored in the map, i.e. add support for the asymmetric keys which can match on multiple types. For an example see the CharSequenceKey from the test package.
  • Fix MapEntry.getValue to return current value after setValue was called.
  • Various fixes for EntrySet/MapEntry across different map implementations.

1.15.1 (14 Apr 2022)

  • Check error buffer has sufficient capacity before initial access.
  • Fill memory mapped file with zeros outside try-with-resources block for channel so allocation can be freed sooner.
  • Upgrade to JMH 1.35.
  • Upgrade to ByteBuddy 1.12.9.
  • Upgrade to Gradle 7.4.2.

1.15.0 (15 Mar 2022)

  • Fix bug with buffer expansion with putAsciiInt / putAsciiLong methods. PR #252.
  • Add MemoryAccess for abstract access to memory fences.
  • Treat warnings as errors during build.
  • Hide JCStress output unless there is an error.
  • Upgrade to guava-testlib 31.1-jre.
  • Upgrade to BND 6.2.0.
  • Upgrade to Versions 0.42.0.
  • Upgrade to Shadow 7.1.2.
  • Upgrade to JMH 1.34.
  • Upgrade to Mockito 4.4.0.
  • Upgrade to ByteBuddy 1.12.7.
  • Upgrade to JCStress 0.15.
  • Upgrade to Checkstyle 9.3.
  • Upgrade to JUnit 5.8.2.
  • Upgrade to Gradle 4.7.1.

1.14.0 (23 Nov 2021)

  • Check for thread being interrupted after calling ErrorHandler in AgentInvoker and AgentRunner so they can stop running.
  • Remove 'Serializable' from collections. It was never implemented correctly.
  • Upgrade to Mockito 4.1.0.
  • Upgrade to ByteBuddy 1.12.2.
  • Upgrade to BND 6.1.0.

1.13.1 (21 Nov 2021)

  • Fix a bug in AsciiEncoding#digitCount(int) and AsciiEncoding#digitCount(long) methods which resulted in wrong value being returned for 0 input, i.e. both methods now return 1 when zero is the input value. PR #251.

1.13.0 (17 Nov 2021)

  • Check for numeric overflow when parsing numbers in ASCII.
  • Fix bounds checks when writing numbers in ASCII to buffers.
  • Improve performance for the parsing and serialisation of ints and longs in ASCII in buffer implementations.
  • Add methods to SBE message interfaces for tracking buffer position limit.
  • Rethrow subclasses of Error from Agents so the JVM can handle them after logging.
  • Avoid static fields on Unsafe to better support Android.
  • Remove final declaration from AsciiSequenceView. PR #242.
  • Upgrade to guava-testlib 31.0.1-jre.
  • Upgrade to Shadow 7.1.
  • Upgrade to BND 6.0.0.
  • Upgrade to Checkstyle 9.1.
  • Upgrade to JUnit 5.8.1.
  • Upgrade to JMH 1.33.
  • Upgrade to Mockito 4.0.0.
  • Upgrade ByteBuddy to 1.12.1.
  • Upgrade to Gradle 7.2.

1.12.0 (04 Aug 2021)

  • Tidy up of spelling and grammar.
  • Fail the build if Gradle build file has warnings.
  • MutableDirectBuffer methods for putString accepting CharSequence. #240
  • jcstress added. #237
  • RingBuffer capacity validation and fixes. #239
  • Windows added to the build matrix.
  • Upgraded to Gradle 7.1.1.
  • Upgraded to Mockito 3.11.2.
  • Upgraded to ByteBuddy 1.11.9.

1.11.0 (11 Jun 2021)

  • Allow for TransportPoller#ITERATION_THRESHOLD to be set from system property.
  • Relocate shadowed ByteBuddy classes in fat JAR.
  • Improve the performance of writing int and long values as ASCII in buffers.
  • Add support for @null property values when reading system properties.
  • Improve hash function for hash based collection.
  • Reduce callstack when unmapping buffers.
  • Move read of clock to inside lock when creating a new entry in the distinct error log.
  • Verify counter is in allocated state when being freed.
  • Add lock-less implementation for distributed and concurrent unique id generation based on Twitter Snowflake algorithm.
  • Upgrade to Mockito 3.11.1.
  • Upgrade to Versions 0.39.0.
  • Upgrade to JUnit 5.7.2.
  • Upgrade to JMH 1.32.
  • Upgrade to ByteBuddy 1.11.2.
  • Upgrade to Shadow 7.0.0.
  • Upgrade to Gradle 7.0.2.

1.10.0 (15 Apr 2021)

  • Handle null error handler with CloseHelper.
  • Support NioSelectedKeySet.contains and NioSelectedKeySet.remove to be more efficient on Java 11+.
  • Add Java 17-ea to the build matrix.
  • Improve Javadoc.
  • Detect thread interrupt after an exception in Agent.doWork.
  • Fix race condition with OffsetEpochNanoClock used across threads. PR #220.
  • Provide the ability to thread dump to a StringBuilder.
  • Add ability to query for number of remaining available counters in a CountersManager.
  • Upgrade to Guava testlib 30.1.1-jre.
  • Upgrade to Versions 0.38.0.
  • Upgrade to JMH 1.29.
  • Upgrade to BND 5.3.0.
  • Upgrade to JUnit 5.7.1.
  • Upgrade to ByteBuddy 1.10.22.
  • Upgrade to Checkstyle 8.39.
  • Upgrade to Mockito 3.9.0.
  • Upgrade to Gradle 6.8.3.

1.9.0 (21 Dec 2020)

  • Record errors as distinct in the DistinctErrorLog with unique messages.
  • Add controlled read methods to ring buffers. Issue #227.
  • Provide the ability to control the order of precedence when loading system properties. Issue #226.
  • Add Java 16 EA to build matrix.
  • Upgrade to Gauva tests 30.1-jre.
  • Upgrade to JUnit 4.13.1 for vintage engine.
  • Upgrade to Checkstyle 8.38.
  • Upgrade to ByteBuddy 1.10.18.
  • Upgrade to Versions 0.36.0.
  • Upgrade to Mockito 3.6.28.
  • Upgrade to JMH 1.27.
  • Upgrade to Checkstyle 8.36.2.
  • Upgrade to Gradle 6.7.1.

1.8.0 (07 Oct 2020)

  • Resolved issues with collection classes which implement Serializable. Issue #223.
  • Improve javadoc and clean up warnings on Java 15 build.
  • Use ProcessHandle to get PID when Java 9+.
  • Add Java 15 to build matrix.
  • Add MessageDecoderFlyweight.appendTo(StringBuilder) to interface. PR #220.
  • Upgrade to Shadow 6.1.0.
  • Upgrade to ByteBuddy 1.10.17.
  • Upgrade to Mockito 3.5.13.

1.7.2 (18 Sep 2020)

  • Fix issue with how direct buffers expand when initial length is set to be 0 or 1.
  • Improve javadoc for ArrayUtil and DeadlineTimerWheel.
  • Upgrade to JUnit 5.7.0.
  • Upgrade to Version 0.33.0.

1.7.1 (06 Sep 2020)

  • Fix memory ordering semantics for late joining a broadcast buffer.
  • Catch Throwable rather than RuntimeException in composite Agents to be consistent with invokers and runners.
  • Upgrade to Versions 0.30.0.
  • Upgrade to Checkstyle 8.36.
  • Upgrade to JMH 1.25.2.
  • Upgrade to Mockito 3.5.10.

1.7.0 (28 Aug 2020)

  • Improve validation and bounds-checking when using counters.
  • Add registration id and owner id to counters.
  • Add javadoc to explain relaxed memory order semantics on queues. Issue #216.
  • Return this for a fluent API with AtomicCounter.appendToLabel
  • Fix map capacity calculation. Issue #215.
  • Unmap MarkFile in case of an exception.
  • Improving boundary case checking when parsing numbers in direct buffers.
  • Throw exceptions for parsing numbers with AsciiEncoding so it behaves like Integer.parseInt. PR #214.
  • Change build script to help IDEA get the dependencies for generated code.
  • Upgrade to Gradle 6.6.1.
  • Upgrade to Mockito 3.5.7.
  • Upgrade to JMH 1.25.1.
  • Upgrade to ByteBuddy 1.10.14.
  • Upgrade to Checkstyle 8.35.
  • Upgrade to BND 5.1.2.
  • Upgrade to Versions 0.29.0.

1.6.0 (07 Jul 2020)

  • Check for integer under and over flow when parsing numbers with AsciiEncoding.
  • Allow for wrapping zero length direct buffers at capacity. Issue #211.
  • Upgrade to Shadow 6.0.0.
  • Upgrade to BND 5.1.1.
  • Upgrade to ByteBuddy 1.10.13.
  • Upgrade to Checkstyle 8.34.
  • Upgrade to Gradle 6.5.1.

1.5.1 (27 May 2020)

  • Fix race conditions with queues for size, isEmpty, and peek methods.

1.5.0 (21 May 2020)

  • Fix warning message when closing AgentRunner.
  • Add ability to update counter metadata key. PR #209.
  • Add alias for each IdleStrategy.
  • Add CountersReader.getCounterTypeId(int).
  • Change false sharing protection to be forwards compatible with Java 15 class layout.
  • OffsetEpochNanoClock as an allocation free alternative EpochNanoClock. PR #206.
  • Improve performance of forEach and iterators on collections.
  • Have array backed direct buffer not print their content in toString() methods.
  • Upgrade to JUnit 5.6.2.
  • Upgrade to javadoc-links 5.1.0.
  • Upgrade to ByteBuddy 10.10.0.
  • Upgrade to Gradle 6.4.1.

1.4.1 (28 Mar 2020)

  • Supporting building and running on Java 14.
  • Add decrement() and decrementOrdered() methods to AtomicCounter.
  • Add Thread.onSpinWait() when retrying in ManyToManyConcurrentArrayQueue offer and poll.
  • Upgrade to Gradle 6.3.
  • Upgrade to BND 5.0.1.
  • Upgrade to JUnit 5.6.1.
  • Upgrade to Mockito 3.3.3.

1.4.0 (26 Feb 2020)

  • Check for thread interrupt in AgentRunner after idling so agent can be closed immediately.
  • Add the ability to close a CountedErrorHandler.
  • Add BufferUtil.free(ByteBuffer) to free direct ByteBuffers. PR #205.
  • Migrate from Gradle maven to maven-publish.
  • Allow Maps with a cached iterator to work when calling toArray on entries. PR #202.
  • Allow CloseHelper to work on expanded type range from List to Collection of Closable.
  • Upgrade to Gradle 6.2.1.
  • Upgrade to Versions 0.28.0.
  • Upgrade to Mockito 3.3.0.
  • Upgrade to BND 5.0.0.
  • Upgrade to JMH 1.23.

1.3.0 (21 Jan 2020)

  • Add RingBuffer.tryClaim implementations for zero copy semantics when encoding into ring buffers. PR #199.
  • Allow for configurable Charset when encoding exceptions in DistinctErrorLog.
  • Don't read underlying buffer in AtomicCounter implementations for toString() when closed to help avoid segfaults.
  • Expand the methods in MutableInteger and MutableLong to be better single-threaded substitutes for AtomicInteger and AtomicLong. PR #198.
  • Filter dependencies from agent shadow POM.
  • Upgrade to JUnit 5.6.0.

1.2.0 (09 Jan 2020)

  • Fix concurrency issue with enabling and disabling HighResolutionTimer.
  • Add isLinux and isWindows to SystemUtil.
  • Refinements to alignment checking agent.
  • Move CI to GitHub Actions.
  • Upgrade to JUnit 5.6.0-RC1.
  • Update to Guava TestLib 28.2-jre.
  • Upgrade to Checkstyle 8.28.
  • Upgrade to Mockito 3.2.4.
  • Upgrade Gradle 6.0.1.
  • Upgrade to ByteBuddy 1.10.5.
  • Upgrade to javadoc-links 4.1.6.

1.1.0 (18 Nov 2019)

  • Allow for buffer reference being null in AsciiSequenceView. PR #190.
  • Add DelegatingErrorHandler.
  • Add method to advance a cached clock.
  • Provide the ability to add a suffix to a counter label after allocation.
  • Provide singleton versions of clocks.
  • Allow for better inlining on direct buffer implementations.
  • Upgrade to javadoc-links 4.1.4.
  • Upgrade to Hamcrest 2.2.
  • Upgrade to Checkstyle 8.26.
  • Upgrade to ByteBuddy 1.10.2.
  • Upgrade to Shadow 5.2.0.

1.0.11 (06 Nov 2019)

  • Add the ability to update a counter label on the AtomicCounter API for the owning user.
  • Provide unboxed implementation of setValue on primitive map iterators.

1.0.10 (31 Oct 2019)

  • Don't expand ExpandableRingBuffer when space to the end is insufficient but sufficient space remains after padding and wrapping. PR #187.

1.0.9 (25 Oct 2019)

  • Improve javadoc for HighPrecisionClock.
  • Reduce the amount of false sharing padding on concurrent data structures to save on memory footprint.
  • Implement AutoClosable for LoggingErrorHandler so it can be closed to help avoid seg faults with unmapped files.
  • Upgrade to javadoc-links 4.1.3.
  • Upgrade to Checkstyle 8.25.
  • Upgrade to Gradle 5.6.3.

1.0.8 (04 Oct 2019)

  • Provide singleton instances for NoOpLock and stateless idle strategies to save on allocation.
  • Open files as read only when mapping as read only. PR #185.
  • Allow partial reset of NioSelectedKeySet so that some items may be later retried. PR #183.
  • Allow wrapping of arrays less then minimum default length for primitive array lists. Issue #182.
  • Zero out metadata for counters after use to avoid potential reuse issues.
  • Provide default constructors for idle strategies so they can be dynamically loaded more easily.
  • Upgrade to javadoc-links 4.1.2.
  • Upgrade to Mockito 3.1.0.
  • Upgrade to guava-testlib 28.1.
  • Upgrade to Gradle 5.6.2.

1.0.7 (12 Aug 2019)

  • Add long variants of BitUtil.isPowerOfTwo() and BitUtil.findNextPositivePowerOfTwo().
  • Change tick resolution in DeadlineTimerWheel to be a long rather than int to allow for time unit to be in nanoseconds with tick resolution to be in seconds.
  • Correct implementation of CollectionUtil.validatePositivePowerOfTwo(). Issue #179.
  • Don't update error counters in agent runners and invokers when not running to closed to avoid segfaults.
  • Upgrade to javadoc-links 3.8.2.

1.0.6 (31 Jul 2019)

  • Improvements to DeadlineTimerWheel which include ability to clear, set current tick time, support a greater time range and performance improvements by reducing indirection.
  • Fix IntArrayQueue so the tail wraps correctly when poll and offer operations are interleaved.
  • Throw exception when parsing invalid numbers rather than return zero with AsciiEncoding. Issue #178.

1.0.5 (29 Jul 2019)

  • Fix missing public constructors for ExpandableRingBuffer.

1.0.4 (29 Jul 2019)

  • Fix IntArrayList.hashCode() method to be compatible with List.hashCode().
  • Add IntArrayQueue to store a FIFO list of primitives without boxing.
  • Add ExpandableRingBuffer to support the temporary storage of messages in a FIFO manner.
  • Add OSGi manifest headers to JAR. PR #176.
  • Add missing Javadoc.
  • Update licence references to https and an a contributing page.
  • Upgrade to Checkstyle 8.23.
  • Upgrade to javadoc-links 3.8.1.
  • Upgrade to Gradle 5.5.1.

1.0.3 (12 Jul 2019)

  • Reduce allocation for closeAll operations.
  • Correct generic type check for put on Object2Object maps.
  • Use shifts rather than divide operations where appropriate to reduce startup costs.
  • Upgrade to Shadow 5.1.0.
  • Upgrade to Checkstyle 8.22.
  • Upgrade to guava-testlib 28.0-jre.
  • Upgrade to javadoc-links 3.7.5.

1.0.2 (12 Jun 2019)

  • Improve bounds checks on direct buffers.
  • Add ability to append an ASCII string from direct buffers to an Appendable without allocation.
  • Add ability to close a list or var args of Closeables. PR #174.
  • Upgrade to Mockito 2.28.2.
  • Upgrade to Checkstyle 8.21.
  • Upgrade to javadoc-links 3.6.6.

1.0.1 (25 May 2019)

  • Javadoc improvements.
  • Use a specific exception to indicate number format exceptions in ASCII. PR #171.
  • Fix bug with inverted logic which meant HighResolutionTimer did not enable correctly.
  • Upgrade to javadoc-links 3.6.4 to allow for building offline.
  • Upgrade to hamcrest 2.1.

1.0.0 (03 May 2019)

  • Remove usage of Unsafe from cached clocks.
  • Add accessors for AsciiViewSequence to make it more useful. PR #170.
  • Add ability to pretty print binary buffers in ASCII. PR #169.
  • Grow backing array for TransportPoller by golden ratio to be more GC friendly.
  • Add constructors for initialising AtomicLongPosition in tests.
  • Improve Javadoc.
  • Upgrade to io.freefair.javadoc-links 3.2.1.
  • Upgrade to Checkstyle 8.20.
  • Upgrade to Mockito 2.27.0.
  • Upgrade to Gradle 5.4.1.

0.9.35 (28 Mar 2019)

  • Reduce Java 11 module warnings.
  • Change HighResolutionTimer hack to use a more Java 11 friendly approach and allow faster operation on Windows.
  • Add the ability to apply mapping mode when mapping files.
  • Fix Javadoc links so they use HTTPS and work with OpenJDK and Java 11.
  • Upgrade Checkstyle DTD and checkstyle method Javadoc.
  • Upgrade to Mockito 2.25.1.
  • Upgrade to Gradle 5.3.1.

0.9.34 (10 Mar 2019)

  • Include links in generated Javadoc.
  • Capture scale of unknown reference size when compressed oops are used.
  • Avoid reloading of fields in concurrent data structures when intermixed with volatile loads for improved performance.
  • Provide SystemUtil.tmpDirName().
  • Enable the setting of mapping mode on MappedResizableBuffer so mappings can be read-only. Issue #168.
  • Improve SemanticVerision class with toString() method and allow a 0 patch version.
  • Upgrade to Mockito 2.25.0.
  • Upgrade to Checkstyle 8.18.
  • Upgrade to Gradle 5.2.1 and remove support for OSGI as it is now deprecated.
  • Upgrade to Shadow 5.0.0.

0.9.33 (16 Feb 2019)

  • Be more specific about synchronizing on latches in ShutdownSignalBarrier. PR #167.
  • Add SemanticVersion for composing semantic version levels into an int.
  • Add ability to disable array printing on direct buffers during debugging via a system property. PR #166.

0.9.32 (05 Feb 2019)

  • Add Automatic-Module-Name to help enable modular programs to use Agrona.
  • Upgrade to Mockito 2.24.0.
  • Upgrade to Byte Buddy 1.9.7.

0.9.31 (30 Jan 2019)

  • Fix issue with merging properties from files into system properties. Issue #164.
  • Add support for ASCII encoding natural numbers into direct buffers. PR #163.
  • Update Javadoc on use of direct buffers to reflect usage from a state perspective. Issue #161.
  • Add SystemUtil.threadDump() to allow for the programmatic triggering of a JVM thread dump.
  • Upgrade to Checkstyle 8.17.

0.9.30 (21 Jan 2019)

  • Allow multiple ShutdownSignalBarriers to be registered in the same JVM.
  • Add toString method to bi int/long maps.
  • Initialise BroadcastReceiver to latest position so that catch up is O(1).
  • Upgrade to Shadow 4.0.4.

0.9.29 (06 Jan 2019)

  • On interrupt call the close failed action handler in 'AgentRunner'.
  • Fix issue with unblocking a full ring buffer. Issue #160.
  • Upgrade to Checkstyle 8.16.

0.9.28 (16 Dec 2018)

  • Warnings clean up in code base.
  • Upgrade to Checkstyle 8.15.
  • Upgrade to Guava testlib-27.0.1.
  • Upgrade to Gradle 4.10.3.

0.9.27 (25 Nov 2018)

  • Cache PID so it is only looked up once.
  • Check if wrapping the same buffer in direct buffers to avoid the GC write barrier where possible.
  • Added AsciiSequenceView for windowing over a DirectBuffer to read it as a sequence of ASCII characters.
  • Upgrade to Shadow 4.0.3.
  • Update to Mockito 2.23.4.
  • Update to Byte Buddy 1.9.3.

0.9.26 (29 Oct 2018)

  • This release is the first to support building and running on Java 11.
  • Provide access to common SBE methods in flyweight interfaces in a consistent manner.
  • Add a matrix of Java 8 and 11 builds for OpenJDK and Oracle JDK on Travis.
  • Make iterators and collections within maps public so that iteration can occur on the primitive types without down-casting.
  • Upgrade to guava-testlib:27.0 for collection conformance.
  • Upgrade to Checkstyle 8.14.
  • Update to Mockito 2.23.0.
  • Update to Byte Buddy 1.9.0.

0.9.25 (05 Oct 2018)

  • Simplified BitUtil.align which may give a small performance gain.
  • Improve construction and expansion performance of Object2ObjectHashMap and ObjectHashSet.
  • Add build to Travis.
  • Upgrade to Shadow 4.0.0.
  • Upgrade to Gradle 4.10.1.

0.9.24 (12 Sep 2018)

  • Avoid starvation of later Agents when DynamicCompositeAgent is used and one throws an exception.
  • Fix so the source compiles under Java 11.
  • Upgrade to Byte Buddy 1.8.21.
  • Upgrade to Mockito 2.22.0.
  • Upgrade to Gradle 4.10.

0.9.23 (18 Aug 2018)

  • Add support for maps with null values. PR #154.
  • Fix memory leak with calling remove on entries iterator on maps keyed by object.
  • Fix issue with RingBuffers so they can work in big endian CPUs.
  • Upgrade to guava-testlib 25.1.
  • Upgrade to Checkstyle 8.12.
  • Upgrade to Byte Buddy 1.8.15.
  • Upgrade to Mockito 2.21.0.

0.9.22 (30 Jul 2018)

  • Added ErrorLogReader.hasErrors().
  • If no active timers, then advance currentTick on poll if necessary. Add DeadlineTimerWheel.resetStartTime() method support.
  • Override write and flush methods on DirectBufferOutputStream to remove the unneeded IOException.
  • Correct resulting offset set in bounds check when writing into a DirectBufferOutputStream. Issue #150.
  • Add References helper method that can be intrinsified. PR #149.
  • Upgrade to Gradle 4.9.
  • Upgrade to Mockito 2.20.1.

0.9.21 (16 Jul 2018)

  • Provide a capacity method to all map types.
  • Improve efficiency of rehash as maps grow.
  • Null out keys in maps that have an object reference for key to avoid memory leak on removal.
  • Upgrade to Mockito 2.19.1.
  • Upgrade to Byte Buddy 1.8.13.
  • Upgrade to guava-testlib 23.5.

0.9.20 (07 Jul 2018)

  • Remove the use of sun.misc.Unsafe from tests so that they no longer need to be forked.
  • Perform a single scan over existing errors in the DistinctErrorLog to reduce the significant allocation of walking stack traces.
  • Fix issue with putting Integer.MIN_VALUE rather than Long.MIN_VALUE into a buffer as ASCII for the Long.MIN_VALUE. Issue #145.
  • Upgrade to Checkstyle 8.11.
  • Upgrade to Gradle 4.8.1.

0.9.19 (03 Jul 2018)

  • Add the ability to provide an expandable MutableDirectBuffer to CopyBroadcastReceiver.
  • Keep reference to underlying ByteBuffer in AtomicCounter, UnsafeBufferPosition, and UnsafeBufferStatusIndicator.
  • Fix putBytes() methods in MappedResizeableBuffer. PR #144.
  • Resent thread interrupt flag in SleepingMillisIdleStrategy.
  • Upgrade to Byte Buddy 1.8.10.
  • Upgrade to Mockito 2.19.0.
  • Upgrade to Checkstyle 8.10.1.

0.9.18 (04 May 2018)

  • Allow caller to control AgentRunner.close() timeout behaviour. PR #141.
  • Handle race condition between File.length() and FileChannel.size() in mark files. PR #140.
  • Upgrade to Shadow 2.0.4.
  • Upgrade to Checkstyle 8.10.

0.9.17 (29 Apr 2018)

  • Provide HMTL 5 version to javadoc under Java 10 to avoid warning and fix HTML tags.
  • Use Constructor for dynamically creating instances to avoid deprecated warning under Java 10.
  • Remove compile time dependency on sun.nio.ch.FileChannelImpl to support building under Java 10.
  • Upgrade to Gradle 4.7.

0.9.16 (23 Apr 2018)

  • Remove dependency on sun.nio.ch.DirectBuffer for better Java 10 support.
  • Improve the construction efficiency of ManyToManyConcurrentArrayQueue.
  • Add Object2ObjectHashMap as an open addressing option for a cache friendly alternative to HashMap.
  • Provide option to allocate iterators and entries for maps for conformance.
  • Add Guava conformance test suite for maps/sets and fix compliance issues.
  • Add AsciiEncoding.parseInt() and parseLong() for parsing integer values from a CharSequence without allocation.
  • Include generated classes in the Javadoc.
  • Upgrade to Mockito 2.18.3.
  • Upgrade to ByteBuddy 1.8.5.
  • Upgrade to Checkstyle 8.9.
  • Upgrade to Gradle 4.6.
  • Upgrade to Shadow 2.0.3.

0.9.15 (09 Mar 2018)

  • Add fast unordered remove methods to primitive arrays lists. PR #135.
  • Make collections non final so they can be sub-classed. Issue #133.

0.9.14 (28 Feb 2018)

  • Improve error message for unaligned buffer access. PR #130

0.9.13 (23 Feb 2018)

  • Add CountersReader.forEach method that gives basic label information and the counter value.
  • Improve Agents error handling in aggressive shutdown scenarios.
  • Add SystemUtil.getPid().
  • Add MarkFile to indicate the presence of a running service with supporting meta information.
  • Add toString methods to idle strategies for debugging.
  • Fix bug with IntArrayList.addAt() method. PR #125.
  • Change CountersManager to allow for a cool down period before a counter is reused.
  • Remove unnecessary throws clauses where APIs could do so.
  • Honour List equals and hash code implementations for primitive lists.
  • Improve collections iterators to be more compatible with standard collections and reduce footprint. Some of the changes are breaking as IntIterator has been replaced by inner classes.
  • Provide the ability to lookup a deadline for a given timer id on the DeadlineTimerWheel. Issue #123.
  • Return a boolean to indicate if DeadlineTimerWheel.cancelTimer() was successful.
  • Make hash set equals and hash code methods compatible with HashSet. PR #121
  • Upgrade to JShadow 2.0.2.
  • Upgrade to Checkstyle 8.8.
  • Upgrade to Gradle 4.5.1.

0.9.12 (15 Dec 2017)

  • Add methods to put and parse numbers in ASCII format with direct buffers. PR #118.
  • Add methods to put a range of a String in ASCII into direct buffers.
  • Only allocate sub collections and iterators if used in hash map implementations.
  • Provide a flag to hash set construction so that they don't cache iterators. PR #116.
  • Rework DeadlineTimerWheel API to have consistent naming and don't advance the wheel until a tick is consumed.
  • Remove IOException for direct buffer stream wrapper signatures that cannot be thrown. PR #113.
  • Upgrade to Mockito 2.15.0.
  • Upgrade to Checkstyle 8.5
  • Upgrade to JShadow 2.0.1.
  • Upgrade to Gradle 4.4.

0.9.11 (15 Nov 2017)

  • Rework DeadlineTimerWheel to be more usable and efficient. API changes are breaking.
  • Apply cacheline padding to cached clocks to avoid false sharing.
  • Remove clearing of interrupted flag if agent thread is interrupted. PR #112.
  • Raise the interrupted flag if the agent runner thread is interrupted in AgentRunner.close(). PR #112.
  • Call Agent.onClose() if constructed even if a thread did not start via the AgentRunner to allow for cleanup.
  • Add support for querying the state of a counter and lingering counters to CountersReader and CountersManager.
  • Allow AtomicCounter to be publicly constructed and bring method names for increment inline with AtomicBuffer.
  • Upgrade to Byte Buddy 1.7.9.
  • Upgrade to Mockito 2.12.0.
  • Upgrade to Checkstyle 8.4.

0.9.10 (01 Nov 2017)

  • Add new more efficient DeadlineTimerWheel implementation and remove old one.
  • Add the ability to parse size and time values with units from system properties.
  • Update to Mockito 2.11.0.

0.9.9 (16 Oct 2017)

  • Improve the performance of iterator setup in collections.
  • Add Object2IntHashMap.
  • Add HighResolutionClock and associated interfaces.

0.9.8 (11 Oct 2017)

  • Collection types implement Serializable.
  • Change BackoffIdleStrategy to avoid false sharing on card table and adjacent objects.
  • Added SystemUtil.loadPropertiesFiles() to load a list of files, resources, URLs into System Properties.
  • Added SystemUtil.isDebuggerAttached() so that code such as timeouts can be adjusted.
  • Add toString() methods for direct buffer implementations. See issue #106.
  • Upgrade to Checkstyle 8.3.
  • Upgrade to Byte Buddy 1.7.4.
  • Upgrade to Mockito 2.10.0.

0.9.7 (21 Aug 2017)

  • Added ConcurrentCountersManager for threadsafe counters allocation and reclamation.
  • Restrict hash based collection to have a load factor in the range to 0.1 to 0.9.
  • Restrict the minimum capacity for Maps to be 8.
  • Ensure that get() complies with the Map contract of returning null if the element is missing, Issue #98.
  • Make the lifecycle consistent between AgentRunner and AgentInvoker.
  • Agent can now self terminate by throwing an AgentTerminationException.
  • Added MutableInt and MutableLong.
  • Ability to allocate a counter without string or lambda allocation.
  • Added Agent.onStart() hook for initialisation.
  • Added CachedEpochClock and CachedNanoClock.
  • Added DynamicCompositeAgent for runtime adding and removing of Agents into a composite.
  • Support other character sets than UTF-8 for the CountersManager.
  • Upgrade to ByteBuddy 1.6.14.
  • Upgrade to Mockito 2.8.47.
  • Upgrade to Checkstyle 8.1.
  • Upgrade to sevntu-checks:1.24.1.
  • Upgrade to Gradle 4.1.

0.9.6 (14 May 2017)

  • Add ExpandableDirectByteBuffer.
  • Fix behaviour of Int2IntHashMap when being used via Map<Integer, Integer> interface.
  • Added SleepingMillisIdleStrategy.
  • Added AgentInvoker.
  • Provide a NoOpLock implementation to allow for the eliding of a ReentrantLock.
  • Improve performance when zeroing our a new or mapped file.
  • Reduce use of String.format().
  • Make AgentRunner.close() more robust.
  • Use platform specific new lines for error messages.
  • Clear missingValue when IntHashSet.clear() is called.
  • Upgrade to Checkstyle 7.7.

0.9.5 (12 Apr 2017)

  • Grow ExpandableArrayBuffer by the golden ratio rather than 2.
  • Add the ability to drain queues to a limit rather than completely.
  • Use platform specific new line message output.
  • Make AgentRunner.close() a bit more robust to startup race conditions.
  • Ensure the missingValue is reset when IntHashSet.clear() is called.
  • Upgrade to Mockito 2.7.22.
  • Upgrade to Gradle 3.5.

0.9.4 (06 Apr 2017)

  • Fixed and improved the efficiency of bulk operations on collections with particular focus on IntHashSet.
  • Improve efficiency (x2) of the iterators on hashed collections.
  • Improve efficiency of toString() methods on collections.
  • Add an efficient copy constructor to Int2ObjectHashMap.
  • Change Position and StatusIndicator from interfaces to abstract classes to benefit from CHA (Class Hierarchy Analysis).
  • Added ArrayListUtil.
  • Reduce default load factor in hash based collections from 0.67 to 0.55 to help avoid clustering resulting from linear probing.
  • Update hash functions to better spread out a monotonic sequence of keys in collections.
  • Increase AtomicCounter label length from 124 to 380 bytes to allow for longer more descriptive labels.
  • Add equals() and hashCode() methods to the collections.
  • Clarify Javadoc for RingBuffer.read(). Issue #95.
  • Fix missing 0xFF mask on DirectBufferInputStream.read(). PR #94.
  • Upgrade to Checkstyle 7.6.1.
  • Upgrade to sevntu-checks 1.23.1.
  • Upgrade to Mockito 2.7.21.
  • Upgrade to Byte Buddy 1.6.12.
  • Upgrade to Gradle 3.4.1.

0.9.3 (22 Feb 2017)

  • Fixed project code style violations.
  • Reworked primitive hash sets so they don't expose the missing value concept and allow all possible values and fix bug relating to collections containing the missing value. Note: This has caused an API change to the IntHashSet and LongHashSet constructors, ensure you check your arguments here.
  • Java Agent for checking access alignment to direct buffers.
  • Upgrade to Checkstyle 7.5.1.
  • Upgrade to Byte Buddy 1.6.9.
  • Upgrade to Gradle 3.4.

0.9.2 (23 Jan 2017)

  • Change artifact output from Agrona to agrona because some build systems have issues with case.
  • Improve performance of string methods on direct buffers.
  • Add primitive counter maps.
  • Bug fix primitive to primitive maps when the missingValue is used as a key.
  • Add ASCII codec methods to direct buffers.
  • Fix isEmpty() on multi-producer queues.
  • Remove explicit dependency of com.sun.media for those who do not use the HighResolutionTimer.
  • More efficient implementation of equals() and hashCode() on primitive array lists.
  • More lenient and correct implementation of equals() and hashCode() in hash sets.
  • Upgrade to Mockito 2.6.8.
  • Upgrade to Checkstyle 7.4.
  • Upgrade to sevntu-checks 1.23.0.
  • Upgrade to Gradle 3.3.

0.9.1 (20 Dec 2016)

  • Provide more efficient set based operations on Sets when used with the same type.
  • Notify Agent role name when timeout on awaiting shutdown to help debugging.
  • Added ShutdownSignalBarrier that response to SIGINT and SIGTERM.
  • Allow signal barriers to created on a different thread and be programmaticly signalled.
  • Better handle overflow when lists reach maximum size.
  • Grow primitive array lists based on golden ratio for better storage reclamation.
  • Upgrade to Checkstyle 7.3.
  • Upgrade to sevntu-checks 1.22.0.
  • Upgrade to Mockito 2.2.29.
  • Upgrade to Gradle 3.2.1.

0.9.0 (17 Nov 2016)

  • Only report errors in AgentRunner when it is running.
  • Added Gradle OSGi plugin.
  • Upgrade to sevntu-checks 1.21.1.
  • Upgrade to Mockito 2.2.16.
  • Upgrade to Gradle 3.2.

0.5.5 (03 Nov 2016)

  • Use primitive typed methods in CountersManager to avoid boxing.
  • Add popX() and pushX methods to IntArrayList and LongArrayList.
  • Upgrade to Mockito 2.2.9.
  • Upgrade to Checkstyle 7.2.

0.5.5 (15 Oct 2016)

  • HighResolutionTimer for for increasing resolution of sleep periods on Windows.
  • Make closing of AtomicCounters and Positions idempotent.
  • Bugfix for reading DistinctErrorLong with incorrect label offset.
  • Significant performance improvements on consume side of OneToOneRingBuffer.
  • ObjectHashSet for open addressing sets of object references.
  • Support remove() on hash set iterators.
  • Added computeIfAbsent() to primitive maps.
  • Array backed lists of long and int to avoid boxing.
  • Deprecate TimerWheel and migrated it to here...
  • Upgrade to Checkstyle 7.1.2.
  • Upgrade to Gradle 3.1.

0.5.4 (24 Aug 2016)

  • Added controllable idle strategy.
  • Change UnsafeBuffer.setMemory() so it is more likely to call memset() for greater performance.
  • Expose the address adjustment from wrapping ByteBuffers at offsets.
  • ThreadFactor support for starting Agents.
  • Upgrade to Gradle 2.14.1.

0.5.3 (22 Jul 2016)

  • Support read-only ByteBuffers with UnsafeBuffer.
  • Remove a layer of indirection for Positions and AtomicCounters to reduce data dependent loads.
  • Perform upfront bounds checking for Positions and AtomicCounters for increased performance.
  • Update to Checkstyle 7.0.

0.5.2 (29 Jun 2016)

  • Add SBE interfaces for flyweights.
  • Allow access to underlying FileChannel for MappedResizableBuffer.
  • Javadoc improvements.
  • Make isEmpty() consistent with poll() for queue behaviour.
  • Update to Gradle 2.14.
  • Update to Checkstyle 6.19.

0.5.1 (23 May 2016)

  • Ability to allocate an aligned direct ByteBuffer.
  • Change loadFactor on maps from double to float thus saving 4 bytes per map.
  • Update to Gradle 2.13.
  • Update to Checkstyle 6.18.

0.5.0 (22 Apr 2016)

  • ExpandableArrayBuffer and ExpandableDirectBufferOutputSteam so SBE can write messages when the length is not known upfront.
  • ThreadHints.onSpinWait() and apply it to IdleStrategys.
  • Primitive specialised replace() methods on primitive keyed maps.
  • Update to Checkstyle 6.17.

0.4.13 (24 Mar 2016)

  • Improved ManyToOneConcurrentLinkedQueue to avoid GC Nepotism and promotion issues.
  • Migrate from uk.co.real_logic.agrona to org.agrona package structure.
  • Group counters and related classes to the status package.
  • Update to Checkstyle 6.16.1
  • Update to Gradle 1.12

0.4.12 (01 Mar 2016)

  • Added keys and type metadata to CountersManager.
  • Fix for negative values in compound keys on BiInt2ObjectMap.
  • Added native byte order string methods to direct buffers.
  • Added DistinctExceptionLog and friends.
  • Improve efficiency of bounds checks on direct buffers.
  • Update to Gradle 2.11

0.4.11 (06 Feb 2016)

  • Improved efficiency of bounds checking on UnsafeBuffer.
  • Add equals(), hashCode(), and compareTo() methods to UnsafeBuffer.
  • Reduce memory footprint on primitive hash maps.
  • Bugfix for unblocking ManyToOneRingBuffer at end of the buffer.
  • Improve hashCode() on Int2IntHashMap and Long2LongHashMap.
  • Fix missing Iterator reset on Int2IntHashMap and Long2LongHashMap.

0.4.10 (18 Jan 2016)

  • Update Checkstyle to add indentation checks and fix violations.
  • Fix regression of UnsafeBuffer using int for the off-heap address to be long again.
  • Remove capacity and mask fields from some maps to allow for better compiler optimisation of bounds checks.
  • Remove mask field from queues and calculate based on capacity to save a field load.
  • Swap equals order on contains(Object) methods of maps to allow for better compiler inlining.
  • Added toString() method to primitive2primitive maps.

0.4.9 (06 Jan 2016)

  • Expose iteration APIs on primitive maps to avoid autoboxing.
  • Include generated classes in the source JAR.
  • Revert MemoryUsage wrapper for Unsafe to take out layer of indirection.
  • Add some missing Javadoc.
  • Added OneToOneRingBuffer implementation.
  • Update to Gradle 2.10.
  • Update to Checkstyle 6.14.1.

0.4.8 (26 Nov 2015)

  • Generate Long2ObjectHashMap
  • Added [Int|Long]2ObjectCache
  • Expand primitive map functionality for values and keys.
  • Update to Gradle 2.9

0.4.7 (13 Nov 2015)

  • Bugfixes for the RingBuffer and LruCache.

0.4.6 (03 Nov 2015)

  • RingBuffe can be unblocked when the producer dies.
  • Expose positions counters from RingBuffer for tracking.
  • Growable primitive Sets.
  • InputStream and OutputStream wrappers for direct buffers.
  • Free up space in queues as they are drained.
  • Improve CompositeAgent error handling and allow arbitrary number of agents.
  • Update to Gradle 2.8 and Checkstyle 6.11.2.

0.4.5 (14 Oct 2015)

  • Performance improvements to FIFO structures
  • Allow for better inlining of UnsafeBuffer bounds check.

0.4.4 (25 Sep 2015)

  • Performance improvements for iteration of hash maps.
  • Reduced clustering in hash maps.
  • Improved performance of bounds checks on UnsafeBuffer.
  • Fix race conditions in rapidly cycling the lifecycle of AgentRunners in tests.
  • Update to Grade 2.7.

0.4.3 (26 Aug 2015)

  • Added ManyToManyConcurrentArrayQueue and ManyToOneConcurrentLinkedQueue.
  • Off-heap buffer for storing records.
  • Fix bug with primitive maps size method.
  • Added NioSelectedKeySet.

0.4.2 (27 Jul 2015)

  • Improved Javadoc.

0.4.1 (20 Jul 2015)

  • Improved Javadoc.
  • Bugfixes to primitive hash maps.
  • Update to Gradle 2.5.

0.4 (09 Jul 2015)

  • Removed unused classes.
  • Added EpochClock.
  • Added LruCache.
  • Fixed Counter reset bug on allocation.
  • Update to Gradle 2.4.

0.3.1 (27 Apr 2015)

  • Verify alignment on off-heap data structures.
  • Added SIGINT support.
  • Bugfix for Broadcast Buffer.

0.3 (18 Mar 2015)

  • Idle strategies and AgentRunner.
  • Hash Sets.
  • Source expander.

0.2 (10 Feb 2015)

  • Clean up release after extraction from Aeron.

0.1 (16 Jan 2015)

  • Initial Release.
Clone this wiki locally