JCTools v3.0.0 Release Notes

Release Date: 2020-01-03 // almost 2 years ago
  • This is a major version as there are some minor API breaking changes which may effect users. Please apply with care and provide feedback. The breaking changes:

    • โœ‚ Removed MpscLinkedQueue7 and MpscLinkedQueue8 and consolidate into parent. This removes the need for the builder method on MpscLinkedQueue.
    • ๐Ÿ“ฆ Deprecated QueueFactory and spec package classes. These are not used by any users AFAICT and are only used for testing internally.
    • โœ‚ Removed some internal classes and reduced visibility of internal utilities where practical. The @InternalAPI tagging annotation is also used more extensively to discourage dependency.

    We also have some great new queues for y'all to try:

    • #226: XADD unbounded mpsc/mpmc queue: highly scalable linked array queues (from @franz1981)
    • ๐Ÿ†• New blocking consumer MPSC (with contributions and bug fixes from @njhill)

    ๐Ÿ› Bug fixes:

    • #209: On Arm7, non-volatile long can have unaligned address leading to error
    • #216: Size of SpscGrowableArrayQueue can exceeds max capacity (from @franz1981 PR #218)
    • #241: Protect the producer index in case of OutOfMemoryError (from @franz1981)
    • #244: Long NBHM AssertionError when replacing missing key (thanks @fvlad for reporting and @cliffclick for assistance and review)
    • ๐Ÿ›  Fix argument checks on fill/drain methods
    • ๐Ÿ›  Fix LGTM warning, potential int overflow bug b467d29, 15d944c, 6367951

    ๐Ÿ‘Œ Improvements:

    • Don't mark generated linked atomic queues as final (from @kay 9db418c)
    • #211: Implement batching methods on MpmcArrayQueue (from @franz1981)
    • #228: Iterator for MpscArrayQueue and MpscUnboundedArrayQueue (PR #229 from @srdo)
    • ๐Ÿ‘ Iterator support also available for the *ArrayQueue classes
    • #208: MpscLinkedAtomicQueue can be made not final
    • ๐Ÿ‘ป #237: Add scale to exception message to help debug netty/netty#8916 (from @johnou)

    โœ… Many other improvements to testing, javadoc, formatting were made with some contributions from @Hearen @JanStureNielsen @nastra thanks!