{"slug": "rtic", "name": "RTIC", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 5, "commenters": 7, "warners": 0, "score": 4.121, "rising": -1.64, "first": "2025-12-10", "latest": "2026-08-16", "why": "Another reason why async Rust is great: https://rtic.rs/", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 5, "neutral": 1, "compare": 1, "warn": 0}, "spark": [0, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "Another reason why async Rust is great: https://rtic.rs/", "kind": "", "icon": false, "domain": "rtic.rs", "github_repo": null, "official_url": "https://rtic.rs", "pricing": "", "aliases": ["RTIC", "rtic"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 782570513, "item_id": 48910657, "url": "https://news.ycombinator.com/item?id=48910657", "by": "westurner", "date": "2026-07-14", "stance": "recommend", "quote": "Just rtic, cortex-m-rt, and nrf52833-hal (for micro:bit v2) might be sufficient", "excerpt": "Jupyter-rtc is built on y.js too. There's a sqlite CRDT: TODO Notes on sandboxing agents: amla sandbox, agentvm, bwrap at least; debugging mcp servers, and signing agent traces in a standard format: https://news.ycombinator.com/item?id=48893850 -- Can juggler: Design and verify a guitar effect pedals and a wavetable synth with JUCE on a low power chip? JUCE on embedded controllers; Rust embedded RTOS-like features, a", "context": "", "use_case": "", "switched_from": "", "story": null}, {"id": 780449984, "item_id": 48778124, "url": "https://news.ycombinator.com/item?id=48778124", "by": "budro", "date": "2026-07-03", "stance": "recommend", "quote": "RTIC [2] has some really neat stuff going on", "excerpt": "There's a Joel On Software post [1] in the same vein as this, which totally changed the way I think about writing software. You should aim to write software which can be verified locally with the smallest window of context. It's informed a lot of my decisions around linters, static analyzers, assertions, etc. I'm always looking for assertions that narrow state and reduce the number of lines you need to read to verify", "context": "", "use_case": "Embedded real-time concurrency", "switched_from": "", "story": "Local Reasoning for Global Properties"}, {"id": 744792561, "item_id": 46549535, "url": "https://news.ycombinator.com/item?id=46549535", "by": "bschwindHN", "date": "2026-01-08", "stance": "recommend", "quote": "if Embassy and others (like RTIC) can keep up the momentum", "excerpt": "Is it _that_ hard? No. Is writing assembly _that_ hard? Also no. It's simple, but not ergonomic and takes time. In C or \"regular\" embedded Rust, if I want to compose several tasks together, while sleeping the CPU core while waiting on interrupts, I need to scatter global variables over the code, and write custom state machines for all the \"yield\" points in my code. Oh and then requirements come in later and I need to", "context": "", "use_case": "", "switched_from": "", "story": "Embassy: Modern embedded framework, using Rust and async"}, {"id": 744775328, "item_id": 46548458, "url": "https://news.ycombinator.com/item?id=46548458", "by": "mrdataesq", "date": "2026-01-08", "stance": "recommend", "quote": "Another reason why async Rust is great: https://rtic.rs/", "excerpt": "Another reason why async Rust is great: https://rtic.rs/ \"The hardware accelerated Rust RTOS\" -- it can use your interrupt controller as a scheduler.", "context": "", "use_case": "Embedded real-time scheduling", "switched_from": "", "story": "Embassy: Modern embedded framework, using Rust and async"}, {"id": 739591600, "item_id": 46224475, "url": "https://news.ycombinator.com/item?id=46224475", "by": "QuiEgo", "date": "2025-12-10", "stance": "recommend", "quote": "things like https://github.com/rtic-rs/rtic", "excerpt": "FWIW teaching it critical sections is dead simple, and likely already done for you. Ex cortex M: https://github.com/rust-embedded/cortex-m/blob/master/cortex-m/src/critical_section.rs You can look at asynch and things like https://github.com/rtic-rs/rtic and https://github.com/embassy-rs/embassy for common embedded patterns. You handle DMA the same way as on any other system - e.x. you mark the memory as system/uncac", "context": "", "use_case": "", "switched_from": "", "story": "Rust in the kernel is no longer experimental"}]}], "caveats": [], "who": [], "tags": [], "use_cases": ["embedded rust concurrency framework", "embedded real-time concurrency", "embedded framework", "embedded real-time scheduling"], "compared": [{"slug": "embassy", "name": "Embassy", "co": 4, "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": 4}, {"url": "https://news.ycombinator.com/item?id=49321717", "title": "A 3rd World Embedded Engineer Responds to \"RISC-V They Should Have Known Better\"", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48883305", "title": "item 48883305", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48739140", "title": "Local Reasoning for Global Properties", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46213585", "title": "Rust in the kernel is no longer experimental", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"recommend": 1}, "2026-01": {"recommend": 2, "compare": 1}, "2026-02": {}, "2026-03": {}, "2026-04": {}, "2026-05": {}, "2026-06": {}, "2026-07": {"recommend": 2}, "2026-08": {"neutral": 1}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 789173120, "item_id": 49323320, "url": "https://news.ycombinator.com/item?id=49323320", "by": "topspin", "date": "2026-08-16", "stance": "neutral", "quote": "bare-metal, real-time, hardware-accelerated \"Fearless Concurrency,\" on an MCU with no RTOS![1]", "excerpt": "Beautiful. I read the \"They Should Have Known Better\" article and forgot it. I've seen this before. I know it's hot air and does not matter, and I can't afford to worry about things that don't matter. When I say I've seen this before, I'm talking about ancient history: controversies so old and so laughable that they've been forgotten. When, for example, AMD handed the world AMD64/X86_64, the same things were said: fr", "context": "", "use_case": "embedded Rust concurrency framework", "switched_from": "", "story": "A 3rd World Embedded Engineer Responds to \"RISC-V They Should Have Known Better\""}, {"id": 782570513, "item_id": 48910657, "url": "https://news.ycombinator.com/item?id=48910657", "by": "westurner", "date": "2026-07-14", "stance": "recommend", "quote": "Just rtic, cortex-m-rt, and nrf52833-hal (for micro:bit v2) might be sufficient", "excerpt": "Jupyter-rtc is built on y.js too. There's a sqlite CRDT: TODO Notes on sandboxing agents: amla sandbox, agentvm, bwrap at least; debugging mcp servers, and signing agent traces in a standard format: https://news.ycombinator.com/item?id=48893850 -- Can juggler: Design and verify a guitar effect pedals and a wavetable synth with JUCE on a low power chip? JUCE on embedded controllers; Rust embedded RTOS-like features, a", "context": "", "use_case": "", "switched_from": "", "story": null}, {"id": 780449984, "item_id": 48778124, "url": "https://news.ycombinator.com/item?id=48778124", "by": "budro", "date": "2026-07-03", "stance": "recommend", "quote": "RTIC [2] has some really neat stuff going on", "excerpt": "There's a Joel On Software post [1] in the same vein as this, which totally changed the way I think about writing software. You should aim to write software which can be verified locally with the smallest window of context. It's informed a lot of my decisions around linters, static analyzers, assertions, etc. I'm always looking for assertions that narrow state and reduce the number of lines you need to read to verify", "context": "", "use_case": "Embedded real-time concurrency", "switched_from": "", "story": "Local Reasoning for Global Properties"}, {"id": 744811076, "item_id": 46550692, "url": "https://news.ycombinator.com/item?id=46550692", "by": "jpgvm", "date": "2026-01-08", "stance": "compare", "quote": "I have also tried RTIC but I decided to keep going with Embassy because I like the async ergonomics more", "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 framework", "switched_from": "", "story": "Embassy: Modern embedded framework, using Rust and async"}, {"id": 744795778, "item_id": 46549736, "url": "https://news.ycombinator.com/item?id=46549736", "by": "bschwindHN", "date": "2026-01-08", "stance": "compare", "quote": "Here's a good technical writeup on latency and jitter (latency standard deviation) for interrupts when it comes to Embassy, FreeRTOS, and RTIC", "excerpt": "Here's a good technical writeup on latency and jitter (latency standard deviation) for interrupts when it comes to Embassy, FreeRTOS, and RTIC: https://tweedegolf.nl/en/blog/65/async-rust-vs-rtos-showdown Obviously if you're working on something truly hard real-time you probably wouldn't be reaching for these tools to begin with, but for the average embedded project it seems you will enjoy quite good latency and jitt", "context": "", "use_case": "", "switched_from": "", "story": "Embassy: Modern embedded framework, using Rust and async"}, {"id": 744792561, "item_id": 46549535, "url": "https://news.ycombinator.com/item?id=46549535", "by": "bschwindHN", "date": "2026-01-08", "stance": "recommend", "quote": "if Embassy and others (like RTIC) can keep up the momentum", "excerpt": "Is it _that_ hard? No. Is writing assembly _that_ hard? Also no. It's simple, but not ergonomic and takes time. In C or \"regular\" embedded Rust, if I want to compose several tasks together, while sleeping the CPU core while waiting on interrupts, I need to scatter global variables over the code, and write custom state machines for all the \"yield\" points in my code. Oh and then requirements come in later and I need to", "context": "", "use_case": "", "switched_from": "", "story": "Embassy: Modern embedded framework, using Rust and async"}, {"id": 744775328, "item_id": 46548458, "url": "https://news.ycombinator.com/item?id=46548458", "by": "mrdataesq", "date": "2026-01-08", "stance": "recommend", "quote": "Another reason why async Rust is great: https://rtic.rs/", "excerpt": "Another reason why async Rust is great: https://rtic.rs/ \"The hardware accelerated Rust RTOS\" -- it can use your interrupt controller as a scheduler.", "context": "", "use_case": "Embedded real-time scheduling", "switched_from": "", "story": "Embassy: Modern embedded framework, using Rust and async"}, {"id": 739591600, "item_id": 46224475, "url": "https://news.ycombinator.com/item?id=46224475", "by": "QuiEgo", "date": "2025-12-10", "stance": "recommend", "quote": "things like https://github.com/rtic-rs/rtic", "excerpt": "FWIW teaching it critical sections is dead simple, and likely already done for you. Ex cortex M: https://github.com/rust-embedded/cortex-m/blob/master/cortex-m/src/critical_section.rs You can look at asynch and things like https://github.com/rtic-rs/rtic and https://github.com/embassy-rs/embassy for common embedded patterns. You handle DMA the same way as on any other system - e.x. you mark the memory as system/uncac", "context": "", "use_case": "", "switched_from": "", "story": "Rust in the kernel is no longer experimental"}]}