Skip to content

Releases: mutouyun/cpp-ipc

Release v1.4.0

09 Dec 06:09

Choose a tag to compare

🎉 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_storage for 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:


📝 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

v1.3.0

31 Oct 16:15

Choose a tag to compare

What's Changed

New Contributors

  • @SuperWangKai made their first contribution in #82

Full Changelog: v1.2.0...v1.3.0

v1.2.0

09 Jan 03:46
f2f1af8

Choose a tag to compare

Fix & Improvement:

  • 实现 robust 的 mutex & condition (using alephzero's mtx implementation)
  • 考虑到实现bug(issue-46),暂时移除 'smu'(single-multi-unicast) 和 'mmu'(multi-multi-unicast) 模式

Addition:

  • QNX 支持

v1.1.1

20 Oct 14:53
a572295

Choose a tag to compare

Fix:

  • 消除 warning: enumeral and non-enumeral type in conditional expression

Adjust:

  • performance.xlsx 更新图示说明

v1.1.0

21 Sep 07:45
fbf1c89

Choose a tag to compare

Fix:

  • 尚未连接时直接退出,会出现crash
  • 调整LIBIPC_USE_STATIC_CRT可能会导致链接出错
  • recv接口在等待时退出会导致cpu占用过高

Adjust:

  • src下的目录结构
  • waiter的实现方式(分别使用windows、linux各自的condition机制实现)
  • 不再提供waiter.h,跨进程同步设施(mutex、condition、semaphore)放入namespace sync中独立实现并分别提供头文件
  • 添加新的ut和demo

v1.0.0

15 Aug 07:14

Choose a tag to compare

modify to_tchar test