What’s New in Karabo 1.5

This chapter explains the changes in Karabo 1.5 with respect to the 1.4 releases.

Shell Environment Changes

The ~/.karabo directory is no longer being relied up for locating the currently installed Karabo framework. Instead, an activation script is created when building or installing Karabo which makes necessary modifications to the shell environment so that Karabo can run.

Data Logging

The raw files that log all configuration changes of a device have slightly changed their format. The timestamp is now only given twice: Once in a human readable format (20160322T132225.584706Z) and once counting the seconds of the Unix epoch in double precision (1458652945.584706). Before, the Unix epoch was also given as two integer numbers, one for the seconds, one counting the fractions of a second in attoseconds. But old files can still be read by the reading mechanism.

More important, the default location of the karaboHistory directory has changed. In 1.4 and before this directory was placed inside the directory of the data logger server, i.e. usually at karaboRun/servers/dataLoggerServer/karaboHistory. The new default is one directory up, i.e. usually karaboRun/servers/karaboHistory. This change will make it much easier to change the number of data logger servers in an existing system should that be required to improve the performance.

API Backward Incompatibilities

erase(key) and eraseFound(key) of Hash and OrderedMap

The method erase does not anymore throw an exception if given a non-existing key. Instead, a return value indicates whether something has been removed or not. Since that was exactly the behaviour of eraseFound(key) before, that method has been removed.

connect and disconnect of SignalSlotable

These public methods have slightly changed their signatures, i.e. they lost their last two arguments (connectionType and isVerbose). These anyway had default values and besides some printout using cout they had no effect. Since there is no distinction between connections that are Tracked, Not tracked or even to be Reconnected has gone, SignalSlotable’s methods connectT, connectN and connectR and its enum ConnectionType have been removed as well.

Python API Modules

All imports from Python device and macro code must use the new API modules: karabo.bound and karabo.middlelayer. Imports from other modules in the karabo package are not recommended and will likely break in the future. Names in the API modules are intended to be stable over time and any breaking changes will first cause a DeprecationWarning for one or more releases and only later stop working.

Unify global and local slots in C++ and Python API1

There is only one type of slots left, as in Python API 2. They can be called globally or specifically, i.e. using either '*' or the target’s instance ID, respectively. If a C++ device used the macro KARABO_GLOBAL_SLOT to register a global slot, it has to be changed to use KARABO_SLOT.