Skip to content

Releases: dallison/subspace

Latest release with some races fixed

03 Sep 22:29
95d3597

Choose a tag to compare

Fixes some lock-free races (thanks for the help Mikael).

Optionally clean up filesystem in server and new toolbelt

03 Sep 17:51
816d348

Choose a tag to compare

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

03 Sep 02:29

Choose a tag to compare

This fixes a few races found using Mikael's ClientTest.PublishAndResizeSubscriberConcurrently test that is a great stress test.

Zero copy facilities

07 Aug 01:13

Choose a tag to compare

Adds some functions to support zero copy actions on shared and weak pointers.

Latest coroutine and toolbelt libraries

06 Aug 20:26

Choose a tag to compare

Updates to the latest toolbelt and coroutine libraries

Include file tidy ups

05 Aug 23:42

Choose a tag to compare

Just adds some missing #include lines to client_channel.h for portability

Cmake and retirement fds

24 Jul 00:43

Choose a tag to compare

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

19 Jul 23:36

Choose a tag to compare

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

16 Jul 19:49

Choose a tag to compare

Just updates the version of cpp_toolbelt

Subspace version 2

09 Jul 22:34

Choose a tag to compare

This is a major release of Subspace that supports the following new features:

  1. Lock-free shared memory. This removes the lock from shared memory to provide better freedom from interference and better P90 performance (few context switches)
  2. Client-side buffer allocation. This moves the channel buffer allocation from the server to the client to speed up resize operations
  3. 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.
  4. C client. A C-language client that maps onto the C++ client. More portable and easier to interface with other languages.
  5. Active messages. Message objects returned from ReadMessage are 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 old subspace::shared_ptr<T> type and is used for all messages.