Releases: dallison/subspace
Latest release with some races fixed
Optionally clean up filesystem in server and new toolbelt
This adds a --cleanup_filesystem option for server (default false on Linux, true on mac). Also updates to new toolbelt.
A few race conditions with lock-free and client side buffers
This fixes a few races found using Mikael's ClientTest.PublishAndResizeSubscriberConcurrently test that is a great stress test.
Zero copy facilities
Adds some functions to support zero copy actions on shared and weak pointers.
Latest coroutine and toolbelt libraries
Updates to the latest toolbelt and coroutine libraries
Include file tidy ups
Just adds some missing #include lines to client_channel.h for portability
Cmake and retirement fds
Many thanks to @dloman for the cmake build files. I appreciate it Dan.
This adds cmake build files and retirement fds. Cmake has been checked on Linux with GCC and clang. On Mac it works with Apple Clang.
Retirement fds allow a publisher to be notified when a slot has been retired (either by all subscribers or by a message being dropped). This is useful for determining when resources can be freed at the publisher.
Release 2.0.2
Fixes an issue with resize where the shared memory files were unmapped but not deleted when they are no longer referenced.
Just update to latest toolbelt
Just updates the version of cpp_toolbelt
Subspace version 2
This is a major release of Subspace that supports the following new features:
- Lock-free shared memory. This removes the lock from shared memory to provide better freedom from interference and better P90 performance (few context switches)
- Client-side buffer allocation. This moves the channel buffer allocation from the server to the client to speed up resize operations
- Multiplexed virtual channels. This allows channels that all share the same message types and purpose to use a single multiplexer channel for their data. If your IPC design uses a lot of channels that are all similar (like node tick channels), this can reduce the memory utilization.
- C client. A C-language client that maps onto the C++ client. More portable and easier to interface with other languages.
- Active messages. Message objects returned from
ReadMessageare now active and will hold onto the channel's slot while they are alive. They can be moved but not copied. This is a replacement for the oldsubspace::shared_ptr<T>type and is used for all messages.