Releases: libcsp/libcsp
Releases · libcsp/libcsp
v2.1
New
- Add reproducible builds
- Move to reStructuredText and automated documentation deployment
- Add convenient macros like
__noinit,__weak,__packed, etc. - Add simple sample code under
samples/ - Add separate
csp_serverandcsp_clientin addition tocsp_server_client - Add raw Ethernet driver for Linux
- Add CAN drivers for Zephyr
- Begin adding unit tests
- Enable
-Wpointer-arith - Enable
-Wpedantic
Break
- Rename
csp_autoconfig.htobuild/include/csp/autoconfig.h
Removed
- Remove additional Windows and macOS support
Improvement
- Update documentation
- Improve C++ support by adding
extern "C" - Improve Python support
- Update examples with various features
- Update support for FreeRTOS, POSIX, and Zephyr
- Update build systems: Waf, Meson, and CMake
- Update various libcsp core modules:
- bridge, conn, crc32, dedup, id, iflist, io, port, packet
- promisc, queue, rdp, route, service, sfp, yaml, and more
- Update various libcsp device drivers:
- can, socketcan, eth, usart
- Update various libcsp interface drivers:
- can, eth, kiss, tun, udp, zmq, loopback
New Contributors
- @fjmolinas made their first contribution in #358
- @pfef-to made their first contribution in #367
- @bjornbm made their first contribution in #371
- @Taylorr82 made their first contribution in #377
- @pxntus made their first contribution in #394
- @Abestanis made their first contribution in #405
- @sigmundklaa made their first contribution in #408
- @SiboVG made their first contribution in #418
- @KantaTamura made their first contribution in #446
- @sasataku made their first contribution in #454
- @IlievIliya92 made their first contribution in #450
- @danieldavidson made their first contribution in #468
- @troelsjessen made their first contribution in #483
- @pr0me made their first contribution in #510
- @dimitrovand made their first contribution in #515
- @olmanqj made their first contribution in #549
- @dependabot[bot] made their first contribution in #550
- @6arms1leg made their first contribution in #663
- @alexapostolu made their first contribution in #653
- @takumiando made their first contribution in #690
- @wookhyunshin made their first contribution in #769
- @nml0 made their first contribution in #738
- @surligas made their first contribution in #800
- @d-a-v made their first contribution in #778
- @JoseMorenoJ made their first contribution in #895
- @inad9300 made their first contribution in #896
Full Changelog: v2.0...v2.1
v2.0
New:
- CSP Header 2.0. Support for 14-bit network addresses.
- CFP (Can fragmentation protocol) 2.0
- Layer-3 broadcast (last address of each subnet)
- One CSP address per interface
- Meson build system
- CMake build system
- Went back to use more compile time configuration for less runtime checks and simpler memory allocation
- Connection less callbacks. The router now supports executing small services directly using a callback saving memory
- csp_if_udp: New UDP interface for point to point UDP links
- csp_if_tun: New IPsec like tunnel interface for secured links
- csp_crc32_verify: now checks data + header, but still accepts checksum on data only. Default is still data only (will change in 2.1)
Improvement:
- Support for 2k packets on CAN, KISS, UDP, ZMQ and others
- Uses only static memory allocation
- FreeRTOS 8+ support
- Decrease csp_dedup timeout from 1s to 100ms to avoid removing duplicate ACK packets in RDP streams
- Shorter debug message texts for smaller flash footprint
- uart driver linux. enable low latency mode
- socketcan: Setup sjw in can driver
- Portability. No more use of packed bitfields.
- RDP RX/TX queue is now global, saving a lot of memory
- FreeRTOS now uses taskNotify API instead of binary semaphores
Removed:
- --install-csp option from waf (replaced with
waf install) - XTEA has been removed, use a dedicated encryption library instead
- csp_endian.h: Use the system provided <endian.h> instead (which is faster and smaller)
- csp_malloc.h: libcsp no longer uses dynamic allocation
- Windows Support (moved to contrib, maintainer needed)
- Mac OSX Support (moved to contrib, maintainer needed)
- Incoming QoS. This didn't make much sense anyways, so a single fifo is now used
- Tasklist
API:
- csp_send(): Now always frees the packet and returns void.
- csp_init(): Now a void function, because allocation cannot fail
- python bindings: Refreshed to new 2.0 api, builds with meson too
- Interface names are now case sensitive (this is faster and avoids pulling in ctypes and saves 340 bytes of flash)
- csp_socket(): is replaced by simply
csp_socket_t my_sock;static allocation. This is very leightweight - csp_bind_callback(): instead of using a socket, and binding that socket to a port.
- new debug API. CSP does not print error messages any longer. Instead a new series of error counters has been added and a new error code system. There are flags to enable the old level 4 and 5 debug to stdout with printf.
- csp reboot and shutdown are now implemented using hooks instaed of callback functions (see hooks.md)
Fixes:
- Router counts incoming packets before deduplication
- RDP: Fix ack_delay_count off by one error
- RTable CIDR: continue parsing, even if an unknown interface is found
- Fix buffer overflow in KISS mode if packets are too long
- Buffer overrun in RDP EACK #157