Releases: mutouyun/cpp-ipc
Releases · mutouyun/cpp-ipc
Release v1.4.0
🎉 Release v1.4.0
This release includes FreeBSD platform support, comprehensive test suite refactoring, important bug fixes, and new cleanup interfaces.
🚀 Major Features
FreeBSD Platform Support (#156, #158, #160, #161)
- ✅ Full FreeBSD platform support with POSIX implementation
- 🔧 Fixed all POSIX semaphore naming issues for FreeBSD compatibility
- 🔧 Fixed robust mutex EOWNERDEAD handling
- 🔧 Resolved C++17 compilation errors on FreeBSD GCC 13.3
- 🔧 Fixed segfault in mutex destruction
- 🔧 Fixed mutex unlock timing for multi-run stability
- 🔧 Fixed shm_unlink failures with proper '/' prefix handling
Comprehensive Unit Test Suite (#159)
- 📦 Complete test refactoring with comprehensive coverage
- ✅ New tests for: buffer, shm, mutex, semaphore, condition, locks, route, channel
- 🎯 Improved test quality with proper edge case handling
- 📝 Better test documentation and semantics
Windows Shared Memory Reference Counting
- 🔢 Implemented full reference counting for Windows shared memory
- ✅ Now matches POSIX behavior
- 🔧 Fixed all reference counting tests on Windows
🔧 Bug Fixes
Critical Fixes
- 🐛 Fixed double-free bugs in shared memory tests
- 🐛 Fixed segfault in EOWNERDEAD handling
- 🐛 Fixed FreeBSD segfault by unlocking mutex before destruction
- 🐛 Fixed mutex unlock timing to avoid interfering with other references
- 🐛 Fixed ODR violations in get_wait_time inline functions
- 🐛 Fixed namespace conflicts with predefined 'linux' macro
Buffer Improvements
- 🔧 Removed const from char constructor to prevent undefined behavior
- 🔧 Removed redundant const qualifier in array constructor
- 🔧 Renamed 'additional' parameter to 'mem_to_free' for clarity
Test Fixes
- 🔧 Fixed receiver loop count in MultipleSendersReceivers test
- 🔧 Corrected test logic in multiple test cases
- 🔧 Fixed id_t ambiguity in test_shm.cpp
- 🔧 Replaced C++17 structured bindings with C++14 compatible code
- 🔧 Changed test indentation from 4 spaces to 2 spaces
Platform Compatibility
- 🔧 Fixed permission issues under Linux (#139)
- 🔧 Fixed MinGW compatibility - use lowercase windows.h (#157)
- 🔧 Improved POSIX shared memory error logging
✨ Enhancements
Cleanup Interfaces
- 🧹 Added cleanup interfaces for shared memory handles
- 🧹 Added cleanup interfaces for queue
- 🧹 Added cleanup interfaces for synchronization facilities
- 🧹 Added cleanup interfaces for waiter
- 🧹 Added
clear_storagefor queue - 🧹 Added cleanup interfaces for ipc channel
Connection Management (#145, #148)
- 🔌 Fixed connection slot full判断错误 (#145)
- 🔌 Fixed issues #107 and #123 - receiver checks connection when pop fails
- 🔌 In non-broadcast mode, connection tags are only used for counting
Build System
- 📦 Added PACKAGE_VERSION
- 📦 Added cpp-ipc-targets
- 📦 Updated CMakeLists.txt for new test structure
Code Quality
- 🎨 Improved name handling in shm_posix.cpp to match semaphore pattern
- 🎨 Improved emplace construction for shm_data in mutex.h
- 🎨 Removed redundant self-assignment in shm_win.cpp
- 📝 Added semantic comments for release/remove operations
📊 Test Coverage
All tests now pass on:
- ✅ Linux (GCC, Clang)
- ✅ Windows (MSVC, MinGW)
- ✅ FreeBSD (GCC 13.3)
- ✅ QNX (POSIX)
🙏 Contributors
Special thanks to all contributors who made this release possible:
- @mutouyun - FreeBSD support, test refactoring, numerous bug fixes
- @cscd98 - MinGW compatibility (#157)
- @johnwongx - Connection slot fix (#145)
- @aengusjiang - POSIX shm error logging improvements (#139)
- @yonker-yk - Connection management improvements (#148)
📝 Commits in This Release
This release contains 64 commits with improvements across the entire codebase.
Detailed Changelog
For a complete list of changes, see the commit history.
🔗 Links
⬆️ Upgrading
This release is backward compatible with v1.3.0. Simply update your dependency to v1.4.0.
Breaking Changes
None
Deprecations
None
Full Changelog: v1.3.0...v1.4.0