Skip to content

Releases: al8n/hick

hick v0.2.0

18 Jun 12:56
41db5fd

Choose a tag to compare

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 ⚠️ breaking — 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-atomic storage tier in mdns-proto: the same alloc-backed Endpoint, but the refcounted Name / rdata use portable-atomic's Arc (cheap clone via a critical-section impl your binary provides) instead of smol_str + bytes.
  • hick-smoltcp / hick-embassy gain atomic (default) vs no-atomic tiers; the hick facade gains smoltcp-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 / ServiceSpec or building messages needs an allocator (alloc / std / no-atomic); the bare --no-default-features tier is parse-only (the borrowed wire::NameRef). Same stance as quinn-proto.

Upgrading

  • mdns-proto: if you enabled features = ["heapless"], switch to alloc (with a global allocator) or no-atomic (cores without native atomics). No-allocator parsing still works via wire::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

05 Jun 13:10
adbae72

Choose a tag to compare

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-proto as pure state machines (no sockets, threads, or clocks), deterministic and exhaustively unit-tested.
  • Runtime-agnostic — drive it from tokio, smol, or compio with no change to protocol behavior.
  • no_std and bare-metal — runs on alloc (or heapless, no allocator), plus hick-smoltcp / hick-embassy for 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)]; unsafe is confined to the platform socket/control-message plumbing.
  • Observable, à la carte — opt into tracing spans, metrics counters, pollable stats, or defmt on embedded — each behind a feature flag and compiled out when unused.

Install

[dependencies]
hick = "0.1" # tokio runtime by default

For 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.