|
1 | 1 | Version 4.0.0
|
2 | 2 | ====
|
3 | 3 |
|
4 |
| -(In development) |
| 4 | +TL;DR: This release includes a ton of improvements from 2.5 years of development! 🎉 Test thoroughly after switching. |
5 | 5 |
|
| 6 | +For more than two years, there was no major release of *python-can*. |
| 7 | +However, development was very much active over most of this time, and many parts were switched out and improved. |
| 8 | +Over this time, over 530 issues and PRs have been resolved or merged, and discussions took place in even more. |
| 9 | +Statistics of the final diff: About 200 files changed due to ~22k additions and ~7k deletions from more than thirty contributors. |
| 10 | + |
| 11 | +This changelog diligently lists the major changes but does not promise to be the complete list of changes. |
| 12 | +Therefore, users are strongly advised to thoroughly test their programs against this new version. |
| 13 | +Re-reading the documentation for your interfaces might be helpful too as limitations and capabilities might have changed or are more explicit. |
| 14 | +While we did try to avoid breaking changes, in some cases it was not feasible and in particular, many implementation details have changed. |
| 15 | + |
| 16 | +Major features |
| 17 | +-------------- |
| 18 | + |
| 19 | +* Type hints for the core library and some interfaces (#652 and many others) |
| 20 | +* Support for Python 3.7-3.10+ only (dropped support for Python 2.* and 3.5-3.6) (#528 and many others) |
| 21 | +* [Granular and unified exceptions](https://python-can.readthedocs.io/en/develop/api.html#errors) (#356, #562, #1025; overview in #1046) |
| 22 | +* [Support for automatic configuration detection](https://python-can.readthedocs.io/en/develop/api.html#can.detect_available_configs) in most interfaces (#303, #640, #641, #811, #1077, #1085) |
| 23 | +* Better alignment of interfaces and IO to common conventions and semantics |
| 24 | + |
| 25 | +New interfaces |
| 26 | +-------------- |
| 27 | + |
| 28 | +* udp_multicast (#644) |
| 29 | +* robotell (#731) |
| 30 | +* cantact (#853) |
| 31 | +* gs_usb (#905) |
| 32 | +* nixnet (#968, #1154) |
| 33 | +* neousys (#980, #1076) |
| 34 | +* socketcand (#1140) |
| 35 | +* etas (#1144) |
| 36 | + |
| 37 | +Improved interfaces |
| 38 | +------------------- |
| 39 | + |
| 40 | +* socketcan |
| 41 | + * Support for multiple Cyclic Messages in Tasks (#610) |
| 42 | + * Socketcan crash when attempting to stop CyclicSendTask with same arbitration ID (#605, #638, #720) |
| 43 | + * Relax restriction of arbitration ID uniqueness for CyclicSendTask (#721, #785, #930) |
| 44 | + * Add nanosecond resolution time stamping to socketcan (#938, #1015) |
| 45 | + * Add support for changing the loopback flag (#960) |
| 46 | + * Socketcan timestamps are missing sub-second precision (#1021, #1029) |
| 47 | + * Add parameter to ignore CAN error frames (#1128) |
| 48 | +* socketcan_ctypes |
| 49 | + * Removed and replaced by socketcan after deprecation period |
| 50 | +* socketcan_native |
| 51 | + * Removed and replaced by socketcan after deprecation period |
| 52 | +* vector |
| 53 | + * Add chip state API (#635) |
| 54 | + * Add methods to handle non message events (#708) |
| 55 | + * Implement XLbusParams (#718) |
| 56 | + * Add support for VN8900 xlGetChannelTime function (#732, #733) |
| 57 | + * Add vector hardware config popup (#774) |
| 58 | + * Fix Vector CANlib treatment of empty app name (#796, #814) |
| 59 | + * Make VectorError pickleable (#848) |
| 60 | + * Add methods get_application_config(), set_application_config() and set_timer_rate() to VectorBus (#849) |
| 61 | + * Interface arguments are now lowercase (#858) |
| 62 | + * Fix errors using multiple Vector devices (#898, #971, #977) |
| 63 | + * Add more interface information to channel config (#917) |
| 64 | + * Improve timestamp accuracy on Windows (#934, #936) |
| 65 | + * Fix error with VN8900 (#1184) |
| 66 | +* PCAN |
| 67 | + * Do not incorrectly reset CANMsg.MSGTYPE on remote frame (#659, #681) |
| 68 | + * Add support for error frames (#711) |
| 69 | + * Added keycheck for windows platform for better error message (#724) |
| 70 | + * Added status_string method to return simple status strings (#725) |
| 71 | + * Fix timestamp timezone offset (#777, #778) |
| 72 | + * Add [Cygwin](https://www.cygwin.com/) support (#840) |
| 73 | + * Update PCAN basic Python file to February 7, 2020 (#929) |
| 74 | + * Fix compatibility with the latest macOS SDK (#947, #948, #957, #976) |
| 75 | + * Allow numerical channel specifier (#981, #982) |
| 76 | + * macOS: Try to find libPCBUSB.dylib before loading it (#983, #984) |
| 77 | + * Disable command PCAN_ALLOW_ERROR_FRAMES on macOS (#985) |
| 78 | + * Force english error messages (#986, #993, #994) |
| 79 | + * Add set/get device number (#987) |
| 80 | + * Timestamps are silently incorrect on Windows without uptime installed (#1053, #1093) |
| 81 | + * Implement check for minimum version of pcan library (#1065, #1188) |
| 82 | + * Handle case where uptime is imported successfully but returns None (#1102, #1103) |
| 83 | +* slcan |
| 84 | + * Fix bitrate setting (#691) |
| 85 | + * Fix fileno crash on Windows (#924) |
| 86 | +* ics_neovi |
| 87 | + * Filter out Tx error messages (#854) |
| 88 | + * Adding support for send timeout (#855) |
| 89 | + * Raising more precise API error when set bitrate fails (#865) |
| 90 | + * Avoid flooding the logger with many errors when they are the same (#1125) |
| 91 | + * Omit the transmit exception cause for brevity (#1086) |
| 92 | + * Raise ValueError if message data is over max frame length (#1177, #1181) |
| 93 | + * Setting is_error_frame message property (#1189) |
| 94 | +* ixxat |
| 95 | + * Raise exception on busoff in recv() (#856) |
| 96 | + * Add support for 666 kbit/s bitrate (#911) |
| 97 | + * Add function to list hwids of available devices (#926) |
| 98 | + * Add CAN FD support (#1119) |
| 99 | +* seeed |
| 100 | + * Fix fileno crash on Windows (#902) |
| 101 | +* kvaser |
| 102 | + * Improve timestamp accuracy on Windows (#934, #936) |
| 103 | +* usb2can |
| 104 | + * Fix "Error 8" on Windows and provide better error messages (#989) |
| 105 | +* serial |
| 106 | + * Fix "TypeError: cannot unpack non-iterable NoneType" and more robust error handling (#1000, #1010) |
| 107 | +* canalystii |
| 108 | + * Fix is_extended_id (#1006) |
| 109 | + * Fix transmitting onto a busy bus (#1114) |
| 110 | + * Replace binary library with python driver (#726, #1127) |
| 111 | + |
| 112 | +Other API changes and improvements |
| 113 | +---------------------------------- |
| 114 | + |
| 115 | +* CAN FD frame support is pretty complete (#963) |
| 116 | + * ASCWriter (#604) and ASCReader (#741) |
| 117 | + * Canutils reader and writer (#1042) |
| 118 | + * Logger, viewer and player tools can handle CAN FD (#632) |
| 119 | + * Many bugfixes and more testing coverage |
| 120 | +* IO |
| 121 | + * Log rotation (#648, #874, #881, #1147) |
| 122 | + * Add [plugin support to can.io Reader/Writer](https://python-can.readthedocs.io/en/develop/listeners.html#listener) (#783) |
| 123 | + * ASCReader/Writer enhancements (#820) |
| 124 | + * Adding absolute timestamps to ASC reader (#761) |
| 125 | + * Support other base number (radix) at ASCReader (#764) |
| 126 | + * Add [logconvert script](https://python-can.readthedocs.io/en/develop/scripts.html#can-logconvert) (#1072, #1194) |
| 127 | + * Adding support for gzipped ASC logging file (.asc.gz) (#1138) |
| 128 | + * Improve [IO class hierarchy](https://python-can.readthedocs.io/en/develop/internal-api.html#module-can.io.generic) (#1147) |
| 129 | +* An [overview over various "virtual" interfaces](https://python-can.readthedocs.io/en/develop/interfaces/virtual.html#other-virtual-interfaces) (#644) |
| 130 | +* Make ThreadBasedCyclicSendTask event based & improve timing accuracy (#656) |
| 131 | +* Ignore error frames in can.player by default, add --error-frames option (#690) |
| 132 | +* Add an error callback to ThreadBasedCyclicSendTask (#743, #781) |
| 133 | +* Add direction to CAN messages (#773, #779, #780, #852, #966) |
| 134 | +* Notifier no longer raises handled exceptions in rx_thread (#775, #789) but does so if no listener handles them (#1039, #1040) |
| 135 | +* Changes to serial device number decoding (#869) |
| 136 | +* Add a default fileno function to the BusABC (#877) |
| 137 | +* Disallow Messages to simultaneously be "FD" and "remote" (#1049) |
| 138 | +* Speed up interface plugin imports by removing pkg_resources (#1110) |
| 139 | +* Allowing for extra config arguments in can.logger (#1142, #1170) |
| 140 | +* Add changed byte highlighting to viewer.py (#1159) |
| 141 | + |
| 142 | +Other Bugfixes |
| 143 | +-------------- |
| 144 | + |
| 145 | +* BLF PDU padding (#459) |
| 146 | +* stop_all_periodic_tasks skipping every other task (#634, #637, #645) |
| 147 | +* Preserve capitalization when reading config files (#702, #1062) |
| 148 | +* ASCReader: Skip J1939Tp messages (#701) |
| 149 | +* Fix crash in Canutils Log Reader when parsing RTR frames (#713) |
| 150 | +* Various problems with the installation of the library |
| 151 | +* ASCWriter: Fix date format to show correct day of month (#754) |
| 152 | +* Fixes that some BLF files can't be read ( #763, #765) |
| 153 | +* Seek for start of object instead of calculating it (#786, #803, #806) |
| 154 | +* Only import winreg when on Windows (#800, #802) |
| 155 | +* Find the correct Reader/Writer independently of the file extension case (#895) |
| 156 | +* RecursionError when unpickling message object (#804, #885, #904) |
| 157 | +* Move "filelock" to neovi dependencies (#943) |
| 158 | +* Bus() with "fd" parameter as type bool always resolved to fd-enabled configuration (#954, #956) |
| 159 | +* Asyncio code hits error due to deprecated loop parameter (#1005, #1013) |
| 160 | +* Catch time before 1970 in ASCReader (#1034) |
| 161 | +* Fix a bug where error handlers were not called correctly (#1116) |
| 162 | +* Improved user interface of viewer script (#1118) |
| 163 | +* Correct app_name argument in logger (#1151) |
| 164 | +* Calling stop_all_periodic_tasks() in BusABC.shutdown() and all interfaces call it on shutdown (#1174) |
| 165 | +* Timing configurations do not allow int (#1175) |
| 166 | +* Some smaller bugfixes are not listed here since the problems were never part of a proper release |
| 167 | + |
| 168 | +Behind the scenes & Quality assurance |
| 169 | +------------------------------------- |
| 170 | + |
| 171 | +* We publish both source distributions (`sdist`) and binary wheels (`bdist_wheel`) (#1059, #1071) |
| 172 | +* Many interfaces were partly rewritten to modernize the code or to better handle errors |
| 173 | +* Performance improvements |
| 174 | +* Dependencies have changed |
| 175 | +* Derive type information in Sphinx docs directly from type hints (#654) |
| 176 | +* Better documentation in many, many places; This includes the examples, README and python-can developer resources |
| 177 | +* Add issue templates (#1008, #1017, #1018, #1178) |
| 178 | +* Many continuous integration (CI) discussions & improvements (for example: #951, #940, #1032) |
| 179 | + * Use the [mypy](https://github.com/python/mypy) static type checker (#598, #651) |
| 180 | + * Use [tox](https://tox.wiki/en/latest/) for testing (#582, #833, #870) |
| 181 | + * Use [Mergify](https://mergify.com/) (#821, #835, #937) |
| 182 | + * Switch between various CI providers, abandoned [AppVeyor](https://www.appveyor.com/) (#1009) and partly [Travis CI](https://travis-ci.org/), ended up with [GitHub Actions](https://docs.github.com/en/actions) only (#827) |
| 183 | + * Use the [black](https://black.readthedocs.io/en/stable/) auto-formatter (#950) |
| 184 | + * [Good test coverage](https://app.codecov.io/gh/hardbyte/python-can/branch/develop) for all but the interfaces |
| 185 | +* Testing: Many of the new features directly added tests, and coverage of existing code was improved too (for example: #1031, #581, #585, #586, #942, #1196, #1198) |
6 | 186 |
|
7 | 187 | Version 3.3.4
|
8 | 188 | ====
|
|
0 commit comments