{"slug": "defmt", "name": "defmt", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 3, "commenters": 4, "warners": 0, "score": 2.729, "rising": -0.98, "first": "2025-12-07", "latest": "2026-03-07", "why": "Here\u2019s a very impressive set of macros that I use daily.", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 3, "neutral": 1, "compare": 0, "warn": 0}, "spark": [0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "Here\u2019s a very impressive set of macros that I use daily.", "kind": "", "icon": true, "domain": "ferrous-systems.com", "github_repo": null, "official_url": "https://defmt.ferrous-systems.com", "pricing": "", "aliases": ["defmt"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 744811074, "item_id": 46550692, "url": "https://news.ycombinator.com/item?id=46550692", "by": "jpgvm", "date": "2026-01-08", "version": null, "stance": "recommend", "quote": "defmt logging (combined with probe-rs and rtt it's very nice)", "excerpt": "I'm loving Embassy. Coming from a lot of bare metal C and FreeRTOS it finally feels like embedded is getting a toolchain that is actually modern and better. Some of that isn't just Embassy but the surrounding ecosystem, some highlights: * probe-rs w/cargo run integration * defmt logging (combined with probe-rs and rtt it's very nice) * embedded_hal (and in my case stm32-rs) I have also tried RTIC but I decided to kee", "context": "", "use_case": "embedded logging", "switched_from": "", "story": "Embassy: Modern embedded framework, using Rust and async"}, {"id": 744769521, "item_id": 46548095, "url": "https://news.ycombinator.com/item?id=46548095", "by": "the__alchemist", "date": "2026-01-08", "version": null, "stance": "recommend", "quote": "probe-rs, defmt, and the PAC project are phenomenal", "excerpt": "I've had to consistently write my own libraries. HAL for STM32, LoRa support, hardware support for every sensor I use (GPS, IMUs, mag, flash memory etc), ESP-Hosted library, etc. Whenever I design something new or change parts, my assumption is I will have to write my own interface for it. It's not too bad, but is a friction point compared to if I had written the firmware in C or C++. On the other hand, the rust embe", "context": "", "use_case": "", "switched_from": "", "story": "Embassy: Modern embedded framework, using Rust and async"}, {"id": 738949200, "item_id": 46184325, "url": "https://news.ycombinator.com/item?id=46184325", "by": "wrs", "date": "2025-12-07", "version": null, "stance": "recommend", "quote": "Here\u2019s a very impressive set of macros that I use daily.", "excerpt": "GCC can type-check printf (matching format string to arguments) because the compiler doesn\u2019t just treat it like a function. But that requires special-case code in the C compiler itself that is basically opaque magic. Rust doesn\u2019t need that, it\u2019s mostly Rust code in the standard library, with only a small bit of compiler magic triggered by the macro. (Println! isn\u2019t the best example because it does have that small bit", "context": "embedded developer", "use_case": "embedded printf logging", "switched_from": "", "story": "The programmers who live in Flatland"}]}], "caveats": [], "who": [{"by": "wrs", "context": "embedded developer", "url": "https://news.ycombinator.com/item?id=46184325", "date": "2025-12-07"}], "tags": [], "use_cases": ["embedded logging", "embedded printf logging"], "compared": [{"slug": "probe-rs", "name": "probe-rs", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=46547740", "title": "Embassy: Modern embedded framework, using Rust and async", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=47282777", "title": "I'm 60 years old. Claude Code has ignited a passion again", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46070298", "title": "The programmers who live in Flatland", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"recommend": 1}, "2026-01": {"recommend": 2}, "2026-02": {}, "2026-03": {"neutral": 1}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 756700339, "item_id": 47293771, "url": "https://news.ycombinator.com/item?id=47293771", "by": "LoganDark", "date": "2026-03-07", "version": null, "stance": "neutral", "quote": "setting up `defmt`", "excerpt": "I love Claude Code because it lets me try out ideas a lot faster. Sometimes I have to fight with it to get the outcome I want, but other times it's like I can do something in 3 days that'd otherwise take me weeks. For example, I recently had it port a diffusion language model to Swift+MLX so that I could run it on macOS. It messed up one of the details at first, but it was able to figure out the problem and fix it. A", "context": "", "use_case": "embedded logging", "switched_from": "", "story": "I'm 60 years old. Claude Code has ignited a passion again"}, {"id": 744811074, "item_id": 46550692, "url": "https://news.ycombinator.com/item?id=46550692", "by": "jpgvm", "date": "2026-01-08", "version": null, "stance": "recommend", "quote": "defmt logging (combined with probe-rs and rtt it's very nice)", "excerpt": "I'm loving Embassy. Coming from a lot of bare metal C and FreeRTOS it finally feels like embedded is getting a toolchain that is actually modern and better. Some of that isn't just Embassy but the surrounding ecosystem, some highlights: * probe-rs w/cargo run integration * defmt logging (combined with probe-rs and rtt it's very nice) * embedded_hal (and in my case stm32-rs) I have also tried RTIC but I decided to kee", "context": "", "use_case": "embedded logging", "switched_from": "", "story": "Embassy: Modern embedded framework, using Rust and async"}, {"id": 744769521, "item_id": 46548095, "url": "https://news.ycombinator.com/item?id=46548095", "by": "the__alchemist", "date": "2026-01-08", "version": null, "stance": "recommend", "quote": "probe-rs, defmt, and the PAC project are phenomenal", "excerpt": "I've had to consistently write my own libraries. HAL for STM32, LoRa support, hardware support for every sensor I use (GPS, IMUs, mag, flash memory etc), ESP-Hosted library, etc. Whenever I design something new or change parts, my assumption is I will have to write my own interface for it. It's not too bad, but is a friction point compared to if I had written the firmware in C or C++. On the other hand, the rust embe", "context": "", "use_case": "", "switched_from": "", "story": "Embassy: Modern embedded framework, using Rust and async"}, {"id": 738949200, "item_id": 46184325, "url": "https://news.ycombinator.com/item?id=46184325", "by": "wrs", "date": "2025-12-07", "version": null, "stance": "recommend", "quote": "Here\u2019s a very impressive set of macros that I use daily.", "excerpt": "GCC can type-check printf (matching format string to arguments) because the compiler doesn\u2019t just treat it like a function. But that requires special-case code in the C compiler itself that is basically opaque magic. Rust doesn\u2019t need that, it\u2019s mostly Rust code in the standard library, with only a small bit of compiler magic triggered by the macro. (Println! isn\u2019t the best example because it does have that small bit", "context": "embedded developer", "use_case": "embedded printf logging", "switched_from": "", "story": "The programmers who live in Flatland"}]}