external-1.3.0: - Updated to json-spirit-4.08d (updated use of placeholders with boost::bind) MIRAenvironment-1.9.0: - Added compiler definition representing content of environment variable MIRA_PATH (enable removing install paths from file info at compile time) - Added -DBOOST_ALLOW_DEPRECATED_HEADERS, reduce compile warnings from boost internal inconsistencies - Added option REGISTER_LEGACY_SERIALIZERS to make/GlobalConfig.cmake (see MIRABase) - Extended documentation of MIRA_EXTERNAL_DIR variable - Added option WITHOUT_GUI to build MIRA without all GUI components and tools - Added support for systems which use libproc2 instead of libprocps MIRABase-1.20.0: - XMLDeserializer checks matching / counts when deserializing a map (detect missing ) - fixed possible int overflow in printProgressBar() - fixed cleanup of PolymorphicPointerReflectorRegistrar at singleton destruction (= program end) - fixed heap overflow bug in RPCBackendAdapter - fixed copying of RasterTransformation - fixed syntax error in MIRA_THROW_NOSTACK - replaced boost mpl with if constexpr - fixed memory leaks in SQLiteDB.C, AESFilter.C and in some tests - renamed Exception::getCallStack() to createCallStack() - added constexpr variants of findContainingMIRAPath()/chopMIRAPath() - MIRA installation paths are removed from file info at compile time in exceptions and log macro output - fixed extractPaths(): ignore empty path instead of resolving to current working directory - added specialization for XML (de)serialization for std::variant - fixed error reporting when deserializing invalid JSON (e.g. string/number mismatch) - MIRA_CLASS_SERIALIZATION does not register to legacy format serializers anymore, significantly reducing compile time + build size (can be controlled through cmake option REGISTER_LEGACY_SERIALIZERS) - fixed use after free bug in remote connection RPC - mira::Point default constructors initialize to zeros - added human-readable serialization for Time, Date and Duration: classes TimeSerializedAsIsoString/TimeSerializedAsYMDHMS, DateSerializedAsIsoString/DateSerializedAsYMD, DurationSerializedAsIsoString/DurationSerializedAsHMS, functions humanReadableGetter/Setter/Accessor(Time/Date/Duration) - constructors Time(Base t) / Duration(Base d) changed to take params by const reference, in order to avoid ambiguity when converting const objects. - PolymorphicPointerReflectorRegistrar::getPolymorphicPointerReflector() throws a more specific exception in error case, preventing confusion with errors during subsequent object deserialization MIRAFramework-1.18.0: - TapeRecorder: - added new flags to TapeRecorderConfig: - automatically add timestamp to filename - automatically add all transformation channels to recording - when combining interval and avoidDataLoss for a channel, the interval also applies to data already on the channel when recording starts (instead of recording ALL existing slots) - added option to warn if missed channel updates are detected - TapePlayerUnit/TapeRecorderUnit: fixed mixup of RPC methods for stopping playback vs. implementation of base class stopping interface - TapeRecorderUnit: - use case automatic recording of configured channels has been moved to new AutoTapeRecorderUnit - file parameter for record() changed from std::string to boost::path - AutoTapeRecorderUnit output file location can be controlled through a channel - warning for missed channel updates can be enabled by a property - added Channel type auto promotions: Rect2i/f/d, Box3i/f/d - added Framework RPC 'createChannel(name, type)' for ad-hoc creation of channels - Tape::repair() optionally displays progress info - extended ChannelManager::write() with optional parameters frameID/sequenceID, and provided mechanism to assign them based on previous channel data - added ChannelManager RPCs 'write(channelID, value)', 'write(channelID, value, frameID)', defaulting timestamp to Time::now() - fixed syntax error in FrameworkTransformer::publishTransformIndirect() - added DispatcherThread::hasWork() and Authority::hasWork() - fixed include order of source files to include the framework header before adding framework dependent header - fixed exception in ServiceCall::waitForServiceCall() when the service unregisters - fixed FrameworkTransformer::getTransform3() (= Framework RPC method 'getTransform3') calculating the (unused) covariance - fixed segfault on RemoteConnection disconnect - FrameworkGraph does not leak its mutex through its interface anymore, was changed to be neither movable nor copyable GUIFramework-1.14.0: - TapePlayerWidget: fixed math error when tape length is < 1s GUIRichClientPlatform-1.14.0: - no changes in GUIRichClientPlatform GUIViews-1.14.0: - no changes in GUIViews GUIVisualization-1.14.0: - GridObject: extended to have independent number of grid rows/columns - writing to a channel through TextView formally publishes the channel GUIWidgets-1.14.0: - no changes in GUIWidgets MIRACenter-1.12.0: - fixed 'miracenter --initial-workspace' overwriting the initial workspace file - error handling on workspace loading also applies when loading the workspace through GUI menu - adapted FrameworkGraphView to changes in FrameworkGraph MIRAtape-1.3.5: - miratape repair displays progress info MIRAWizard-1.2.0: - updated some templates and added template for README.md - removed unused templates CommonVisualization-1.5.0: - 3d GroundPlane visualization has independent number of rows/columns - added 3d GridPlane visualization, like GroundPlane with arbitrary pose Navigation-1.4.0: - RotateTask: members angle and speed are serialized as float (in degrees) (fixing an error introduced in 1.2.0, breaking serialization compatibility again) PlotVisualization-1.6.2: - Events visualization also adds a legend entry