Releases: SlickQuant/slick-queue
Releases · SlickQuant/slick-queue
Release v1.4.0
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
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_OFFSETconstant 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 OFFto 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.)
- Removed
Release v1.2.3
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
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
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
- BREAKING CHANGE: Refactored
reserved_infofrom 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_SIZEconstant 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
- Add alias target to provide the same slick::slick_queue name during build time
v1.1.1
- Updated CMakeLists.txt and added cmake config for vcpkg integration.
- Changed version number to three digits.
v1.1.0.2
- 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
- Fixed Linux implementation to read size from shared memory when opening existing segments
- Added size validation when opening existing shared memory with size mismatch