I recently open-sourced Sping, a network diagnostics CLI I’ve been building in Rust.
It started from a very simple annoyance: when ping starts timing out, that’s usually when the actual troubleshooting begins. I would end up checking the gateway, another Internet target, the interface, packet loss and latency separately.
Sping tries to put that first layer of diagnosis in one place.
It continuously monitors the target together with gateway and WAN reachability, and combines that with RTT, jitter, packet loss, trends, spikes and network context.
A few implementation details that may be interesting to Rust folks:
Linux uses unprivileged ICMP DGRAM sockets with a RAW fallback, plus recvmsg for TTL/hop-limit and kernel receive timestamps.
macOS uses ICMP DGRAM sockets and handles ICMPv6 separately.
Windows uses IcmpSendEcho / Icmp6SendEcho2 through FFI instead of spawning the system ping.
Tokio handles the async runtime, while the actual ICMP probes are isolated from it.
IPv4 and IPv6 are both supported.
There is a stable NDJSON output for scripting and automation.
The latest 1.5.5 release was mostly driven by feedback after making the project public.
It added proper IPv6 link-local zone handling (fe80::...%interface), per-target network context in multi-target/batch mode, fixed an IPv6 cross-talk issue on macOS, moved Windows interface discovery to GetAdaptersAddresses, and improved DNS failover handling.
Distribution has also become a bit more serious: it is now on crates.io, macOS releases are signed/notarized, and GitHub release assets have build provenance attestations.
Install:
cargo install sping
or use the pre-built Linux/macOS/Windows binaries and Debian packages.
GitHub:
github.com
GitHub - LambdaBytes/sping: A modern, cross-platform ping with real-time...
A modern, cross-platform ping with real-time diagnostics, network context, quality scoring, and multi-target monitoring.
I’m particularly interested in feedback around the ICMP backends, IPv6 edge cases, multi-interface/VPN setups, and places where the diagnostics make the wrong call.
I’m also interested in code/architecture feedback from people doing systems or networking work in Rust.
1 post - 1 participant
Read full topic
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | AppNetPlotter — a Windows app for troubleshooting app connectivity, | 0 | 7.98 | 11-10-2026 |
| 2 | FerroProve - C-to-Rust lifter emitting #![forbid(unsafe_code)] crates with a differential oracle | 0 | 15.51 | 17-10-2026 |
| 3 | [Project] sol: A self-contained browser kernel written in Rust | 0 | 9.76 | 18-10-2026 |
| 4 | I made a Vibe-Coded Reusable Application Runtime For Any Digital Domain (Office apps, Digital Painter, Graph nodes based apps..etc) | 0 | 17.83 | 12-10-2026 |
| 5 | I wrote a small library for exclusive component filtering in bevy | 0 | 14.93 | 13-10-2026 |
| 6 | Crossync - a super fast Rust concurrency library | 0 | 8 | 13-10-2026 |
| 7 | Zaxis 0.0.5: immediate-mode GUI on wgpu, embeddable in a host's wgpu pass, with an real overlay layer for other processes | 0 | 10.2 | 11-10-2026 |
| 8 | I built an unsafe scanner alternative to Cargo Geiger | 0 | 8.82 | 09-10-2026 |
| 9 | Считаем пакеты на Rust | 0 | 9.87 | 04-07-2026 |
| 10 | [Перевод] Rust 1.97.0: манглинг символов, вывод линкера и поддержка запрета предупреждений в Cargo | 0 | 11.43 | 14-07-2026 |