Skip to content

Releases: SlickQuant/slick-queue

Release v1.4.0

04 Feb 17:34

Choose a tag to compare

Changes

  • BREAKING CHANGE: Added last_published_index and header magic in shared memory header
    • Fixed shared-memory attach race by adding an init-state handshake with readiness wait and legacy fallback
    • Added last-published tracking so read_last() only returns published data; added a regression test
    • Changed read_last() return signature to std::pair<T*, uint32_t>
  • Updated read_last() documentation for legacy shared-memory segments
  • Relaxed memory ordering in the shared atomic cursor path for lower overhead
  • Fixed release workflow changelog extraction to match version headers with trailing dates

Release v1.3.0

30 Jan 19:16

Choose a tag to compare

Changes

  • BREAKING CHANGE: Replaced platform-specific shared memory implementation with slick-shm library
    • Removed all Windows-specific code (CreateFileMapping, MapViewOfFile, etc.)
    • Removed all POSIX-specific code (shm_open, mmap, etc.)
    • Unified shared memory implementation using slick::shm::shared_memory RAII wrapper
    • Code reduction: ~92 lines removed (14% reduction in queue.h)
    • Improved race condition handling: replaced sleep_for(1ms) with atomic creator flag
    • Added CREATOR_FLAG_OFFSET constant for atomic creator detection at offset 48 in header
    • Added comprehensive shared memory layout documentation
    • Simplified destructor using RAII automatic cleanup
    • All 22 tests pass (100% success rate)
    • No changes to public API - fully backward compatible at API level
    • Binary compatibility break: shared memory segments from previous versions are incompatible
  • Fixed CMake configuration to properly handle slick-shm dependency in export targets
    • Removed SLICK_SHM_INSTALL OFF to allow slick-shm installation when fetched
    • Added find_dependency(slick-shm REQUIRED) in slick-queueConfig.cmake.in
    • Removed obsolete platform-specific precompiled headers (windows.h, sys/mman.h, etc.)

Release v1.2.3

29 Jan 20:14

Choose a tag to compare

Changes

  • Initialize reserved counters for local and shared-memory queues
  • Validate shared-memory size is power-of-two and element size matches when attaching
  • Add lossy semantics documentation and debug loss detection counter
  • Add lossy overwrite tests for in-process and shared-memory queues
  • Align hot atomics to cache lines and add light spin backoff under contention
  • Add reserve(1) fast path using fetch_add
  • Add SLICK_QUEUE_ENABLE_CPU_RELAX to control pause/yield backoff
  • Guard against zero-length reservations
  • Add limits header

Release v1.2.2

11 Jan 03:25

Choose a tag to compare

Changes

  • Rename repository from slick_queue to slick-queue (hyphenated naming follows recommended convention)
  • Refactor repository name in CMake configuration files
  • Update documentation and build references to use new repository name

Release v1.2.1

27 Dec 18:00

Choose a tag to compare

Changes

  • Fixed a race condition when multi-process trying to create the same shared memory segment
  • Fixed CTest integration by moving enable_testing() to root CMakeLists.txt and removing EXCLUDE_FROM_ALL
  • Added release workflow

v1.2.0

19 Dec 17:11

Choose a tag to compare

  • BREAKING CHANGE: Refactored reserved_info from struct to packed uint64_t for guaranteed lock-free atomics
    • Uses 48-bit index (supports 2^48 = 281 trillion iterations) and 16-bit size
    • std::atomic<reserved_info> is now always lock-free on all platforms
    • Reserve size limit of 65,535 (2^16 - 1) when using read_last() - see documentation
  • Added HEADER_SIZE constant to replace magic number 64 in shared memory layout
  • Added element size validation in shared memory to prevent type mismatches between processes
  • Updated README with vcpkg installation instructions
  • Updated README with lock-free implementation details and constraints documentation

v1.1.2

14 Nov 23:41

Choose a tag to compare

  • Add alias target to provide the same slick::slick_queue name during build time

v1.1.1

14 Nov 15:33

Choose a tag to compare

  • Updated CMakeLists.txt and added cmake config for vcpkg integration.
  • Changed version number to three digits.

v1.1.0.2

21 Oct 23:04

Choose a tag to compare

  • Changed include folder from include/slick_queue to include/slick
  • Changed test framework from catch2 to googletest
  • Rename slick_queue.h to queue.h

v1.1.0.1

21 Oct 14:23

Choose a tag to compare

  • Fixed Linux implementation to read size from shared memory when opening existing segments
  • Added size validation when opening existing shared memory with size mismatch