|
| 1 | +# Changelog |
| 2 | +All notable changes to this project will be documented in this file. |
| 3 | + |
| 4 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) |
| 5 | + |
| 6 | +## [9.3.3] - 2019-03-29 |
| 7 | +### Added |
| 8 | +- Add asyn_reconnection test ([#502][pr-502]) |
| 9 | +- Add .gitignore ([#522][pr-522]) |
| 10 | +- Add Visual Studio 2017 compatibility. Appveyor now builds for Visual Studio 2017 in addition to all the previously |
| 11 | +supported versions ([#533][pr-533]) |
| 12 | + |
| 13 | +### Changed |
| 14 | +- Replace CORBA::string_dup calls with Tango::string_dup ([#474][pr-474]) |
| 15 | +- Replace CORBA::string_free calls with Tango::string_free ([#539][pr-539]) |
| 16 | +- Make it possible to remove dynamic attributes from delete_device() by moving the location where the device is removed |
| 17 | +from the device list ([#518][pr-518]) |
| 18 | +- Use python2 (if available) to run cxxtestgen ([#523][pr-523]) |
| 19 | +- Switch to Travis Xenial infrastructure ([#516][pr-516]) |
| 20 | +- Catch exceptions from unsubscribe_event() in DeviceProxy destructor ([#521][pr-521]) |
| 21 | +- Improve install documentation ([#529][pr-529]) |
| 22 | +- Install log4tango include files under *<install_prefix>*/include/tango/log4tango ([#517][pr-517]) |
| 23 | +- Update Doxygen documentation ([#532][i-532], [#544][pr-544]) |
| 24 | +- Update Debian 7 and Debian 8 Travis Docker files after Debian Wheezy end of life and jessie-updates removal |
| 25 | + ([#546][i-546], [#549][pr-549]) |
| 26 | + |
| 27 | +### Fixed |
| 28 | +- Fix memory leak in get_device_property() on Windows when code compiled with Visual Studio 10 or older |
| 29 | +([#439][i-439], [#488][pr-488]) |
| 30 | +- Fix cxx_fwd_att occasional failure ([#384][i-384], [#428][i-428], [#493][pr-493]) |
| 31 | +- Fix "Change event subscription blind to change events right after device server restart" issue |
| 32 | +([#359][i-359], [#503][pr-503]). |
| 33 | +**This bug fix may trigger the reception of 2 consecutive events having possibly the same attribute value |
| 34 | +(but different timestamps) during the Device Server startup phase.** |
| 35 | +- Fix client crash in case of asynchronous write_attribute executed immediately after reconnection ([#502][pr-502]) |
| 36 | +- Fix issue with dynamic attributes when a device is restarted on a device server exporting several devices which are |
| 37 | +creating dynamic attributes ([#458][i-458], [#508][pr-508]) |
| 38 | +- Fix uncaught DevFailed exception in DeviceProxy destructor in cxx_stateless_subscription test case when using |
| 39 | +ZMQ 4.2.3 ([#514][i-514]). Since [zeromq/libzmq@edb4ca1][libzmq-c-edb4ca1], peer disconnection triggers zmq_disconnect |
| 40 | +on a zmq socket. |
| 41 | +Further zmq_disconnect calls for such socket and endpoint will fail with errno set to ENOENT. |
| 42 | +The patch provided in [#520][pr-520] ignores such failure. |
| 43 | +- Fixed a broken dependency on generated Debian package ([5c74e8d][c-5c74e8d]) |
| 44 | +- Fix appveyor.yml after appveyor windows image update ([#537][pr-537]) |
| 45 | +- Fix event compatibility issues with device servers exporting Device_4 devices. Fix bug with Pipe, Data Ready and |
| 46 | +Device Interface Change events. Fix event channel name issues in these different cases. ([#492][i-492], [#531][pr-531]) |
| 47 | +- Fix WAttribute::rollback() for DevUshort WRITE attributes ([#541][i-541], [#542][pr-542]) |
| 48 | + |
| 49 | +## [9.3.2] - 2018-09-12 [unstable] |
| 50 | +### Added |
| 51 | +- Add Tango::string_free ([#460][pr-460]) |
| 52 | +- Integrate Coveralls and Sonar ([#369][i-369], [#478][pr-478]) |
| 53 | + |
| 54 | +### Changed |
| 55 | +- Tests: Split runner executable into several executables ([#275][i-275], [#476][pr-476]). |
| 56 | +- Doxygen: upgrade to doxygen 1.8.13 |
| 57 | + |
| 58 | +## Removed |
| 59 | +- Disable log4tango benchmark tests. |
| 60 | + |
| 61 | +### Fixed |
| 62 | +- Fix memory leak in zmq_event_subscription_change() ([#457][i-457], [#460][pr-460]) |
| 63 | +- Fix bug impacting device servers using dynamic attributes ([#458][i-458], [#459][pr-459]) |
| 64 | +- Fix reconnection issues when a client subscribes to several events ([#455][i-455]) |
| 65 | +- Fix some event compatibility issues with device server <= Tango 8 ([#456][i-456]) |
| 66 | +- Fix event field in EventData structure passed to user's callback (broken in Tango 9.3.0 and 9.3.1) |
| 67 | +- Fix attribute name in EventData structure passed to user's callback for Attribute Config events |
| 68 | +- Fix a bug occurring when an event is pushed at the same time as an event (re)subscription occurs |
| 69 | +([#484][i-484], [#485][pr-485]) |
| 70 | +- Fix event name (EventData.event) passed to client's Callback after Tango 9 attribute reconnection ([#486][pr-486]) |
| 71 | +- Fix some doxygen warnings |
| 72 | + |
| 73 | +## [9.3.1] - 2018-05-23 [unstable] |
| 74 | +### Changed |
| 75 | +- Add -pedantic for GCC/Clang and debug mode ([#441][pr-441]). **This change can generate |
| 76 | + errors with very old compilers (e.g. gcc 3.4.6) when compiling the lib debug |
| 77 | + version.** Please remove manually -pedantic flag in configure/CMakeLists.txt if |
| 78 | + you need to compile the debug version on a very old compiler. |
| 79 | +- Generate static library ([#17][i-17]) |
| 80 | + |
| 81 | +### Fixed |
| 82 | +- DServerSignal: Include errno header instead of trying to manually get the declaration right ([#441][pr-441]) |
| 83 | +- Remove GNU_CXX definition for GCC/Clang ([#441][pr-441]) |
| 84 | +- filedatabase.cpp: Remove stray semicolon ([#441][pr-441]) |
| 85 | +- FileDatabase: Use correct format specifier for unsigned arguments to sscanf ([#441][pr-441]) |
| 86 | +- EventConsumer::connect_event: Fix misleading indentation ([#441][pr-441]) |
| 87 | +- PollThread: Fix multiline macro definitions ([#451][pr-451]) |
| 88 | +- Fix compilation definitions ([#437][pr-437]) |
| 89 | +- Replace asserts in EventConsumer::initialize_received_from_admin with exceptions ([#453][i-453]) |
| 90 | + |
| 91 | +## [9.3.0] - 2018-05-04 [unstable] |
| 92 | +### Fixed |
| 93 | +- Fix FQDN events ([#423][pr-423], [#315][i-315]) |
| 94 | + Limitations: |
| 95 | + - in case DeviceProxy is used for event subscription, client will get incorrect value |
| 96 | + in the event callback if short domain name is used in env.TANGO_HOST |
| 97 | + e.g. hzgc103 -> hzgc103.desy.de |
| 98 | +- Fix memory leak when pipe event is sent and there is no client ([#447][i-447],[#448][pr-448]) |
| 99 | +- Set the ZMQ Receive Buffer High Water Mark only if it changes ([#444][i-444],[#445][pr-445]) |
| 100 | + to reduce the impact of a bug in ZMQ 4.2.0 and ZMQ 4.2.1 which was fixed in |
| 101 | + commit [zeromq/libzmq@edc770d][libzmq-c-edc770d]. |
| 102 | + |
| 103 | +## [9.2.8] - 2018-03-29 [unstable] |
| 104 | +### Changed |
| 105 | +- Cmake release targets ([#438][pr-438]) |
| 106 | +- **Install include files in <install_prefix>/include/tango directory instead of |
| 107 | + <install_prefix>/include**. |
| 108 | + |
| 109 | +### Fixed |
| 110 | +- Fix appveyor build |
| 111 | + |
| 112 | +## [9.2.7] - 2018-02-27 [unstable] |
| 113 | +### Added |
| 114 | +- **Use CMake** |
| 115 | +- Set CMake minimum requirement to CMake 2.8.12 ([#422][pr-422]) |
| 116 | +- Add DevVarBooleanArray operators ([#347][pr-347]) |
| 117 | +- Add support for NaN and inf in device properties ([#360][i-360], [#362][pr-362],[ #371][pr-371]) |
| 118 | +- Refactor DeviceAttribute code ([#394][pr-394]). DeviceAttribute::init_common_class_members() method is now private |
| 119 | +- Forwarded dynamic attributes ([#342][pr-342]) |
| 120 | +- Build on Windows using CMake and setup appveyor CI ([#413][pr-413]) |
| 121 | +- Enable Travis CI ([#375][pr-375], [#417][pr-417], [#418][pr-418], [#419][pr-419]) |
| 122 | +- tango_config.h: Add clang detection ([#442][pr-442]) |
| 123 | +- Doxygen: Add searchbar ([#432][pr-432]) |
| 124 | + |
| 125 | +### Changed |
| 126 | +- DeviceAttribute::get_type() no longer throws an API_EmptyDeviceAttribute exception when the DeviceAttribute is empty. |
| 127 | + It returns DATA_TYPE_UNKNOWN instead ([#393][pr-393], [#509][i-509]). |
| 128 | + |
| 129 | + **Warning! This change could lead to Segmentation fault** in code doing things like: |
| 130 | +``` |
| 131 | + DeviceAttribute da; |
| 132 | + da = device->read_attribute("AnAttributeWithINVALIDQualityFactor"); |
| 133 | + cout << "Type = " << Tango::CmdArgTypeName[da.get_type()] << endl; |
| 134 | +``` |
| 135 | + Please refer to [#510][i-510] for more details. |
| 136 | +- Improve ZmqEventSubscriptionChange command argin and argout descriptions ([355da96][c-355da96]) |
| 137 | +- Generate files from IDL (**add a dependency to tango-idl repository. omniidl is required to be able to generate some |
| 138 | + files from CORBA IDL**) |
| 139 | +- Get exception message from event callback ([#431][pr-431]) |
| 140 | +- Add a map in MultiAttribute object to improve performances ([#424][i-424], [#430][pr-430]) |
| 141 | +- A small Doxygen improvement - take version from cmake ([#436][pr-436]) |
| 142 | +- Reduce event subscription sleeps on linux ([#415][pr-415]). |
| 143 | + |
| 144 | +**Warning**: There is no guarantee that after a successful call to subscribe_event() that a subscriber will receive all |
| 145 | +the events it is interested in. In some situations, some important events might be missed if they occur between the |
| 146 | +subscribe_event() call and the ZMQ subscription reception on the ZMQ publisher side, potentially leading to situations |
| 147 | +where a client application might show out of date/incorrect values. |
| 148 | +- Tango 9 LTS fix[#395][i-395] (Inserting const C string in DeviceData) ([#396][pr-396]) |
| 149 | + |
| 150 | +### Removed |
| 151 | +- Remove zmq.hpp ([#266][i-266], [#421][pr-421]). **Add a dependency to https://github.com/zeromq/cppzmq** |
| 152 | + |
| 153 | +### Fixed |
| 154 | +- Add missing event implementation with \_TG_WINDOWS\_ ifdef ([#349][i-349]) |
| 155 | +- Fix [TangoTickets#3][tt-i3] (Events received with UNKNOWN data format and without values when subscribing from |
| 156 | + a Tango 9 client to a Tango 7 server DevShort attribute) |
| 157 | +- Fix bug related to heartbeat endpoints which could eventually occur when the device server runs on a host with |
| 158 | + multiple network interfaces ([36aca17][c-36aca17]) |
| 159 | +- Fix bug after admin device RestartServer command ([#358][pr-358]) |
| 160 | +- Fix bug in Attribute::get_att_device_class() ([4a00c8e][c-4a00c8e]) |
| 161 | +- Fix RcsId warnings ([#374][pr-374]) |
| 162 | +- Fix warnings reported by gcc 6.3 related to misleading indentations ([#376][pr-376]) |
| 163 | +- Fix "unused parameter" warnings ([#379][pr-379]) |
| 164 | +- Fix shift-negative-value compilation warnings reported by g++ 6.3 ([#383][pr-383]) |
| 165 | +- Fix DeviceAttribute constructor for short and enum data types ([#392][i-392], [#393][pr-393]) |
| 166 | +- Fix bug leading occasionally to segmentation faults of Tango 9 device servers ([#398][pr-398]) |
| 167 | +- Fix bug in event name when pushing an error event to IDL5 clients ([#400][pr-400]) |
| 168 | +- Attribute: Don't treat an integer as an char* ([#403][pr-403], [#406][pr-406]) |
| 169 | +- pointer-cast-size-mismatch attrgetsetprop.cpp:200 ([#339][i-339], [#406][pr-406]) |
| 170 | +- Fix build errors when using C++17 ([#405][pr-405], [#425][pr-425]) |
| 171 | +- Fix issue with polling not starting automatically on dynamic attributes ([#427][pr-427]) |
| 172 | +- Add noreturn to remove some compilation warnings ([#435][pr-435]) |
| 173 | +- CPU load when device has large number of attributes ([#404][pr-404]) |
| 174 | +- push event performance issue ([#244][i-244]) |
| 175 | + |
| 176 | +[9.3.3]: https://github.com/tango-controls/cppTango/compare/9.3.2...9.3.3 |
| 177 | +[9.3.2]: https://github.com/tango-controls/cppTango/compare/9.3.1...9.3.2 |
| 178 | +[9.3.1]: https://github.com/tango-controls/cppTango/compare/9.3.0...9.3.1 |
| 179 | +[9.3.0]: https://github.com/tango-controls/cppTango/compare/test-auto-deploy...9.3.0 |
| 180 | +[9.2.8]: https://github.com/tango-controls/cppTango/compare/9.2.7...test-auto-deploy |
| 181 | +[9.2.7]: https://github.com/tango-controls/cppTango/compare/cppapi_Release_9_2_5...9.2.7 |
| 182 | + |
| 183 | +[c-4a00c8e]: https://github.com/tango-controls/cppTango/commit/4a00c8e4203668c247a2ada6e309470cd53744d3 |
| 184 | +[c-36aca17]: https://github.com/tango-controls/cppTango/commit/36aca17d43a97ebe09fdc825941cb39f6c48289e |
| 185 | +[c-355da96]: https://github.com/tango-controls/cppTango/commit/355da96ac7d82d4a7727f68f3b093c98f087fd98 |
| 186 | +[c-5c74e8d]: https://github.com/tango-controls/cppTango/commit/5c74e8d33ce85036c9348a09b894e05ac3e8cdf9 |
| 187 | + |
| 188 | +[libzmq-c-edc770d]: https://github.com/zeromq/libzmq/commit/edc770d680b2be5a633526bd2c724d66406c8360 |
| 189 | +[libzmq-c-edb4ca1]: https://github.com/zeromq/libzmq/commit/edb4ca1 |
| 190 | + |
| 191 | +[tt-i3]: https://github.com/tango-controls/TangoTickets/issues/3 |
| 192 | + |
| 193 | +[i-17]: https://github.com/tango-controls/cppTango/issues/17 |
| 194 | +[i-244]: https://github.com/tango-controls/cppTango/issues/244 |
| 195 | +[i-266]: https://github.com/tango-controls/cppTango/issues/266 |
| 196 | +[i-275]: https://github.com/tango-controls/cppTango/issues/275 |
| 197 | +[i-315]: https://github.com/tango-controls/cppTango/issues/315 |
| 198 | +[i-339]: https://github.com/tango-controls/cppTango/issues/339 |
| 199 | +[pr-342]: https://github.com/tango-controls/cppTango/pull/342 |
| 200 | +[pr-347]: https://github.com/tango-controls/cppTango/pull/347 |
| 201 | +[i-349]: https://github.com/tango-controls/cppTango/issues/349 |
| 202 | +[pr-358]: https://github.com/tango-controls/cppTango/pull/358 |
| 203 | +[i-359]: https://github.com/tango-controls/cppTango/issues/359 |
| 204 | +[i-360]: https://github.com/tango-controls/cppTango/issues/360 |
| 205 | +[i-369]: https://github.com/tango-controls/cppTango/issues/369 |
| 206 | +[pr-362]: https://github.com/tango-controls/cppTango/pull/362 |
| 207 | +[pr-371]: https://github.com/tango-controls/cppTango/pull/371 |
| 208 | +[pr-374]: https://github.com/tango-controls/cppTango/pull/374 |
| 209 | +[pr-375]: https://github.com/tango-controls/cppTango/pull/375 |
| 210 | +[pr-376]: https://github.com/tango-controls/cppTango/pull/376 |
| 211 | +[pr-379]: https://github.com/tango-controls/cppTango/pull/379 |
| 212 | +[pr-383]: https://github.com/tango-controls/cppTango/pull/383 |
| 213 | +[i-384]: https://github.com/tango-controls/cppTango/issues/384 |
| 214 | +[i-392]: https://github.com/tango-controls/cppTango/issues/392 |
| 215 | +[pr-393]: https://github.com/tango-controls/cppTango/pull/393 |
| 216 | +[pr-394]: https://github.com/tango-controls/cppTango/pull/394 |
| 217 | +[i-395]: https://github.com/tango-controls/cppTango/issues/395 |
| 218 | +[pr-396]: https://github.com/tango-controls/cppTango/pull/396 |
| 219 | +[pr-398]: https://github.com/tango-controls/cppTango/pull/398 |
| 220 | +[pr-400]: https://github.com/tango-controls/cppTango/pull/400 |
| 221 | +[pr-403]: https://github.com/tango-controls/cppTango/pull/403 |
| 222 | +[pr-404]: https://github.com/tango-controls/cppTango/pull/404 |
| 223 | +[pr-405]: https://github.com/tango-controls/cppTango/pull/405 |
| 224 | +[pr-406]: https://github.com/tango-controls/cppTango/pull/406 |
| 225 | +[pr-413]: https://github.com/tango-controls/cppTango/pull/413 |
| 226 | +[pr-415]: https://github.com/tango-controls/cppTango/pull/415 |
| 227 | +[pr-417]: https://github.com/tango-controls/cppTango/pull/417 |
| 228 | +[pr-418]: https://github.com/tango-controls/cppTango/pull/418 |
| 229 | +[pr-419]: https://github.com/tango-controls/cppTango/pull/419 |
| 230 | +[pr-421]: https://github.com/tango-controls/cppTango/pull/421 |
| 231 | +[pr-422]: https://github.com/tango-controls/cppTango/pull/422 |
| 232 | +[pr-423]: https://github.com/tango-controls/cppTango/pull/423 |
| 233 | +[i-424]: https://github.com/tango-controls/cppTango/issues/424 |
| 234 | +[pr-425]: https://github.com/tango-controls/cppTango/pull/425 |
| 235 | +[pr-427]: https://github.com/tango-controls/cppTango/pull/427 |
| 236 | +[i-428]: https://github.com/tango-controls/cppTango/issues/428 |
| 237 | +[pr-430]: https://github.com/tango-controls/cppTango/pull/430 |
| 238 | +[pr-431]: https://github.com/tango-controls/cppTango/pull/431 |
| 239 | +[pr-432]: https://github.com/tango-controls/cppTango/pull/432 |
| 240 | +[pr-435]: https://github.com/tango-controls/cppTango/pull/435 |
| 241 | +[pr-436]: https://github.com/tango-controls/cppTango/pull/436 |
| 242 | +[pr-437]: https://github.com/tango-controls/cppTango/pull/437 |
| 243 | +[pr-438]: https://github.com/tango-controls/cppTango/pull/438 |
| 244 | +[i-439]: https://github.com/tango-controls/cppTango/issues/439 |
| 245 | +[pr-441]: https://github.com/tango-controls/cppTango/pull/441 |
| 246 | +[pr-442]: https://github.com/tango-controls/cppTango/pull/442 |
| 247 | +[i-444]: https://github.com/tango-controls/cppTango/issues/444 |
| 248 | +[pr-445]: https://github.com/tango-controls/cppTango/pull/445 |
| 249 | +[i-447]: https://github.com/tango-controls/cppTango/issues/447 |
| 250 | +[pr-448]: https://github.com/tango-controls/cppTango/pull/448 |
| 251 | +[pr-451]: https://github.com/tango-controls/cppTango/pull/451 |
| 252 | +[i-453]: https://github.com/tango-controls/cppTango/issues/453 |
| 253 | +[i-455]: https://github.com/tango-controls/cppTango/issues/455 |
| 254 | +[i-456]: https://github.com/tango-controls/cppTango/issues/456 |
| 255 | +[i-457]: https://github.com/tango-controls/cppTango/issues/457 |
| 256 | +[i-458]: https://github.com/tango-controls/cppTango/issues/458 |
| 257 | +[pr-459]: https://github.com/tango-controls/cppTango/pull/459 |
| 258 | +[pr-460]: https://github.com/tango-controls/cppTango/pull/460 |
| 259 | +[pr-474]: https://github.com/tango-controls/cppTango/pull/474 |
| 260 | +[pr-476]: https://github.com/tango-controls/cppTango/pull/476 |
| 261 | +[pr-478]: https://github.com/tango-controls/cppTango/pull/478 |
| 262 | +[i-484]: https://github.com/tango-controls/cppTango/issues/484 |
| 263 | +[pr-485]: https://github.com/tango-controls/cppTango/pull/485 |
| 264 | +[pr-486]: https://github.com/tango-controls/cppTango/pull/486 |
| 265 | +[pr-488]: https://github.com/tango-controls/cppTango/pull/488 |
| 266 | +[i-492]: https://github.com/tango-controls/cppTango/issues/492 |
| 267 | +[pr-493]: https://github.com/tango-controls/cppTango/pull/493 |
| 268 | +[pr-502]: https://github.com/tango-controls/cppTango/pull/502 |
| 269 | +[pr-503]: https://github.com/tango-controls/cppTango/pull/503 |
| 270 | +[pr-508]: https://github.com/tango-controls/cppTango/pull/508 |
| 271 | +[i-509]: https://github.com/tango-controls/cppTango/issues/509 |
| 272 | +[i-510]: https://github.com/tango-controls/cppTango/issues/510 |
| 273 | +[i-514]: https://github.com/tango-controls/cppTango/issues/514 |
| 274 | +[pr-516]: https://github.com/tango-controls/cppTango/pull/516 |
| 275 | +[pr-517]: https://github.com/tango-controls/cppTango/pull/517 |
| 276 | +[pr-518]: https://github.com/tango-controls/cppTango/pull/518 |
| 277 | +[pr-520]: https://github.com/tango-controls/cppTango/pull/520 |
| 278 | +[pr-521]: https://github.com/tango-controls/cppTango/pull/521 |
| 279 | +[pr-522]: https://github.com/tango-controls/cppTango/pull/522 |
| 280 | +[pr-523]: https://github.com/tango-controls/cppTango/pull/523 |
| 281 | +[pr-529]: https://github.com/tango-controls/cppTango/pull/529 |
| 282 | +[pr-531]: https://github.com/tango-controls/cppTango/pull/531 |
| 283 | +[i-532]: https://github.com/tango-controls/cppTango/issues/532 |
| 284 | +[pr-533]: https://github.com/tango-controls/cppTango/pull/533 |
| 285 | +[pr-537]: https://github.com/tango-controls/cppTango/pull/537 |
| 286 | +[pr-539]: https://github.com/tango-controls/cppTango/pull/539 |
| 287 | +[i-541]: https://github.com/tango-controls/cppTango/issues/541 |
| 288 | +[pr-542]: https://github.com/tango-controls/cppTango/pull/542 |
| 289 | +[pr-544]: https://github.com/tango-controls/cppTango/pull/544 |
| 290 | +[i-546]: https://github.com/tango-controls/cppTango/issues/546 |
| 291 | +[pr-549]: https://github.com/tango-controls/cppTango/pull/549 |
0 commit comments