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
.