The new version brings several major improvements:
Dedicated transmission queues per redundant CAN interface with depth limits. The application is now expected to instantiate
CanardTxQueue(or several in case of redundant transport) manually.
Replace O(n) linked lists with fast O(log n) AVL trees (Cavl library is distributed with libcanard). Traversing the list of RX subscriptions now requires recursive traversal of the tree.
Manual DSDL serialization helpers removed (
canard_dsdl.c); use Nunavut instead.
Replace bitwise CRC computation with a much faster static table by default (#185). This can be disabled by setting
CANARD_CRC_TABLE=0, which is expected to save ca. 500 bytes of ROM.
Fixed issues with const-correctness in the API (#175).
Support build configuration headers via
Add API for generating CAN hardware acceptance filter configurations (#169).
Usage examples adapted for the updated API are available in the README.
Special thanks to @coder_kalyan for critical contributions to this release.