Skip to content

Commit 08bd813

Browse files
committed
Increase verson number; update CHANGELOG and README
1 parent 2abb10f commit 08bd813

File tree

4 files changed

+30
-7
lines changed

4 files changed

+30
-7
lines changed

CHANGELOG.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Changelogs
2+
3+
## [v1.0.1] - 2025-12-27
4+
5+
### Fixed
6+
- Fixed extra `/` prefix being added to shared memory names on POSIX systems (Linux/macOS)
7+
- Fixed test failures on Linux and macOS platforms
8+
9+
### Added
10+
- macOS shared memory name length validation (31 character limit including `/` prefix)
11+
- C++ extension support for Linux/macOS platforms with automatic fallback to native methods if unavailable
12+
- `atomic_store_64` and `atomic_cas_64` functions to C++ extension for improved cross-platform consistency
13+
14+
### Changed
15+
- Linux/macOS now prioritize C++ extension for atomic operations, falling back to native methods (`__sync_val_compare_and_swap` or `libatomic`) if extension is not available
16+
- Improved atomic operation reliability across all platforms
17+
- Enhanced test suite for better cross-platform compatibility
18+
19+
## [v1.0.0] - 2025-12-26
20+
21+
- Initial release
22+
- Python implementation of SlickQueue - a lock-free multi-producer multi-consumer (MPMC) queue with C++ interoperability through shared memory.
23+
- Windows, Linux, and macOS support

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ def consumer_worker(q, cursor, worker_id, results):
140140
items_processed = 0
141141
while True:
142142
# Atomically claim next item (work-stealing)
143-
data, size = q.read(cursor)
143+
data, size, index = q.read(cursor)
144144

145145
if data is None:
146146
break # No more data
@@ -196,7 +196,7 @@ def consumer_worker(queue_name, cursor_name, worker_id):
196196
items_processed = 0
197197
while True:
198198
# Atomically claim next item (work-stealing)
199-
data, size = q.read(cursor)
199+
data, size, index = q.read(cursor)
200200

201201
if data is None:
202202
break # No more data
@@ -404,7 +404,7 @@ data, size, read_index = q.read(read_index)
404404
# Python multi-consumer (atomic cursor)
405405
from slick_queue_py import AtomicCursor
406406
cursor = AtomicCursor(cursor_shm.buf, 0)
407-
data, size = q.read(cursor) # Atomically claim next item
407+
data, size, index = q.read(cursor) # Atomically claim next item
408408

409409
# C++ (updates by reference for both)
410410
auto [data, size] = queue.read(read_index); // read_index modified in-place
@@ -431,7 +431,7 @@ cursor.store(0)
431431

432432
# Multiple threads can share this cursor
433433
while True:
434-
data, size = q.read(cursor) # Each thread atomically claims items
434+
data, size, index = q.read(cursor) # Each thread atomically claims items
435435
if data is not None:
436436
process(data)
437437
```
@@ -448,7 +448,7 @@ cursor.store(0)
448448

449449
# Multiple processes can share this cursor
450450
while True:
451-
data, size = q.read(cursor) # Each process atomically claims items
451+
data, size, index = q.read(cursor) # Each process atomically claims items
452452
if data is not None:
453453
process(data)
454454
```

atomic_ops.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
"""
2222
from __future__ import annotations
2323

24-
__version__ = '1.0.0'
24+
__version__ = '1.0.1'
2525

2626
import sys
2727
import struct

slick_queue_py.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"""
2121
from __future__ import annotations
2222

23-
__version__ = '1.0.0'
23+
__version__ = '1.0.1'
2424

2525
import struct
2626
import sys

0 commit comments

Comments
 (0)