diff options
| author | Emil Fresk <emil.fresk@gmail.com> | 2024-01-29 20:56:15 +0100 |
|---|---|---|
| committer | Emil Fresk <emil.fresk@gmail.com> | 2024-02-27 12:22:18 +0100 |
| commit | 27985009579e82673dcaf7a6a715fcf50c184863 (patch) | |
| tree | 8ae8f1cc9e8c6d2c2581467a4a537d8b84ae6552 /book/en/src/preface.md | |
| parent | d2e84799c743eeb4b827d8da576be45ed43d6ece (diff) | |
Make RTIC 2 work on stable by using `main`'s stack as an allocator
Diffstat (limited to 'book/en/src/preface.md')
| -rw-r--r-- | book/en/src/preface.md | 2 |
1 files changed, 0 insertions, 2 deletions
diff --git a/book/en/src/preface.md b/book/en/src/preface.md index 7c015ee..2c8c31e 100644 --- a/book/en/src/preface.md +++ b/book/en/src/preface.md @@ -141,8 +141,6 @@ Asynchronous programming in various forms are getting increased popularity and l The Rust standard library provides collections for dynamically allocated data-structures which are useful to manage execution contexts at run-time. However, in the setting of resource constrained real-time systems, dynamic allocations are problematic (both regarding performance and reliability - Rust runs into a *panic* on an out-of-memory condition). Thus, static allocation is the preferable approach! -RTIC provides a mechanism for `async`/`await` that relies solely on static allocations. However, the implementation relies on the `#![feature(type_alias_impl_trait)]` (TAIT) which is undergoing stabilization (thus RTIC v2.x currently requires a *nightly* toolchain). Technically, using TAIT, the compiler determines the size of each execution context allowing static allocation. - From a modelling perspective `async/await` lifts the run-to-completion requirement of SRP, and each section of code between two yield points (`await`s) can be seen as an individual task. The compiler will reject any attempt to `await` while holding a resource (not doing so would break the strict LIFO requirement on resource usage under SRP). So with the technical stuff out of the way, what does `async/await` bring to the table? |
