copper-rs first stable release (v1.0.0)
Users started to wonder if this v1 would ever get released but here we are after 1043 Pull Requests, the 1.0.0 has been pushed on crates.io.
v1 is out!
But let’s be clear, this is only the beginning.
So what does it mean?
It simply means we trust the shape of the APIs today enough that we can start to guarantee some backward compatibility:
We will try our best so anything written against 1.0.0 can work on any 1.x.x. Until we decide to make a breaking change and it will be a v2.
It will follow the semantic versioning ie: 1.0.1 will be a bug fix only and a 1.1.0 will add some new features on top of the v1.0.x series.
We will only maintain the latest 1.x (or 2.y in the future) until we announce the end of life of a major version but it might be in a while.
In substance, key changes since the rc2, it is actually a huge release by itself:
Named runtime thread pools in RON
CPU affinity and scheduling policy support.
Per-node handle logging controls: log all handle payloads, only touched payloads, or metadata only.
Typed task debug-state hooks, so tasks can expose a clean debug view instead of raw internals.
Remote debug can now read structured logs, page timelines, use indexed timestamp/CL lookup, and batch replay snapshots.
Keyframes implemented fully across the board PID controllers, flight-controller tasks, bridges, async tasks, and more components.
New `cu_memmon` monitor tracks per-task and per-bridge heap allocations during lifecycle steps, with a strict mode for realtime paths.
New UWB ranging support for the RYUW122 module, plus range accumulation and triangulation tasks.
GStreamer image payloads can now replay from recorded bytes without a live GStreamer pipeline.
ROS2 bridge payload encoding now matches ROS2 CDR little-endian expectations and has end-to-end coverage.
As usual, we cannot wait to see what you will create with copper-rs!