News¶
RSB 0.18¶
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.18 jobs continuous integration server or repository server respectively. Installation instructions and links for downloading can be found in the RSB manual.
As always, bugs, feature requests and enhancement proposals can be reported as issues in the appropriate project of our github organization.
Changes
C++
Python
A single Spread connection is now shared between all participants.
Common Lisp
A single Spread connection is now shared between all participants.
Note
For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.de/versions/75.
RSB 0.17¶
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.17 jobs continuous integration server or repository server respectively. Installation instructions and links for downloading can be found in the RSB manual.
As always, bugs, feature requests and enhancement proposals can be reported as issues in the appropriate project of our github organization.
Changes
Java
Participants now implement the Closeable interface.
Common Lisp
Python
Synchronous RPCs now accept a
timeoutkeyword argument.
Note
For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.de/versions/74.
RSB 0.16¶
Note
This RSB release is only available in source code form from the repository server.
We no longer accept bug reports against this RSB version.
Changes
Python
Common Lisp
Common Lisp Tools
Note
For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.de/versions/58.
RSB 0.15¶
Note
This RSB release is only available in source code form from the repository server.
We no longer accept bug reports against this RSB version.
Changes
All implementations
A new filter which discriminates events based on causal vectors has been added.
Configuration debugging using
RSB_CONFIG_DEBUGis now supported in all implementations.The environment variable
RSB_CONFIG_FILEScan be used to make RSB attempt to load a non-default cascade of configuration files.Converters for the scope data type are now available in all implementations.
C++
Converters for integer values are now provided by the generic
rsb::converter::IntegerConverter.A few C++11 incompatibilities have been resolved.
Common Lisp Tools
Note
For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.de/versions/56.
RSB 0.14¶
Note
This RSB release is only available in source code form from the repository server.
We no longer accept bug reports against this RSB version.
Changes
C++
Converters for
floatanddoublevalues have been added and are registered by default.Setting the environment variable
__CONFIG_DEBUGto an arbitrary value enables configuration debugging. Debug output is written tostderr.
Java
Spread connections can now be shared between listeners (for informers, this has been possible since RSB 0.12), which reduces the number of open connections to the Spread daemon.
A converter for
Floatvalues has been added and is registered by default.Timestamps are now generated with millisecond accuracy and precision on Linux and Mac by using native system calls if possible. Other platforms should not be broken by this and fall back to millisecond precision. Due to this change, the Java implementation has new dependencies now.
Common Lisp
Filters are now more efficient.
Common Lisp Tools
All Tools can now load data type definitions on demand, lessening the pain of having to up-front specify and load all required definitions (See
--on-demand-idl-loading).The bridge tool now converts payloads iff required by a filter or transform, limiting the need to load data type definitions to situations in which they are actually needed.
The logger tool now accepts the
--stop-afteroption, causing it to terminate after processing a specified number of events.An event formatting style
multiple-filesfor writing output into an individual file for each event has been added.The new server tool can act as a standalone RSB socket transport server.
Note
For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.de/versions/51.
RSB 0.13¶
Note
This RSB release is only available in source code form from the repository server.
We no longer accept bug reports against this RSB version.
Changes
RSB now has an official logo.
All languages
The APIs of the different language implementations have been unified. Please refer to the different language-specific sections and issue 2222 for details.
Manual
The API documentation links have been moved from the sidebar to a new item on the start page of the manual along with the direct inclusion of the Python API documentation in this manual.
C++
The API has been adapted to match other implementations:
Event::{get,set}EventIdhas been renamed to{get,set}Id. The previously existing and long time deprecated methodgetIdhas been removed during this process.Event::getSequenceNumberhas been deprecated in favor of the respective method on anEventIdinstance.MetaData::{get,set}SenderIdhave been deprecated in favor of using thegetParticipantIdmethod on anEventIdinstance.
RSB C++ will now throw an exception in case a requested plugin cannot be found (issue #2487).
The options
plugins.cpp.pathandplugins.cpp.loadbehave more consistently and allow inheriting values from the next more generic configuration source.
Python
The API documentation is now included in this manual.
Java
The Maven repository server RSB java is deployed to has moved. You need to update your downstream projects accordingly to receive new versions of this project. Instructions can be found at the installation instructions.
The ant build system of RSB java has been dropped and the project has been converted to a proper Maven project using the standard file system layout conventions etc. Ant users can still use the project by including the Maven-generated jar files. Also, the convenient zip archive containing the RSB java jar as well as the required upstream dependencies still exists. Please refer to the installation instructions for further information and updated URLs resulting from this change.
The filter API has been refactored to match the API of the other language implementations. While
AbstractFilterstill provides the old API for client code, it has been deprecated in favor of directly implementing the much simplifiedFilterinterface. Client code has to be updated.InterruptedExceptions are now handled correctly (i.e. not swallowed) and properly exposed to callers, who are the ones who need to handle them. This changes the API slightly.RemoteServerexposes the standardjava.util.concurrent.Futureinterface instead of a custom implementation class. This ensures compatibility with standard interfaces, prevents accidental exception hiding (as happened withInterruptedException) and prevents clients from illegally completing aFutureinstance. As a consequence, thegetmethod with just alongvalue as a timeout in milliseconds is not available anymore (that signature is not part of the standardFutureinterface). Always supplying an explicitTimeUnitmakes things much clearer, anyway. This changes the API in an incompatible way and client code needs to be updated.InvalidStateExceptionhas been removed and replaced withIllegalStateException. The documented behavior was to throwIllegalStateExceptionanyway inActivatable. Please update your exception handlers in case you previously handledInvalidStateException.The RPC
CallbackAPI has been changed to only allow throwingExceptioninstances and not everyThrowable. This ensures that important things like out of memory errors are not caught uncontrollably by the framework. You probably only have to change the callbackinvokemethod declarations tothrows Exception.The
Informer#sendmethods have been renamed topublishto match other implementations. The old names still exist for some time with a deprecation warning before they will be removed.
Common Lisp
The
rsb.patternspackage now provides a protocol for creating and managing child participants in composite participants.When acting as server, the socket transport can now choose an unused port automatically if port number 0 is specified. The obtained port can be written to output streams or a file:
socket://localhost:0?server=1&portfile=-
Common Lisp Tools
Symbolic-link-based invocation and selection of sub-commands is no longer supported.
The default formatting style of the logger is now “monitor” instead of “compact”.
Scope payloads are now printed properly as well as accepted by the call and send tools.
The logger and introspect tools use a human-readable, compact format similar to UNIX tools for numeric output like counts, sizes and durations.
The scope-based monitor event formatting style of the logger now arranges scopes in a tree of adjustable maximum depth by default, allowing more compact display and therefore handling of larger systems.
An event formatting style that outputs JSON data has been added.
A bridge tool for forwarding of events between RSB buses has been implemented.
The Send and Call tools can now read payloads specifications in the Google protocol buffers debug text format from files.
Note
For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.de/versions/47.
RSB 0.12¶
Note
This RSB release is only available in source code form from the repository server.
We no longer accept bug reports against this RSB version.
Changes
Specification
A “display name” field has been added to the introspection protocol and a corresponding configuration option
introspection.displaynamehas 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
Spread connections are now shared between informers, which reduces the number of open connections to the Spread daemon.
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::Callbackimplementations 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-serverandrsb.patterns.request-reply:with-remote-servermacros have been replaced byrsb:with-active-participantandrsb:with-participant.Similarly, the
rsb:make-listener,rsb:make-reader,rsb:make-informer,rsb.patterns.request-reply:make-local-serverandrsb.patterns.request-reply:make-remote-serverfunctions have been replaced byrsb:make-participant.
Common Lisp Tools
All tools now use a 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 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.
Note
For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.de/versions/42.
RSB 0.11¶
Note
This RSB release is only available in source code form from the repository server.
We no longer accept bug reports against this RSB version.
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.
Changes
-
RSB now supports inspecting the participants, processes and hosts comprising a running system.
Specification
subscopes of
/__rsb/are now reserved for implementation purposes. The Logger will not display events on these scopes by default.An introspection protocol which works in terms of ordinary RSB events has been added.
Request-reply communication pattern
The
requestandreplycomponents have been removed from the scopes of participants implementing the communication protocol.
C++
Support for sending introspection information has been added as a plugin.
The build system now provides the CMake variable
RSB_SYSTEM_PLUGIN_DIRECTORYfor downstream projects.New filter class
rsb::filter::MethodFilterNew filter class
rsb::filter::TypeFilterTools based on and examples for the C++ implementation now use the RSC functions
rsc::misc::waitForSignal()andrsc::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.MethodFilterrsb.createServer()has been renamed torsb.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-introspectionsystem.Support for receiving and aggregating introspection information has been added as part of the
rsb-introspectionsystem.Participants can be created generically using the generic function
make-participantwhich 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.patternsto packagersb.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/timelinehas been added.Monitor and timeline views of the Logger now accept
:sort-column COLUMNand:sort-reverse? BOOLEANarguments.Monitor and timeline views of the Logger can now remove entries after a configurable time of inactivity.
The Logger now accepts multiple URIs
Note
For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.de/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.
Note
This RSB release is only available in source code form from the repository server.
We no longer accept bug reports against this RSB version.
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
EventQueuePushHandlerandQueuePushHandlertoutilnamespaceImproved 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
getDefaulParticipantConfigUpdated 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 (
withstatements)The configuration file at
PREFIX/etc/rsb.confis now processed
Common Lisp
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.
Note
For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.de/versions/11.
RSB 0.9¶
Note
In the C++ implementation, the Spread transport is now implemented as a plugin. In case of problems, see Spread Does not Work.
Note
This RSB release is only available in source code form from the repository server.
We no longer accept bug reports against this RSB version.
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
The RPC API now supports some method signatures that did not work previously
Fixes for Windows compatibility
Documentation improvements
Note
For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.de/versions/12.
RSB 0.7¶
Note
Only the TCP-socket transport is now enabled by default.
For transport configuration issues see Troubleshooting.
RSB and related projects are now maintained in git repositories. See https://code.cor-lab.de/news/21 for more information.
Note
This RSB release is only available in source code form from the repository server.
We no longer accept bug reports against this RSB version.
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
Note
For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.de/versions/22.
RSB 0.6¶
Note
RSB clients using the 0.6 version cannot generally communicate with clients using a previous RSB version.
Note
This RSB release is only available in source code form from the repository server.
We no longer accept bug reports against this RSB version.
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 https://docs.cor-lab.org/rsb-manual/0.6/html. For a list of all documentation, see https://docs.cor-lab.org.
RSB programs now process
PREFIX/etc/rsb.confif such a file exists.
Tools
The C++ logger now has a “monitor mode”
The Common Lisp logger adjusts its display to the width of the containing terminal
Note
For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.de/projects/rsb/versions/25.
RSB 0.5¶
Note
Note
This RSB release is only available in source code form from the repository server.
We no longer accept bug reports against this RSB version.
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.
General Changes
A tutorial is now included in the RSB source tree: “0.5” branch of https://github.com/open-rsx/rsb-tutorials
Several introductory talks are now included in the RSB source tree: “0.5” branch of https://github.com/open-rsx/rsb-talks
“RSB-related build jobs”:https://ci.cor-lab.de/view/rsb-0.5 on the continuous integration sever have been reorganized.
Simple benchmarking tools are available in the
rsbenchproject.The
#rsbIRC channel on the freenode network can now be used for additional support and discussion.Installation instructions have been improved.
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.confwith 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)
OriginFilterhas 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 ofEventIds
Java
Support for causal vectors has been added.
OriginFilterhas been added.
Python
Support for causal vectors has been added.
OriginFilterhas been added.
Common Lisp
Support for causal vectors has been added.
Note
For a more detailed list of fixed bugs, added features and other enhancements, see https://code.cor-lab.de/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.
Note
This RSB release is only available in source code form from the repository server.
We no longer accept bug reports against this 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.
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
versionfield 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.de/projects/rsb/versions/17.