-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCHANGELOG
More file actions
113 lines (95 loc) · 5.59 KB
/
CHANGELOG
File metadata and controls
113 lines (95 loc) · 5.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# v1.4.1 - 2026-02-14
- Remove precompile headers to speed up downstream project build
# v1.4.0 - 2026-02-04
- **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
# v1.3.0 - 2026-01-30
- **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.)
# v1.2.3 - 2026-01-29
- 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
# v1.2.2 - 2026-01-10
- 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
# v1.2.1 - 2025-12-27
- 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 - 2025-12-19
- **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 - 2025-11-14
- Add alias target to provide the same slick::slick_queue name during build time
# v1.1.1 - 2025-11-14
- Updated CMakeLists.txt and added cmake config for vcpkg integration.
- Changed version number to three digits.
# v1.1.0.2 - 2025-10-21
- Changed include folder from include/slick_queue to include/slick
- Changed slick_queue.h to queue.h
- Changed test framework from catch2 to googletest
# v1.1.0.1 - 2025-10-21
- Fixed Linux implementation to read size from shared memory when opening existing segments
- Added size validation when opening existing shared memory with size mismatch
# v1.1.0.0 - 2025-10-04
- Fixed size calculation in shared memory mapping to use reserved_info struct
- Added server-client shared memory test case
- Added GitHub CI workflow for automated testing across Ubuntu, Windows, and macOS
- Added CI status badge to README
- Added CTest integration for automated test discovery
- Added read() overload with atomic cursor for work-stealing/load-balancing patterns
- Added work-stealing test cases for both in-process and shared memory modes
- Enhanced README with work-stealing example and updated API documentation
- Fixed MSBuild MSB8028 warnings for custom targets
# v1.0.2.1 - 2025-10-01
- Fixed buffer wrap read logic to properly retry from wrapped position
- Improved reader behavior when encountering wrap jump markers
- Changed to C++20
# v1.0.2.0 - 2025-09-29
- Handles buffer wrap properly
- Refactor to use reserved_info struct for better buffer management
- Add buffer wrap test case
# v1.0.1.2 - 2025-09-23
- Fixed dist_slick_queue might cause third-party dependency installation error in release build
# v1.0.1.1 - 2025-09-20
- Add WIN32_LEAN_AND_MEAN
# v1.0.1.0 - 2025-09-12
- Change organization name
# v1.0.0.2 - 2025-08-30
- Change the installation directory
# v1.0.0.1 - 2025-08-30
- Add comprehensive documentation to SlickQueue class
- Minor fix: corrected size() method to return size_ instead of mask_ + 1