News

RSB 0.12

This RSB release is available in the following forms:

  • Source archives
  • Pre-compiled self-installing archives or executable binaries
  • Debian packages for different Ubuntu GNU/Linux versions (currently C++ and Common Lisp implementations only)
  • Pypi packages for the Python implementation
  • Maven package for the Java implementation

These can be downloaded from the 0.12 jobs continuous integration server or repository server respectively. Installation instructions and links for downloading can be found in the RSB manual.

Changes

  • Specification

    • A “display name” field has been added to the introspection protocol and a corresponding configuration option introspection.displayname has been added. Users can specify this configuration property for individual processes (e.g. via environment variables) to provide a custom name for the process, which is then e.g. shown by the introspection tool.
  • All languages

  • C++

    • The implementation now uses Boost.Signals2 instead of the deprecated version 1. This changes the external API for participant hooks, which is rarely used externally. In case you have used these hooks, you need to migrate to the new signals namespaces and type names.
    • LocalServer::Callback implementations to reuse existing functions or methods have been added.
    • Several methods and types that have long been deprecated have been removed, including the method Factory::getInstance().
  • Java

    • Several minor issues in the socket transport implementation have been fixed.
  • Common Lisp

    • The rsb:with-listener, rsb:with-reader, rsb:with-informer, rsb.patterns.request-reply:with-local-server and rsb.patterns.request-reply:with-remote-server macros have been replaced by rsb:with-active-participant and rsb:with-participant.
    • Similarly, the rsb:make-listener, rsb:make-reader, rsb:make-informer, rsb.patterns.request-reply:make-local-server and rsb.patterns.request-reply:make-remote-server functions have been replaced by rsb:make-participant.
  • Common Lisp Tools

    • All tools now use sub-command-based commandline syntax like git, svn and other modern commandline tools. The previous symbolic-link-based invocation will continue to work for a transition period. Example of the new syntax:

      rsb-toolscl0.12 logger --style monitor socket:
      
    • The Send and RPC Call tools now accept payloads specified using the Google protocol buffers debug text format.

    • A new experimental Web tool which serves information about an RSB system via HTTP has been added.

      Warning

      Experimental - use with care.

RSB 0.11

Note

Starting with this release, the request-reply communication pattern uses a new protocol. As a result, request-reply communication is not be possible between earlier versions and this version of RSB.

Note

Although never “officially” supported, the Python implementation previously allowed constructing participants by using the constructors of the respective classes. This is now explicitly unsupported. rsb.createListener() etc. have to be used instead.

This RSB release is available in the following forms:

  • Source archives
  • Pre-compiled self-installing archives or executable binaries
  • Debian packages for different Ubuntu GNU/Linux versions (currently C++ and Common Lisp implementations only)
  • Pypi packages for the Python implementation
  • Maven package for the Java implementation

These can be downloaded from the 0.11 jobs continuous integration server or repository server respectively. Installation instructions and links for downloading can be found in the RSB manual.

Changes

  • Introspection

    RSB now supports inspecting the participants, processes and hosts comprising a running system.

  • Specification

  • C++

    • Support for sending introspection information has been added as a plugin.
    • The build system now provides the CMake variable RSB_SYSTEM_PLUGIN_DIRECTORY for downstream projects.
    • New filter class rsb::filter::MethodFilter
    • New filter class rsb::filter::TypeFilter
    • Tools based on and examples for the C++ implementation now use the RSC functions rsc::misc::waitForSignal() and rsc::misc::lastArrivedSignal() to terminate with proper cleanup of RSB objects.
    • The entry names for the enum rsb::transport::Directions have been prefixed with DIRECTION_ in order to prevent clashes with preprocessor symbols.
    • It is now safe to maintain participants in static variables since all transports have been rewritten so that the unknown order of static destruction is not a problem anymore.
  • Java

    • Support for sending introspection information has been added as a package.
  • Python

    • Support for sending introspection information has been added as a package.
    • New filter class rsb.filter.MethodFilter
    • rsb.createServer() has been renamed to rsb.createLocalServer(). For backward compatibility, the former function has been retained as a deprecated alias for the latter.
  • Common Lisp

    • Support for sending introspection information has been added as part of the rsb-introspection system.
    • Support for receiving and aggregating introspection information has been added as part of the rsb-introspection system.
    • Participants can be created generically using the generic function make-participant which is backed by a service-provider protocol for registering, instantiating and inspecting kinds of participants.
    • Creation and state changes of participants can now be monitored via *make-participant-hook* and *participant-state-change-hook*.
    • The implementation of the Request-reply pattern has moved from package rsb.patterns to package rsb.patterns.request-reply.
  • Common Lisp Tools

    • The new Introspect tool collects and displays introspection information.
    • Some problems (e.g. starting the Logger with a scope option or without URI scheme) in the URI handling of the Common Lisp tools have been solved.
    • All column-based event formatting styles now compute (mostly) optimal column widths dynamically instead of choosing from a set of predefined layouts.
    • The timeline view of the Logger can now handle events whose timestamps lie in the past or future.
    • The timestamp used to construct the timeline view of the Logger is now configurable.
    • A new event formatting style monitor/timeline has been added.
    • Monitor and timeline views of the Logger now accept :sort-column COLUMN and :sort-reverse? BOOLEAN arguments.
    • Monitor and timeline views of the Logger can now remove entries after a configurable time of inactivity.
    • The Logger now accepts multiple URIs

As always, bugs, feature requests and enhancement proposals can be reported in the issue tracker.

Note

For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.org/versions/41.

RSB 0.10

Note

Starting with this release, Ubuntu GNU/Linux lucid is no longer officially supported. At least for C++, the CMake scripts will most likely not work.

This RSB release is available in the following forms:

  • Source archives
  • Pre-compiled self-installing archives or executable binaries
  • Debian packages for different Ubuntu GNU/Linux versions (currently C++ and Common Lisp implementations only)
  • Homebrew recipes
  • Pypi packages for the Python implementation
  • Maven package for the Java implementation

These can be downloaded from the 0.10 jobs continuous integration server or repository server respectively. Installation instructions and links for downloading can be found in the RSB manual.

Changes

  • C++
    • Special CMake -level support for finding custom installations of the Boost.UUID library has been dropped as this library is a standard part of Boost since some time now.
    • Incompatible API change: Moved EventQueuePushHandler and QueuePushHandler to util namespace
    • Improved logging, error messages and API for converter selection, configuration and registration
    • Converter registration is no longer necessary for the inprocess transport
    • Zip archive for Windows
  • Java
    • Added inprocess transport
    • Fixed implementation of sequence number generation
    • Some thread-safety and shutdown issues in the socket transport have been fixed
    • Default participant configuration is now available via getDefaulParticipantConfig
    • Updated internal Spread Java implementation to version 4.3. This still allows communication with all 4.x Spread daemons.
  • Python
    • Participants now support the context manager protocol (with statements)
    • The Configuration file at PREFIX/etc/rsb.conf is now processed
  • Common Lisp
    • Socket transport now listens on all interfaces in server mode
    • Socket transport now handles disconnected clients better while under load
    • Logging is now implemented using a more robust and more efficient implementation. The user-visible interface remains unchanged.
  • Tools
    • The Common Lisp implementation of the tools now comes with scripts for analyzing some timing-related aspects of system. These scripts can be used by the Logger as well as the RSBag tools.

As always, bugs, feature requests and enhancement proposals can be reported in the issue tracker.

Note

For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.org/versions/11.

RSB 0.9

Note

This RSB release is available in the following forms:

  • Source archives
  • Pre-compiled self-installing archives or executable binaries
  • Debian packages for different Ubuntu GNU/Linux versions
    • Starting with this release, the development version of RSB is packaged in the “testing” repository of our Debian repository server (as opposed to the “main” repository). So you need to add this repository to your apt sources list in case you want to install the development version via Debian packages.
  • Homebrew recipes and pypi packages
  • Maven package for rsb-java

These can be downloaded from the 0.9 jobs continuous integration server or repository server respectively. Installation instructions and links for downloading can be found in the RSB manual.

Changes

  • Integration of the new RSC plugin mechanism in the C++ implementation for transports and converters
  • Encapsulation of the spread transport into a separate plugin
  • Complete overhaul of the Java implementation to be in line with the remaining implementations
    • As a consequence, the public API has slightly changed, especially with respect to thrown exceptions
    • Implementation of the socket transport
  • Fixes in all implementations of the socket transport
  • The RPC API now supports some method signatures that did not work previously
  • Fixes for Windows compatibility
  • Documentation improvements

As always, bugs, feature requests and enhancement proposals can be reported in the issue tracker.

Note

For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.org/versions/12.

RSB 0.7

Note

This RSB release is available in the following forms:

  • Source archives
  • Pre-compiled self-installing archives or executable binaries
  • Debian packages for different Ubuntu GNU/Linux versions
  • Prototypical homebrew recipes and pypi packages (new)

These can be downloaded from the 0.7 jobs continuous integration server or repository server respectively. Installation instructions and links for downloading can be found in the RSB manual.

Changes

  • The TCP-socket transport is now fully implemented in C++, Python and Common Lisp and used by default there.
  • Error recovery, robustness and features of RSB
  • End-user documentation
  • Packaging and deployment
  • send tool

As always, bugs, feature requests and enhancement proposals can be reported in the issue tracker.

Note

For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.org/versions/22.

RSB 0.6

Note

RSB clients using the 0.6 version cannot generally communicate with clients using a previous RSB version.

This RSB release is available in the following forms:

  • Source archives
  • Pre-compiled self-installing archives or executable binaries
  • Debian packages for different Ubuntu GNU/Linux versions

These can be downloaded from the 0.6 jobs continuous integration server or repository server respectively.

As always, bugs, feature requests and enhancement proposals can be reported in the issue tracker.

General Changes

  • All core components have been relicensed to LGPLv3.
  • Sub-projects have been cleaned up.
  • Manuals have been created and can be accessed at http://docs.cor-lab.org/rsb-manual/0.6/html. For a list of all documentation, see http://docs.cor-lab.org.
  • RSB programs now process PREFIX/etc/rsb.conf if such a file exists.

Tools

  • The C++ logger now has a “monitor mode”
  • The C++ logger can now print event collections
  • The Common Lisp logger adjusts its display to the width of the containing terminal
  • The Common Lisp logger can now print event collections

Note

For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.org/projects/rsb/versions/25.

RSB 0.5

Note

  • RSB clients using the 0.5 version of RSB cannot generally communicate with clients using a previous RSB version.
  • The Spread transport is no longer active by default (see below).
  • The API is in some parts not backwards-compatible.

The development activities in this cycle focused primarily on API improvements and the integration of causal vectors. Moreover, complete compatibility for MSVC 2010 is now ensured and MacOS compatibility has been improved. In the process, about 60 issues have been created and subsequently resolved.

This RSB release is available in the following forms:

  • Source archives
  • Pre-compiled self-installing archives
  • Debian packages for different Ubuntu GNU/Linux versions (new)

These can be downloaded from the 0.5 jobs continuous integration server or repository server respectively.

As always, bugs, feature requests and enhancement proposals can be reported in the issue tracker.

General Changes

Network Protocol and Configuration

  • Causal vectors have been added to the network protocol. They allow to tag which event or events caused a given event.

  • The default transport configuration has been changed:

    • The inprocess transport is now enabled by default

    • The Spread transport is now disabled by default and has to be enabled explicitly when network communication is desired. This can e.g. be done by adding the user configuration file ~/.config/rsb.conf with the following content:

      [transport.spread]
      enabled = 1
      
      [transport.inprocess]
      enabled = 0
      

Tools

  • The C++ logger now displays causal vectors.
  • The Common Lisp logger now displays causal vectors.
  • The Common Lisp logger now displays configurable statistics.
  • The Common Lisp logger now allows configuring the columns in the “compact” formatting style.
  • The call tool for performing RPCs from the commandline has been added.

C++

  • Support for causal vectors has been added.
  • The client API for creation and configuration of participants and events has been simplified.
  • Convenience functions for participant creation without the factory have been added. (Suggested by: Robert Haschke)
  • OriginFilter has been added.
  • Compilation time has been reduced. (Suggested by: Matthias Rolf)
  • A name-clash with a Qt macro has been resolved (Reported by: Matthias Rolf)
  • Event dispatching now allows multiple threading strategies.
  • Performance Improvements * Caching of Spread group names * <-comparison of EventId s

Java

  • Support for causal vectors has been added.
  • OriginFilter has been added.

Python

  • Support for causal vectors has been added.
  • OriginFilter has been added.

Common Lisp

Note

For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.org/projects/rsb/versions/21.

RSB 0.4

Note

RSB clients using the 0.4 version of RSB cannot communicate with clients using a previous RSB version.

The development activities in this cycle focused primarily on extending and optimizing the wire format and improving the usability of and support for protocol buffer message objects as event payloads. In the process, more than 30 issues have been created and subsequently resolved.

As always, bugs, feature requests and enhancement proposals can be reported in the issue tracker.

Network Protocol for Spread-based Communication

  • The eagerly computed, mandatory unique id field of events is now lazily computed from a static id and a sequence number. Events can be transmitted without computing the id. This change saves 12 bytes in each notification sent over the wire. (Thanks: Stefan Herbrechtsmeier)
  • Incompatible wire format versions can now be detected by means of a trick which does not incur any runtime overhead in space or time. This enabled removal of the version field in notifications, saving four bytes in each notification sent over the wire.
  • The method field of events is now fully specified and used in request/reply communication.

C++

  • In addition to blocking request/reply invocation, a future-based asynchronous interface is now available.
  • Several performance problems related to scope and event construction have been fixed. (Thanks: Matthias Rolf, Arne Nordmann)

Java

  • Request/reply communication with blocking and asynchronous invocation modes has been implemented.
  • A converter registration and selection mechanism and a generic converter for Google protocol buffers data holder classes have been added.

Python

  • Request/reply communication with blocking and asynchronous invocation modes has been implemented.
  • A converter for Google protocol buffers data holder classes has been added.

Common Lisp

  • Request/reply communication with blocking and asynchronous invocation modes has been implemented.

Note

For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.org/projects/rsb/versions/17.