-
Notifications
You must be signed in to change notification settings - Fork 403
Change Log
Martin Thompson edited this page Sep 14, 2022
·
129 revisions
- Add
DynamicPackageOutputManager
so code generation can target multiple Java packages. PR #266. - Eliminate boxing operations on collections by providing non-boxing alternatives. PR #265.
- Add
getOrDefault
non-boxing implementations to collections. PR #264. - Add Javadoc note about freeing of aligned buffers which have been split. Issue #263.
- Fix for
Int2ObjectCache.get
can return unmatched value when full. Issue #262. - Upgrade to ByteBuddy 1.12.16.
- Upgrade to Mockito 4.8.0.
- Upgrade to JUnit 5.9.0.
- Upgrade to Gradle 7.5.1.
- 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
andObjectHashSet
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.
- 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 aftersetValue
was called. - Various fixes for
EntrySet/MapEntry
across different map implementations.
- 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.
- 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.
- Check for thread being interrupted after calling
ErrorHandler
inAgentInvoker
andAgentRunner
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.
- Fix a bug in
AsciiEncoding#digitCount(int)
andAsciiEncoding#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.
- 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 fromAsciiSequenceView
. 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.
- Tidy up of spelling and grammar.
- Fail the build if Gradle build file has warnings.
-
MutableDirectBuffer
methods forputString
acceptingCharSequence
. #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.
- Allow for
TransportPoller#ITERATION_THRESHOLD
to be set from system property. - Relocate shadowed ByteBuddy classes in fat JAR.
- Improve the performance of writing
int
andlong
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.
- Handle null error handler with
CloseHelper
. - Support
NioSelectedKeySet.contains
andNioSelectedKeySet.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.
- 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.
- 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.
- Fix issue with how direct buffers expand when initial length is set to be 0 or 1.
- Improve javadoc for
ArrayUtil
andDeadlineTimerWheel
. - Upgrade to JUnit 5.7.0.
- Upgrade to Version 0.33.0.
- Fix memory ordering semantics for late joining a broadcast buffer.
- Catch
Throwable
rather thanRuntimeException
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.
- 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 withAtomicCounter.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 likeInteger.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.
- 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.
- Fix race conditions with queues for
size
,isEmpty
, andpeek
methods.
- Fix warning message when closing
AgentRunner
. - Add ability to update counter metadata key. PR #209.
- Add
alias
for eachIdleStrategy
. - Add
CountersReader.getCounterTypeId(int)
. - Change false sharing protection to be forwards compatible with Java 15 class layout.
-
OffsetEpochNanoClock
as an allocation free alternativeEpochNanoClock
. 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.
- Supporting building and running on Java 14.
- Add
decrement()
anddecrementOrdered()
methods toAtomicCounter
. - Add
Thread.onSpinWait()
when retrying inManyToManyConcurrentArrayQueue
offer
andpoll
. - Upgrade to Gradle 6.3.
- Upgrade to BND 5.0.1.
- Upgrade to JUnit 5.6.1.
- Upgrade to Mockito 3.3.3.
- 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 directByteBuffer
s. PR #205. - Migrate from Gradle
maven
tomaven-publish
. - Allow Maps with a cached iterator to work when calling
toArray
on entries. PR #202. - Allow
CloseHelper
to work on expanded type range fromList
toCollection
ofClosable
. - 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.
- Add
RingBuffer.tryClaim
implementations for zero copy semantics when encoding into ring buffers. PR #199. - Allow for configurable
Charset
when encoding exceptions inDistinctErrorLog
. - Don't read underlying buffer in
AtomicCounter
implementations fortoString()
when closed to help avoid segfaults. - Expand the methods in
MutableInteger
andMutableLong
to be better single-threaded substitutes forAtomicInteger
andAtomicLong
. PR #198. - Filter dependencies from agent shadow POM.
- Upgrade to JUnit 5.6.0.
- Fix concurrency issue with enabling and disabling
HighResolutionTimer
. - Add
isLinux
andisWindows
toSystemUtil
. - 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.
- 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.
- 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.
- Don't expand
ExpandableRingBuffer
when space to the end is insufficient but sufficient space remains after padding and wrapping. PR #187.
- Improve javadoc for
HighPrecisionClock
. - Reduce the amount of false sharing padding on concurrent data structures to save on memory footprint.
- Implement
AutoClosable
forLoggingErrorHandler
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.
- 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.
- Add long variants of
BitUtil.isPowerOfTwo()
andBitUtil.findNextPositivePowerOfTwo()
. - Change tick resolution in
DeadlineTimerWheel
to be along
rather thanint
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.
- 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.
- Fix missing public constructors for
ExpandableRingBuffer
.
- Fix
IntArrayList.hashCode()
method to be compatible withList.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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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 withtoString()
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.
- Be more specific about synchronizing on latches in
ShutdownSignalBarrier
. PR #167. - Add
SemanticVersion
for composing semantic version levels into anint
. - Add ability to disable array printing on direct buffers during debugging via a system property. PR #166.
- 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.
- 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.
- Allow multiple
ShutdownSignalBarrier
s 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.
- 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.
- Warnings clean up in code base.
- Upgrade to Checkstyle 8.15.
- Upgrade to Guava testlib-27.0.1.
- Upgrade to Gradle 4.10.3.
- 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 aDirectBuffer
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.
- 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.
- Simplified
BitUtil.align
which may give a small performance gain. - Improve construction and expansion performance of
Object2ObjectHashMap
andObjectHashSet
. - Add build to Travis.
- Upgrade to Shadow 4.0.0.
- Upgrade to Gradle 4.10.1.
- 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.
- 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.
- Added
ErrorLogReader.hasErrors()
. - If no active timers, then advance
currentTick
on poll if necessary. AddDeadlineTimerWheel.resetStartTime()
method support. - Override write and flush methods on
DirectBufferOutputStream
to remove the unneededIOException
. - 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.
- 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.
- 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 thanLong.MIN_VALUE
into a buffer as ASCII for theLong.MIN_VALUE
. Issue #145. - Upgrade to Checkstyle 8.11.
- Upgrade to Gradle 4.8.1.
- Add the ability to provide an expandable
MutableDirectBuffer
toCopyBroadcastReceiver
. - Keep reference to underlying
ByteBuffer
inAtomicCounter
,UnsafeBufferPosition
, andUnsafeBufferStatusIndicator
. - Fix
putBytes()
methods inMappedResizeableBuffer
. 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.
- Allow caller to control
AgentRunner.close()
timeout behaviour. PR #141. - Handle race condition between
File.length()
andFileChannel.size()
in mark files. PR #140. - Upgrade to Shadow 2.0.4.
- Upgrade to Checkstyle 8.10.
- 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.
- 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 toHashMap
. - 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()
andparseLong()
for parsing integer values from aCharSequence
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.
- Add fast unordered remove methods to primitive arrays lists. PR #135.
- Make collections non final so they can be sub-classed. Issue #133.
- Improve error message for unaligned buffer access. PR #130
- 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.
- 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.
- 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 theAgentRunner
to allow for cleanup. - Add support for querying the state of a counter and lingering counters to
CountersReader
andCountersManager
. - Allow
AtomicCounter
to be publicly constructed and bring method names for increment inline withAtomicBuffer
. - Upgrade to Byte Buddy 1.7.9.
- Upgrade to Mockito 2.12.0.
- Upgrade to Checkstyle 8.4.
- 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.
- Improve the performance of iterator setup in collections.
- Add Object2IntHashMap.
- Add
HighResolutionClock
and associated interfaces.
- 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.
- 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
andAgentInvoker
. -
Agent
can now self terminate by throwing anAgentTerminationException
. - Added
MutableInt
andMutableLong
. - Ability to allocate a counter without string or lambda allocation.
- Added
Agent.onStart()
hook for initialisation. - Added
CachedEpochClock
andCachedNanoClock
. - 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.
- Add
ExpandableDirectByteBuffer
. - Fix behaviour of
Int2IntHashMap
when being used viaMap<Integer, Integer>
interface. - Added
SleepingMillisIdleStrategy
. - Added
AgentInvoker
. - Provide a
NoOpLock
implementation to allow for the eliding of aReentrantLock
. - 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
whenIntHashSet.clear()
is called. - Upgrade to Checkstyle 7.7.
- 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 whenIntHashSet.clear()
is called. - Upgrade to Mockito 2.7.22.
- Upgrade to Gradle 3.5.
- 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
andStatusIndicator
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()
andhashCode()
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.
- 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
andLongHashSet
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.
- 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()
andhashCode()
on primitive array lists. - More lenient and correct implementation of
equals()
andhashCode()
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.
- Provide more efficient set based operations on
Set
s 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.
- 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.
- Use primitive typed methods in
CountersManager
to avoid boxing. - Add
popX()
andpushX
methods toIntArrayList
andLongArrayList
. - Upgrade to Mockito 2.2.9.
- Upgrade to Checkstyle 7.2.
-
HighResolutionTimer
for for increasing resolution of sleep periods on Windows. - Make closing of
AtomicCounter
s andPosition
s 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.
- Added controllable idle strategy.
- Change
UnsafeBuffer.setMemory()
so it is more likely to callmemset()
for greater performance. - Expose the address adjustment from wrapping
ByteBuffer
s at offsets. -
ThreadFactor
support for starting Agents. - Upgrade to Gradle 2.14.1.
- Support read-only
ByteBuffer
s withUnsafeBuffer
. - Remove a layer of indirection for
Position
s andAtomicCounter
s to reduce data dependent loads. - Perform upfront bounds checking for
Position
s andAtomicCounter
s for increased performance. - Update to Checkstyle 7.0.
- Add SBE interfaces for flyweights.
- Allow access to underlying
FileChannel
forMappedResizableBuffer
. - Javadoc improvements.
- Make
isEmpty()
consistent withpoll()
for queue behaviour. - Update to Gradle 2.14.
- Update to Checkstyle 6.19.
- 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.
-
ExpandableArrayBuffer
andExpandableDirectBufferOutputSteam
so SBE can write messages when the length is not known upfront. -
ThreadHints.onSpinWait()
and apply it toIdleStrategy
s. - Primitive specialised
replace()
methods on primitive keyed maps. - Update to Checkstyle 6.17.
- Improved
ManyToOneConcurrentLinkedQueue
to avoid GC Nepotism and promotion issues. - Migrate from
uk.co.real_logic.agrona
toorg.agrona
package structure. - Group counters and related classes to the status package.
- Update to Checkstyle 6.16.1
- Update to Gradle 1.12
- 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
- Improved efficiency of bounds checking on
UnsafeBuffer
. - Add
equals()
,hashCode()
, andcompareTo()
methods toUnsafeBuffer
. - Reduce memory footprint on primitive hash maps.
- Bugfix for unblocking
ManyToOneRingBuffer
at end of the buffer. - Improve
hashCode()
onInt2IntHashMap
andLong2LongHashMap
. - Fix missing Iterator reset on
Int2IntHashMap
andLong2LongHashMap
.
- Update Checkstyle to add indentation checks and fix violations.
- Fix regression of
UnsafeBuffer
usingint
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.
- Expose iteration APIs on primitive maps to avoid autoboxing.
- Include generated classes in the source JAR.
- Revert
MemoryUsage
wrapper forUnsafe
to take out layer of indirection. - Add some missing Javadoc.
- Added
OneToOneRingBuffer
implementation. - Update to Gradle 2.10.
- Update to Checkstyle 6.14.1.
- Generate
Long2ObjectHashMap
- Added
[Int|Long]2ObjectCache
- Expand primitive map functionality for values and keys.
- Update to Gradle 2.9
- Bugfixes for the
RingBuffer
andLruCache
.
-
RingBuffe
can be unblocked when the producer dies. - Expose positions counters from
RingBuffer
for tracking. - Growable primitive Sets.
-
InputStream
andOutputStream
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.
- Performance improvements to FIFO structures
- Allow for better inlining of
UnsafeBuffer
bounds check.
- 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.
- Added
ManyToManyConcurrentArrayQueue
andManyToOneConcurrentLinkedQueue
. - Off-heap buffer for storing records.
- Fix bug with primitive maps size method.
- Added
NioSelectedKeySet
.
- Improved Javadoc.
- Improved Javadoc.
- Bugfixes to primitive hash maps.
- Update to Gradle 2.5.
- Removed unused classes.
- Added
EpochClock
. - Added
LruCache
. - Fixed Counter reset bug on allocation.
- Update to Gradle 2.4.
- Verify alignment on off-heap data structures.
- Added SIGINT support.
- Bugfix for Broadcast Buffer.
- Idle strategies and
AgentRunner
. - Hash Sets.
- Source expander.
- Clean up release after extraction from Aeron.
- Initial Release.