All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog
9.3.3 - 2019-03-29
- Add asyn_reconnection test (#502)
- Add .gitignore (#522)
- Add Visual Studio 2017 compatibility. Appveyor now builds for Visual Studio 2017 in addition to all the previously supported versions (#533)
- Replace CORBA::string_dup calls with Tango::string_dup (#474)
- Replace CORBA::string_free calls with Tango::string_free (#539)
- Make it possible to remove dynamic attributes from delete_device() by moving the location where the device is removed from the device list (#518)
- Use python2 (if available) to run cxxtestgen (#523)
- Switch to Travis Xenial infrastructure (#516)
- Catch exceptions from unsubscribe_event() in DeviceProxy destructor (#521)
- Improve install documentation (#529)
- Install log4tango include files under <install_prefix>/include/tango/log4tango (#517)
- Update Doxygen documentation (#532, #544)
- Update Debian 7 and Debian 8 Travis Docker files after Debian Wheezy end of life and jessie-updates removal (#546, #549)
- Fix memory leak in get_device_property() on Windows when code compiled with Visual Studio 10 or older (#439, #488)
- Fix cxx_fwd_att occasional failure (#384, #428, #493)
- Fix "Change event subscription blind to change events right after device server restart" issue (#359, #503). This bug fix may trigger the reception of 2 consecutive events having possibly the same attribute value (but different timestamps) during the Device Server startup phase.
- Fix client crash in case of asynchronous write_attribute executed immediately after reconnection (#502)
- Fix issue with dynamic attributes when a device is restarted on a device server exporting several devices which are creating dynamic attributes (#458, #508)
- Fix uncaught DevFailed exception in DeviceProxy destructor in cxx_stateless_subscription test case when using ZMQ 4.2.3 (#514). Since zeromq/libzmq@edb4ca1, peer disconnection triggers zmq_disconnect on a zmq socket. Further zmq_disconnect calls for such socket and endpoint will fail with errno set to ENOENT. The patch provided in #520 ignores such failure.
- Fixed a broken dependency on generated Debian package (5c74e8d)
- Fix appveyor.yml after appveyor windows image update (#537)
- Fix event compatibility issues with device servers exporting Device_4 devices. Fix bug with Pipe, Data Ready and Device Interface Change events. Fix event channel name issues in these different cases. (#492, #531)
- Fix WAttribute::rollback() for DevUshort WRITE attributes (#541, #542)
9.3.2 - 2018-09-12 [unstable]
- Tests: Split runner executable into several executables (#275, #476).
- Doxygen: upgrade to doxygen 1.8.13
- Disable log4tango benchmark tests.
- Fix memory leak in zmq_event_subscription_change() (#457, #460)
- Fix bug impacting device servers using dynamic attributes (#458, #459)
- Fix reconnection issues when a client subscribes to several events (#455)
- Fix some event compatibility issues with device server <= Tango 8 (#456)
- Fix event field in EventData structure passed to user's callback (broken in Tango 9.3.0 and 9.3.1)
- Fix attribute name in EventData structure passed to user's callback for Attribute Config events
- Fix a bug occurring when an event is pushed at the same time as an event (re)subscription occurs (#484, #485)
- Fix event name (EventData.event) passed to client's Callback after Tango 9 attribute reconnection (#486)
- Fix some doxygen warnings
9.3.1 - 2018-05-23 [unstable]
- Add -pedantic for GCC/Clang and debug mode (#441). This change can generate errors with very old compilers (e.g. gcc 3.4.6) when compiling the lib debug version. Please remove manually -pedantic flag in configure/CMakeLists.txt if you need to compile the debug version on a very old compiler.
- Generate static library (#17)
- DServerSignal: Include errno header instead of trying to manually get the declaration right (#441)
- Remove GNU_CXX definition for GCC/Clang (#441)
- filedatabase.cpp: Remove stray semicolon (#441)
- FileDatabase: Use correct format specifier for unsigned arguments to sscanf (#441)
- EventConsumer::connect_event: Fix misleading indentation (#441)
- PollThread: Fix multiline macro definitions (#451)
- Fix compilation definitions (#437)
- Replace asserts in EventConsumer::initialize_received_from_admin with exceptions (#453)
9.3.0 - 2018-05-04 [unstable]
- Fix FQDN events (#423, #315)
Limitations:
- in case DeviceProxy is used for event subscription, client will get incorrect value in the event callback if short domain name is used in env.TANGO_HOST e.g. hzgc103 -> hzgc103.desy.de
- Fix memory leak when pipe event is sent and there is no client (#447,#448)
- Set the ZMQ Receive Buffer High Water Mark only if it changes (#444,#445) to reduce the impact of a bug in ZMQ 4.2.0 and ZMQ 4.2.1 which was fixed in commit zeromq/libzmq@edc770d.
9.2.8 - 2018-03-29 [unstable]
- Cmake release targets (#438)
- Install include files in <install_prefix>/include/tango directory instead of <install_prefix>/include.
- Fix appveyor build
9.2.7 - 2018-02-27 [unstable]
- Use CMake
- Set CMake minimum requirement to CMake 2.8.12 (#422)
- Add DevVarBooleanArray operators (#347)
- Add support for NaN and inf in device properties (#360, #362, #371)
- Refactor DeviceAttribute code (#394). DeviceAttribute::init_common_class_members() method is now private
- Forwarded dynamic attributes (#342)
- Build on Windows using CMake and setup appveyor CI (#413)
- Enable Travis CI (#375, #417, #418, #419)
- tango_config.h: Add clang detection (#442)
- Doxygen: Add searchbar (#432)
-
DeviceAttribute::get_type() no longer throws an API_EmptyDeviceAttribute exception when the DeviceAttribute is empty. It returns DATA_TYPE_UNKNOWN instead (#393, #509).
Warning! This change could lead to Segmentation fault in code doing things like:
DeviceAttribute da;
da = device->read_attribute("AnAttributeWithINVALIDQualityFactor");
cout << "Type = " << Tango::CmdArgTypeName[da.get_type()] << endl;
Please refer to #510 for more details.
- Improve ZmqEventSubscriptionChange command argin and argout descriptions (355da96)
- Generate files from IDL (add a dependency to tango-idl repository. omniidl is required to be able to generate some files from CORBA IDL)
- Get exception message from event callback (#431)
- Add a map in MultiAttribute object to improve performances (#424, #430)
- A small Doxygen improvement - take version from cmake (#436)
- Reduce event subscription sleeps on linux (#415).
Warning: There is no guarantee that after a successful call to subscribe_event() that a subscriber will receive all the events it is interested in. In some situations, some important events might be missed if they occur between the subscribe_event() call and the ZMQ subscription reception on the ZMQ publisher side, potentially leading to situations where a client application might show out of date/incorrect values.
- Remove zmq.hpp (#266, #421). Add a dependency to https://github.com/zeromq/cppzmq
- Add missing event implementation with _TG_WINDOWS_ ifdef (#349)
- Fix TangoTickets#3 (Events received with UNKNOWN data format and without values when subscribing from a Tango 9 client to a Tango 7 server DevShort attribute)
- Fix bug related to heartbeat endpoints which could eventually occur when the device server runs on a host with multiple network interfaces (36aca17)
- Fix bug after admin device RestartServer command (#358)
- Fix bug in Attribute::get_att_device_class() (4a00c8e)
- Fix RcsId warnings (#374)
- Fix warnings reported by gcc 6.3 related to misleading indentations (#376)
- Fix "unused parameter" warnings (#379)
- Fix shift-negative-value compilation warnings reported by g++ 6.3 (#383)
- Fix DeviceAttribute constructor for short and enum data types (#392, #393)
- Fix bug leading occasionally to segmentation faults of Tango 9 device servers (#398)
- Fix bug in event name when pushing an error event to IDL5 clients (#400)
- Attribute: Don't treat an integer as an char* (#403, #406)
- pointer-cast-size-mismatch attrgetsetprop.cpp:200 (#339, #406)
- Fix build errors when using C++17 (#405, #425)
- Fix issue with polling not starting automatically on dynamic attributes (#427)
- Add noreturn to remove some compilation warnings (#435)
- CPU load when device has large number of attributes (#404)
- push event performance issue (#244)