Skip to content

Release v1.4.0

Choose a tag to compare

@genspark-ai-developer genspark-ai-developer released this 09 Dec 06:09
· 78 commits to master since this release

🎉 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