Skip to content

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 28 Oct 03:13
830c372

Date: 2026-10-28
Previous release: v0.2.1

canbusctl on go-canbus v0.2.2.

  • monitor, record, stats and the ISO-TP commands could lose the
    first frames that arrived between opening the interface and subscribing
    to it (go-canbus's Bus started reading at once). They now open the bus
    with canbus.WithStartOnSubscribe, so frames wait in the socket until
    the command listens. Found by the end-to-end tests in a slow microVM,
    where record kept 21 of 60 frames.
  • Tests: the end-to-end harness waits until the kernel has registered a
    started process's CAN filters (/proc/net/can) before sending to it, and
    prints the recording when record misses frames.

v0.2.1

Date: 2026-10-28
Previous release: v0.2.0

canbusctl on go-canbus v0.2.1. go-canbus now reports a socket deadline that
fires a moment before the command's own deadline as that deadline, and
chaos.Bridge.Run returns nil when its context ends during a send; the
workarounds canbusctl v0.2.0 carried for both are removed. Commands behave as
in v0.2.0.

v0.2.0

Date: 2026-10-28
Previous release: v0.1.0

canbusctl on go-canbus v0.2.0: Vector trace formats, AUTOSAR databases, a
fault bridge and tested interoperability.

  • Traces: record, replay, monitor -o/--output, dbc decode --trace and
    inject --trace read and write Vector ASC and BLF besides candump, JSON
    Lines and pcap (pcapng is read). New trace convert <in> <out> (filters,
    --no-errors, --max-frames; reports what the target format cannot keep)
    and trace info (kinds, duration, per-identifier counts and rates). ASC and
    BLF times are zone-less local time: set TZ to match the recording.
  • Databases: ARXML (the CAN part of AUTOSAR 4 system descriptions) wherever a
    database is read; dbc convert --to kcd writes KCD and prints what KCD
    cannot hold. Conversions: DBC, KCD, ARXML → DBC, KCD, JSON.
  • bridge -a <if> -b <if>: forwards frames between two interfaces (vcan,
    vxcan, virtual; others with --yes) through seeded faults — --drop,
    --duplicate, --delay-probability/--delay, --reorder, --corrupt,
    --filter — for --duration, with per-direction counters (text or JSON).
  • inject runs on the same chaos bridge (go-canbus chaos): new --reorder;
    JSON faults gains received, forwarded, reordered. Other flags and
    output are unchanged.
  • ISO-TP: --fc-delay (N_Br) on isotp receive/send delays each flow
    control. Against the kernel's ISO-TP sender on vcan a fast userspace
    receiver needs about 200 µs: the kernel drops a flow control that beats the
    echo of its own last block frame. isotp send --kernel no longer resends a
    whole message when the Go runtime interrupts the kernel's wait for the
    transmission (fixed in go-canbus v0.2.0). isotp monitor is listen-only.
  • A socket deadline that fires a moment before the command's deadline ends a
    --timeout/--duration run normally instead of failing with a timeout or
    I/O error (isotp receive --kernel -n 0, bridge).
  • Tests: end-to-end tests of the built binary (every trace format, vcan
    pipelines, ISO-TP between processes and with the kernel, bridge
    processes); chaos tests (ISO-TP through a faulty bridge never delivers
    wrong data, every process returns by its deadline); interop tests against
    canbus-interop (can-utils/kernel, python-can, python-can-isotp, cantools,
    canmatrix); vcan tests on vcan0 and vcan1 in CI with kernel ISO-TP;
    microVM runs on kernels 6.1–6.18. Coverage 94.2 %; interop with
    canbus-interop v0.2.0: 63 pass, 27 known differences, no skips.