Releases: al8n/hick
hick v0.2.0
hick v0.2.0 brings mDNS / DNS-SD to RP2040 / Cortex-M0+ (cores without native atomic CAS) and trims the no_std footprint. It bundles everything since v0.1.0 — the no-atomic tier (#40 / #41) and the heapless removal (#43).
Crates
| Crate | Version | |
|---|---|---|
mdns-proto |
0.3.0 | heapless removed, no-atomic tier added |
hick |
0.2.0 | facade — adds embassy-no-atomic / smoltcp-no-atomic |
hick-reactor |
0.2.0 | tokio / smol driver |
hick-compio |
0.2.0 | compio (thread-per-core) driver |
hick-smoltcp |
0.2.0 | atomic / no-atomic tiers |
hick-embassy |
0.2.0 | atomic / no-atomic tiers |
hick-udp |
0.1.0 | unchanged |
hick-trace |
0.1.0 | unchanged |
Bare-metal without native atomics — RP2040 / Cortex-M0+ (#40, #41)
hick-embassy failed to build for thumbv6m-none-eabi because the protocol core's owned storage pulled smol_str (alloc::sync::Arc) and bytes (atomic refcount) — neither exists without native atomic CAS.
- New
no-atomicstorage tier inmdns-proto: the same alloc-backedEndpoint, but the refcountedName/ rdata useportable-atomic'sArc(cheap clone via acritical-sectionimpl your binary provides) instead ofsmol_str+bytes. hick-smoltcp/hick-embassygainatomic(default) vsno-atomictiers; thehickfacade gainssmoltcp-no-atomic/embassy-no-atomic. For RP2040:hick = { version = "0.2", default-features = false, features = ["embassy-no-atomic"] }
- CI cross-compiles the whole no-atomic stack for
thumbv6m-none-eabi, and docs.rs now renders a feature badge on every gated item.
Leaner no_std — dropped the heapless tier (breaking) (#43)
mdns-proto's heapless feature backed owned storage with fixed-capacity inline collections (a 256-byte Name each, fat pools) — a poor fit for no_std stack budgets.
- The rule is now clean: owning a
Name/ServiceSpecor building messages needs an allocator (alloc/std/no-atomic); the bare--no-default-featurestier is parse-only (the borrowedwire::NameRef). Same stance asquinn-proto.
Upgrading
mdns-proto: if you enabledfeatures = ["heapless"], switch toalloc(with a global allocator) orno-atomic(cores without native atomics). No-allocator parsing still works viawire::NameRef.- The driver / facade crates are drop-in at the new 0.2.0 versions.
MSRV: Rust 1.91 (edition 2024). Licensed under MIT OR Apache-2.0. Full changes: CHANGELOG.
hick v0.1.0
First public release of hick — batteries-included, runtime-agnostic mDNS / DNS-SD for Rust, built on a Sans-I/O protocol core with pluggable async drivers.
Crates
All published to crates.io:
| Crate | Version | Role |
|---|---|---|
hick |
0.1.0 | batteries-included facade (core + default tokio driver) |
mdns-proto |
0.2.0 | Sans-I/O protocol state machines (no_std-capable) |
hick-udp |
0.1.0 | multicast UDP socket setup |
hick-reactor |
0.1.0 | runtime-agnostic async driver (tokio & smol) |
hick-compio |
0.1.0 | compio (thread-per-core) async driver |
hick-smoltcp |
0.1.0 | bare-metal mDNS engine over smoltcp (no_std + alloc) |
hick-embassy |
0.1.0 | embassy async driver, built on hick-smoltcp |
hick-trace |
0.1.0 | tracing / metrics / stats / defmt observability shim |
Highlights
- Sans-I/O core — all protocol logic lives in
mdns-protoas pure state machines (no sockets, threads, or clocks), deterministic and exhaustively unit-tested. - Runtime-agnostic — drive it from
tokio,smol, orcompiowith no change to protocol behavior. no_stdand bare-metal — runs onalloc(orheapless, no allocator), plushick-smoltcp/hick-embassyfor embedded targets over smoltcp.- RFC 6762 / 6763 conformant — probing and announcing, name-conflict detection with automatic renaming, known-answer and duplicate-question suppression, TTL-accurate caching, and TTL=0 goodbyes on withdrawal.
unsafe-minimal — the protocol core is#![forbid(unsafe_code)];unsafeis confined to the platform socket/control-message plumbing.- Observable, à la carte — opt into
tracingspans,metricscounters, pollablestats, ordefmton embedded — each behind a feature flag and compiled out when unused.
Install
[dependencies]
hick = "0.1" # tokio runtime by defaultFor smol, compio, or bare-metal (smoltcp / embassy), enable the matching feature on hick — see the README for setup and a full example.
MSRV: Rust 1.91 (edition 2024). Licensed under MIT OR Apache-2.0.