Download Latest Version Release v1.4.1 source code.tar.gz (663.3 kB)
Email in envelope

Get an email when there's a new version of cpp-ipc

Home / v1.4.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2025-12-09 4.5 kB
Release v1.4.0 source code.tar.gz 2025-12-09 663.3 kB
Release v1.4.0 source code.zip 2025-12-09 872.6 kB
Totals: 3 Items   1.5 MB 1

πŸŽ‰ 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: - @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.



⬆️ 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: https://github.com/mutouyun/cpp-ipc/compare/v1.3.0...v1.4.0

Source: README.md, updated 2025-12-09