From 5d5ae1b54a756a8ee168ee911a09822196a41590 Mon Sep 17 00:00:00 2001 From: "Willem Vanhulle\" (aider)" Date: Fri, 9 May 2025 12:06:16 +0200 Subject: [PATCH 1/3] feat: combine functional async code examples --- content/blog/2025-03-18_func-async.md | 368 +++++++++----------------- 1 file changed, 122 insertions(+), 246 deletions(-) diff --git a/content/blog/2025-03-18_func-async.md b/content/blog/2025-03-18_func-async.md index 35ed7f5..28be181 100644 --- a/content/blog/2025-03-18_func-async.md +++ b/content/blog/2025-03-18_func-async.md @@ -11,18 +11,18 @@ tags = ["functional", "asynchronous", "declarative", "Rust", "Stream", "Sink"] Let's get started with some definitions you may have heard about already. -**Declarative programming** is when you write code and make sure that the inputs and outputs of sub-modules behave predictably according to fixed invariants. Logic or constraint solver languages like Prolog or [ManyWorlds](https://manyworlds.site/) (written by my friend [Jo Devriendt](https://jodevriendt.com)) are part of this family. +**Declarative programming** is when you write code and make sure that the inputs and outputs of sub-modules behave predictably according to fixed invariants. Logic or constraint solver languages like Prolog or [ManyWorlds](https://manyworlds.site/) (written by my friend [Jo Devriendt](https://jodevriendt.com)) are part of this family. -**Functional programming** is building the majority of your code from wel-defined and side-effect-free functions. It is a sub-set of declarative programming. Languages like ML, Haskell, OCaml, Lisp are part of this family. They are all extensions of Lambda Calculus. +**Functional programming** is building the majority of your code from well-defined and side-effect-free functions. It is a sub-set of declarative programming. Languages like ML, Haskell, OCaml, Lisp are part of this family. They are all extensions of Lambda Calculus. -**Asynchronous programming** is a kind of programming where you not only have functions that evaluate immediately, but there are also functions that _may evaluate in the future_. Such functions are called asynchronous functions. JavaScript, C# and Rust are examples. +**Asynchronous programming** is a kind of programming where you not only have functions that evaluate immediately, but there are also functions that _may evaluate in the future_. Such functions are called asynchronous functions. JavaScript, C#, and Rust are examples. -In the following I will show how declarative, functional and asynchronous programming can be combined in the Rust programming language with the semi-standard library crate `futures`. +In the following, I will show how declarative, functional, and asynchronous programming can be combined in the Rust programming language with the semi-standard library crate `futures`. ## Use-cases -Normal imperative asynchronous programming contains a combination of the `async`, `await` keywords with imperative keywords like `while`, `loop` or `continue`. +Normal imperative asynchronous programming contains a combination of the `async`, `await` keywords with imperative keywords like `while`, `loop`, or `continue`. To illustrate where functional asynchronous programming would be useful, I will give a few examples. @@ -35,79 +35,83 @@ One approach that you might take when dealing with different sub-modules in a la This could look like this: ```rust -let (_, in_receiver) = watch::channel(1); -let (out_sender, _) = broadcast::channel(123); +let (tx, rx) = channel::new(); +let (broadcast_tx, broadcast_rx) = broadcast_channel(); let forward_task = spawn(async move { - loop { - let result = in_receiver.changed().await; - if let Err(e) = result { break }; - let input = *in_receiver.borrow(); - let output = get_output(input); - out_sender.send(output); - } + loop { + let result = rx.recv().await; + match result { + Ok(input) => { + let output = get_output(input); + broadcast_tx.send(output).unwrap(); + } + Err(_) => break, + } + } }); ``` -In this example I use "watch" and "broadcast" channels from the Tokio crate. +In this example, I use "watch" and "broadcast" channels from the Tokio crate. If we would translate this to a functional asynchronous version, we get: ```rust -let in_receiver = WatchStream::new(in_receiver); -let out_sender = BroadcastSink::new(out_sender); +let (sender, receiver) = channel::new(); +let (broadcast_sender, broadcast_receiver) = broadcast_channel(); let forward_task = spawn( - in_receiver - .map(Result::ok) - .filter_map(ready) - .map(get_output) - .map(Ok) - .forward(out_sender) -) + async move { + receiver + .map(Result::ok) + .filter_map(|result| result.ok()) + .map(get_output) + .forward(broadcast_sender) + } +); ``` -So what happened during the translation? +So what happened during the translation? -- Replace the channel receiver with an implementor of the trait `Stream` from `futures`. A **stream** is just something to produces data at possibly irregular intervals. A channel receiver is an example of this. -- Replace the channel sender with a type implementing the `Sink` trait from `futures`. A **sink** is something that receives data, agnostic from the transport or channel used. An implementor of the `Sink` is something in which you can put data and flush it. +- Replace the channel receiver with an implementor of the trait `Stream` from `futures`. A **stream** is just something that produces data at possibly irregular intervals. A channel receiver is an example of this. +- Replace the channel sender with a type implementing the `Sink` trait from `futures`. A **sink** is something that receives data, agnostic from the transport or channel used. An implementor of the `Sink` is something in which you can put data and flush it. - **Redirect** the stream into the sink with `forward`. This process could be seen as "flushing" the stream into the sink. However, the `flush` name is already taken by the `flush` method of the `Sink` trait. -By shifting the focus from input, intermediate and output variables to transformations with `map` we replaced N imperative variables in the loop by N-1 **functional** closures passed to `map`. You could still argue that the variables did not really disappear, but they are now hidden in the closures and the code is more readable. +By shifting the focus from input, intermediate, and output variables to transformations with `map`, we replaced N imperative variables in the loop by N-1 **functional** closures passed to `map`. You could still argue that the variables did not really disappear, but they are now hidden in the closures and the code is more readable. -_Remark: JavaScript frameworks for building web-apps usually call `sink` a "signal" or "writable observable". The `gstreamer-rs` crate also has "sinks" but they are not directly related to the "sinks" in `futures`_ +_Remark: JavaScript frameworks for building web-apps usually call `sink` a "signal" or "writable observable". The `gstremar-rs` crate also has "sinks" but they are not directly related to the "sinks" in `futures`_ ### Reactive UI input -Another place where functional asynchronous programming is useful, is on the frontend. +Another place where functional asynchronous programming is useful is on the frontend. An imperative version might look like this: ```rust let mut target_temperature = 21.0; slider.on_slide(move |new_t| { - if acceptable(new_t) { - let new_target = some_op(new_t); - target_temperature = new_target; - } + if acceptable(new_t) { + let new_target = some_op(new_t); + target_temperature = new_target; + } }); ``` Although this particular example is small, writing large amounts of a large codebase in this style could introduce problems: -- It introduces a lot of indentation. A developer who is new to the codebase might feel intimidated by the indentation. After careful consideration he might decide add his own logic on top of the existing code en then split the whole thing up in smaller chunks, thinking he improves readability, but actually breaking sequential readability. -- By using an `if` statement you also create multiple branches. The reader or maintainer has to know that the `else` branch is irrelevant in this particular case. A call to `StreamExt::filter` already conveys the message that the `true` branch is the only one that matters. -- A maintainer also has to keep track of one more variable `new_t` (the argument to the closure). The naming of "intermediate" variables (variables for data that appears before or after a computation) is hard and names like `old_t`, `new_t` or `updated_t` are not helpful for the reader. +- It introduces a lot of indentation. A developer who is new to the codebase might feel intimidated by the indentation. After careful consideration, he might decide to add his own logic on top of the existing code and then split the whole thing up into smaller chunks, thinking he improves readability, but actually breaking sequential readability. +- By using an `if` statement, you also create multiple branches. The reader or maintainer has to know that the `else` branch is irrelevant in this particular case. A call to `StreamExt::filter` already conveys the message that the `true` branch is the only one that matters. +- A maintainer also has to keep track of one more variable `new_t` (the argument to the closure). The naming of intermediate variables (variables for data that appears before or after a computation) is hard, and names like `old_t`, `new_t`, or `updated_t` are not helpful for the reader. The imperative version can be translated to a functional version like this: ```rust let mut target_temperature = MySink::new(21.0); slider.value - .filter(acceptable) - .map(some_op) - .forward(target_temperature); + .filter(acceptable) + .map(some_op) + .forward(target_temperature); ``` The `MySink::new(21.0)` is a call to the constructor of `MySink`, an imaginary object that implements the `Sink` trait. @@ -115,44 +119,43 @@ The `MySink::new(21.0)` is a call to the constructor of `MySink`, an imaginary o - ### Clear benefits -Instead of exposing variables names for input, intermediate and output variables, we omit them and focus on naming the transformations themselves. This way of dealing with computation is closer to how we communicate in natural language using verbs. +Instead of exposing variables names for input, intermediate, and output variables, we omit them and focus on naming the transformations themselves. This way of dealing with computation is closer to how we communicate in natural language using verbs. -Another benefit of the functional approach is that it does not rely on a concrete type. If you are stuck in the middle of writing a module to provides a `Stream` but you also have to write something that consumes it, you can just continue with the last one. +Another benefit of the functional approach is that it does not rely on a concrete type. If you are stuck in the middle of writing a module to provide a `Stream` but you also have to write something that consumes it, you can just continue with the last one. ```rust struct MyStream { - ... + // ... } impl MyStream { - fn new() -> Self { - unimplemented!() - } + fn new() -> Self { + unimplemented!() + } } impl Stream for MyStream { - type Item = i32; - fn poll_next(self) -> Poll> { - unimplemented!() - } + type Item = i32; + fn poll_next(self) -> Poll> { + unimplemented!() + } } ``` -You could then already start with another module that consumes `MyStream`. But instead of directly depending on `MyStream`, you can just depend on the `Stream` trait. This way, you can write your code without having to know the implementation details of `MyStream`. +You could then already start with another module that consumes it. But instead of directly depending on `MyStream`, you can just depend on the `Stream` trait. This way, you can write your code without having to know the implementation details of `MyStream`. ```rust struct MyConsumer { - ... + // ... } impl MyConsumer { - fn consume(stream: impl Stream) { - // We can start already! - ... - } + fn consume(stream: impl Stream) { + // We can start already! + // ... + } } ``` @@ -160,10 +163,10 @@ The important part is `impl Stream`. This means that the `consume` f We have separated the problem into two levels of abstraction that can be dealt with independently and simultaneously: -- The **trait**-level: describes the invariants and properties of inputs and outputs. Working on this level in Rust is accomplished using the `impl Trait` syntax. +- The **trait** level: describes the invariants and properties of inputs and outputs. Working on this level in Rust is accomplished using the `impl Trait` syntax. - The **concrete type** level: describes the transport, the speed, the efficiency, the logic. For a concrete type, you will have to either: - - Pick an implementor from a public crate (like `futures` or `tokio`). - - Write your own implementor of the `Stream` trait. This is a bit more work, but it is not that hard. I will show you how to do this later on. + - Pick an implementor from a public crate (like `futures` or `tokio`). + - Write your own implementor of the `Stream` trait. This is a bit more work, but it is not that hard. I will show you how to do this later on. As of April 2025, the traits `Stream` and `Sink` are used universally by crates published on [crates.io](crates.io). If you make use of these traits, which describe a common behavior, and implement them for your own types, you make your code more interoperable with the rest of the world. @@ -172,11 +175,11 @@ As of April 2025, the traits `Stream` and `Sink` are used universally by crates **Important**: It is important to know while using Rust that it is not required to know everything about `Pin` or `Poll`. You can just use the high-level methods provided by the standard library and `futures` crate. -## Streams +### Streams ### Relationship with iterators -The main thing that is added in functional asynchronous program is the `Stream` trait. You are supposed to use it everywhere. There are other things of course, but this is the main concept that you will need. +The main thing that is added in functional asynchronous programming is the `Stream` trait. You are supposed to use it everywhere. There are other things of course, but this is the main concept that you will need. So what is a **stream**? It is just something that implements the `Stream` trait from the `futures` crate. It nothing more than an asynchronous iterator. @@ -186,39 +189,34 @@ A rough conceptual definition of a stream would be: First, remember that the life-time of an iterator (a normal synchronous blocking one) looks like this: -| T | create | iterate | yield | -| --- | ---------- | ----------- | --------- | -| 1 | `(1..=10)` | | | -| 2 | | `next()` | | -| 3 | | | `Some(1)` | -| 4 | | `next()` | | -| 5 | | ... | | -| 6 | | `next()` | | -| 7 | | | `None` | -| 8 | | `next()` | | -| 9 | | | `Some(2)` | +| T | create | iterate | yield | +| --- | ---------- | ----------- | --------- | +| 1 | `(1..=10)` | | | +| 2 | | `next()` | | +| 3 | | | `Some(1)` | +| 4 | | `next()` | | +| 5 | | ... | | +| 6 | | `next()` | | +| 7 | | | `None` | +| 8 | | `next()` | | +| 9 | | | `Some(2)` | -Notice that calling `next` after the iterator yielded `None` may result in a new `Some`. If you do not want that, apply `fuse` to the iterator to obtain a `FusedIterator` that will keep yielding `None` after the first `None`. +Notice that calling `next` after the iterator yielded `None` may result in a new `Some`. If you do not want that, apply `fuse` to the iterator to obtain a `FusedIterator` that will keep yielding `None` after the first `None`. The life-time of a stream/async iterator during usage looks like this: -| **T** | **Creation** | **Iteration** | **Yielded** | -| --- | ----------- | ----------- | --------- | -| 1 | `St::new()` | | | -| 2 | | `next()` | | -| 3 | | `await` | | -| 4 | | | `Some(1)` | -| 5 | | `next()` | | -| 6 | | ... | | -| 7 | | `await` | | -| 8 | | | `Some(2)` | -| 9 | | `next()` | | -| 10 | | `await` | | -| 11 | | | `None` | -| 12 | | `next()` | | -| 13 | | `await` | | -| 14 | | | `Some(3)` | - +| **T** | **Creation** | **Iteration** | **Yielted** | +| --- | ----------- | ----------- | --------- | +| 1 | `St::new()` | | | +| 2 | | `next()` | | +| 3 | | `await` | | +| 4 | | | `Some(1)` | +| 5 | | `next()` | | +| 6 | | ... | | +| 7 | | `await` | | +| 8 | | | `Some(2)` | +| 9 | | `next()` | | +| 10 | | | `None` | The lifecycle of an async iterator (stream) is longer than a normal iterator since it requires an `await` before a value is yielded. @@ -226,7 +224,7 @@ A `FusedStream` is the async analogue of `FusedIterator` and will yield `None` a ```rust pub trait FusedStream: Stream { - fn is_terminated(&self) -> bool; + fn is_terminated(&self) -> bool; } ``` @@ -234,18 +232,6 @@ Usually a `FusedStream` will yield `Poll::Ready(None)` after the first `Poll::Re -### `Stream`s in the wild - -The first place to look for `Stream`s is in the `futures::channel` module. It contains a concrete implementation of channels with receivers that implement `Sink` and senders that implement `Stream`. - -If you need more advanced types of channels, you can look in the [`postage`](https://crates.io/crates/postage) or `tokio` crates. - -**Important**: The channels in `tokio` are not directly usable with the `futures` crate. You need to: - -- wrap the receivers in wrappers provided by `tokio-stream` (with the `sync` crate feature enabled) to get a `Stream` and -- wrap the senders in a wrapper `PollSender` provided by `tokio-util` to get a `Sink`. - - ### Consuming streams _**Remark**: As of April 2025, all the methods you need for streams are in [`StreamExt`](https://docs.rs/futures/latest/futures/stream/trait.StreamExt.html) from `futures`. For the rest of this article, almost all `Stream`-related methods come from this trait._ @@ -255,7 +241,7 @@ The simplest case would be the case where you just want to perform an operation ```rust let mut x = 0; let fut = stream::repeat(1).take(3).for_each(|item| { - x += item; + x += item; future::ready(()) }); fut.await; @@ -265,8 +251,6 @@ assert_eq!(x, 3); Observe that the argument for the closure in `for_each` does not take an `Option`. The stream returned by `for_each` is fused; it is an implementor of `FusedStream`. A `FusedStream` is a special type of stream that terminates as soon as one item yielded by the input stream is `None`. -Also notice that the output of the closure has to be a future. But it does not need to await anything, so we use the `ready` future, the simplest possible future without any await points (and consequently, also `Unpin`, see other blog posts). - **Important**: - The futures that are evaluated while consuming the `for_each` will not overlap in execution. They will happen sequentially. @@ -334,83 +318,19 @@ Notice the `ready` function. This function maps primitive Rust values __into the _**Remark**: Don't try to implement `ready` yourself, just import it from `std::future::ready`._ -### Why `ready`? (optional intermezzo) - -Sometimes the error messages emitted compiler may steer you on the wrong path. For example, the following would be an `Unpin` stream and the compiler will not allow you to call the `next` method on it: - -```rust -let output_stream = stream.filter(|x| async move { x % 2 == 0}); - -// Compiler error: `output_stream` does not implement `Unpin`! -assert_eq!(output_stream.next().await, Some(2)); -``` - -The compiler messages may lead you to pinning the whole stream or the closure on the heap with `Box::pin` and your hacky solution will look like some of the following: - -```rust -stream.filter(|x| Box::pin(async move { x % 2 == 0})); -Box::pin(stream.filter(|x| async move { x % 2 == 0})); -stream.filter(|x| async move { x % 2 == 0}).boxed(); -``` - -However, this is not necessary and involves **unnecessary heap allocations**. Use the `std::future::ready` function from above instead. - -Because the output of the closure `ready(x % 2 == 0)` is an `Unpin` `Future`, the closure `|x| ready(x % 2 == 0)` itself is also `Unpin`. - -Remember from the "auto-trait" rules of Rust that auto-traits such as `Unpin` are automatically implemented for all `struct`s for which all fields implement `Unpin`. This implies that if the closure is `Unpin`, the `Filter` stream will also be `Unpin`. - -Each time you write `stream.filter(|x| {...})`, you create a new stream that consumes the input `stream`. Internally, `.filter` constructs a `Filter` which looks (simplified) as follows: - -```rust -pub struct Filter where St: Stream { - stream: St, - f: F, - pending_fut: Option, - pending_item: Option, -} -``` - -The resulting stream needs to keep in memory a reference to the closure (so that it can map future items). The easiest way to have such a reference is to just own it. So in practice, the output `Filter` stream is a struct with an extra field `f` for storing the closure. - -_Remark: The closure `f` does not have to be a real capturing closure, it can be any type that implements the `Fn` trait which includes function pointers or function items._ - - -### Filter map - -When you are working with a stream and need to extract some information from it, but this extraction is fallible, you can use `filter_map`. - -The `filter_map` operator: -- takes a stream and a closure that returns an option -- maps each element of the input stream to an option -- removes any `None` values in the output and unwrap all the `Some` values. - - - -```rust -let stream = stream::iter(1..=10); -let events = stream.filter_map(|x| async move { - if x % 2 == 0 { Some(x + 1) } else { None } -}); -``` - -In case your closure returns `Result`, you can pass `Result::ok` to the `filter_map` operator to convert each `Result` item into an `Option` item. - -_**Important**: Don't forget to use the `try_*` operators from [`futures::TryStreamExt`](https://docs.rs/futures/latest/futures/stream/trait.TryStreamExt.html). I have not used them myself yet, but they seems quite useful when dealing with fallible streams._ - - ### Boolean operators The `futures` crate also provides analogues for the boolean operators shipped with the standard library `Iterator` such as `any`, `all`, ... : ```rust -let number_stream = stream::iter(0..10); +let number_stream = stream::repeat(1).map(|n| n); let less_then_twenty = number_stream.all(|i| async move { i < 20 }); assert_eq!(less_then_twenty.await, true); ``` -Notice here that we don't have to "pin" the `less_than_twenty` stream, because `Unpin` is not a requirement for `all`. +Notice here that we don't have to "pin" the `less_then_twenty` stream, because `Unpin` is not a requirement for `all`. -## `Sink`s +### Sinks ### Dual of streams @@ -420,32 +340,28 @@ Up until now we have only seen detailed usage of the `Stream` trait. But the opp The different life-cycle stages of a `Sink` can be summarized as follows: - - - -| stage | name | method | meaning | remark | +| stage | name | method | meaning | remark | | -------- | ---------- | ------------------ | ---------------------- | --------------- | -| creation | new | | Initial state | | -| send | ready | `ready().await` | Wait until cache ready | may be full | -| send | start send | `start_send(item)` | Load into cache | not actual send | -| send | flush | `flush().await` | Send items from cache | | -| close | close | `close().await` | Close the `Sink` | not automatic | +| creation | new | | Initial state | | +| send | ready | `ready().await` | Wait until cache ready | may be full | +| send | start send | `start_send(item)` | Load into cache | not actual send | +| send | flush | `flush().await` | Send items from cache | | +| close | close | `close().await` | Close the `Sink` | not automatic | -The analogue of the map function for streams `StreamExt::map` for `Sink`s is the sink operator `SinkExt::with`. Instead mapping the output items of a stream, it applies a mapping function to all items that are going to be flushed into the sink. +The analogue of the map function for streams `StreamExt::map` for `Sink`s is the sink operator `SinkExt::with`. Instead mapping the output items of a stream, it applies a mapping function to all items that are going to be flushed into the sink. -If a `Sink` becomes full easily and you depend on the concrete underlying type (such as for example a sink derived from a particular type of sender of a Tokio channel), you can allocate an extra buffer with `StreamExt::buffer()` to cache elements that don't fit in the sink. +If a `Sink` becomes full easily and you depend on the concrete underlying type (such as for example a sink derived from a particular type of sender of a Tokio channel), you can allocate an extra buffer with `StreamExt::buffer()` to cache elements that don's fit in the sink. _Remark: The `Sink` trait is not as common as the `Stream` trait in the crates that I have used. It is, however, very easy to implement yourself._ - ### Flushing a `Stream` into a `Sink` A `Sink` may appear in combination with a `Stream`. In that case, it is possible to create a fully functional pipeline that takes a stream and flushes it into a sink. This is done with the `forward` method of the `Sink` trait. ```rust -let (output,_) = tokio::sync::mpsc::channel(); -let output = tokio_util::PollSender::new(output); +let (output,_) = channel::new(); +let output = PollSender::new(output); let input = stream::repeat(1).map(Ok); input.forward(output).await.unwrap(); @@ -460,19 +376,15 @@ Important: The `forward` method will also close the `Sink` upon termination of the input stream. If you don't want to close the `Sink` after stream returned `None`, use the sink operator `SinkExt::send_all`. +When you have one input stream and know `n` output sinks **at compile-time**, you can use `StreamExt::fanout`. Otherwise you will need a mechanism to `Clone` the input stream at run-time. - -When you have one input stream and know `n` output sinks **at compile-time**, you can use `StreamExt::fanout`. Otherwise you will need a mechanism to `Clone` the input stream at run-time. Cloning of streams will be discussed later on. - -## Merging and splitting - - +### Splitting streams ### Collapsing an iterable of streams -Given an iterable of streams, you can collapse the whole iterable into one stream with [`select_all`](https://docs.rs/futures/latest/futures/stream/fn.select_all.html). This function will just emit the stream items from all the streams (assuming the iterator is finite) as they arrive. +Given an iterable of streams, you can collapse the whole iterable into one stream with `select_all`. This function will just emit the stream items from all the streams (assuming the iterator is finite) as they arrive. -A simple example would look like: +A simple example would look like this: ```rust let stream_a = stream::repeat(1); @@ -483,66 +395,30 @@ let merged = stream::select_all([stream_a, stream_b]); In practice, you would typically pass large vectors, compile-time-sized arrays or other iterable collections to the `select_all` function. +### Filtering streams -Often, you will want to merge (a lot of) streams that come from a different underlying transport. This might be the case, for example, when you have input streams that are derived from channel receivers from different crates, internal or external. In that case, the input iterable of streams for `select_all` needs to be an interable over boxed stream trait objects `Pin>`. - -**Remark**: A special case of `select_all` for two input streams is the `merge` function from the Tokio helper crate `tokio-stream`. You can use it if you want, but the `select_all` function does the same thing and is more powerful and general. - -### Tracking origin stream - -If you want to keep track of the origin of the values in the merged stream, the simplest solution you can come up will probably look like this: - -```rust -let stream_a = stream::repeat(1).map(|n| ('a', 1)); -let stream_b = stream::repeat(2).map(|n| ('b', 2)); - -let merged_tagged = stream::select_all([stream_a, stream_b]); -``` - -This is essentially just a homogeneous merge with `select_all` preceded by tagging the items of each source stream with a unique identifier for the source stream. - -**Remark**: in this simple case you might want to consider a simple custom combinator (see other posts on how to build one) or the one provided by `tokio_stream::MergeMap`. - - -### Inhomogeneous stream merging - -If you feel like merging two streams with a different item type, you are probably doing something wrong. It is quite rare that you would want to wait for two items to be available from both streams (which are in practice usually emitted at unrelated times). However, it is possible using the `zip` function from the `futures` crate. +You can filter a stream of numbers to only keep the even numbers as follows: ```rust -let stream1 = stream::iter(1..=3); -let stream2 = stream::iter(5..=10); +use std::future::ready; +use futures::{stream, StreamExt}; -let vec = stream1.zip(stream2) - .collect::>() - .await; -assert_eq!(vec![(1, 5), (2, 6), (3, 7)], vec); +let stream = stream::iter(1..=10); +let events = stream.filter(|x| ready(x % 2 == 0)); ``` +Notice the `ready` function. This function maps primitive Rust values __into the async world__. The output of `ready` is a minimal `Future` that can be moved: it is **`Unpin`**. -### Splitting streams - -What if you need to use the same output of a stream in several places? You can do it with one of the following: - -- Creating a broadcast channel, send the clone-able items into the sender and tell many async helper tasks (or threads) to actively pull each receiver. This would be an imperative approach and requires extra heap allocations for each task and output. -- Create a special kind of output clone-able stream that works cooperatively with any other sibling streams and wakes them up when necessary. This is a more functional approach and may require less heap allocations. It may also allow you to drop any dependency on a particular async runtime. - -In case you go for the last approach, there are a couple of crates available on [crates.io](crates.io) that turn a stream with clone-able items into a clone-able stream with the same items: - +_**Remark**: Don't try to implement `ready` yourself, just import it from `std::future::ready`._ -- [`clone-stream`](https://github.com/wvhulle/clone-stream): A library that I made in April 2025. It contains several tests and was benchmarked with thousands of clones. -- [`fork_stream`](https://crates.io/crates/fork_stream), slightly more complicated with a Waker queue. I tried something similar but then I moved away from tracking clones based on `Waker`s because it was hard to write unit tests for. -- [`shared_stream`](https://docs.rs/shared_stream/latest/shared_stream/): This crate uses a lot of `unsafe` Rust and does not contain tests. -- [`futures-rx`](https://docs.rs/futures-rx/latest/futures_rx/): contains a few useful primitives, inspired by the famous "RxJS" library. The primitive that could be useful for cloning streams is [`share`](https://docs.rs/futures-rx/latest/futures_rx/stream_ext/trait.RxExt.html#method.share). This method transforms a stream of items into a stream of references (which may, in turn, be cloned). +### Boolean operators -To use the my crate `clone-stream` you have to import the trait `ForkStream`, then you call `fork` on the input stream. Afterwards, you can clone the output stream of `fork` as much as you want. +The `futures` crate also provides analogues for the boolean operators shipped with the standard library `Iterator` such as `any`, `all`, ... : ```rust -use futures::{FutureExt, StreamExt, stream}; -use clone_stream::ForkStream; - -let un_clone_able_stream = stream::iter(0..10); -let clone_able_stream = un_clone_able_stream.fork(); -let mut cloned_stream = clone_able_stream.clone(); +let number_stream = stream::repeat(1).map(|n| n); +let less_then_twenty = number_stream.all(|i| async move { i < 20 }); +assert_eq!(less_then_twenty.await, true); ``` -In later posts I will show how the `clone-stream` works and the overall experience I had with implementing or creating your own `Stream` combinator (something that combines streams and returns a stream) in Rust. +Notice here that we don't have to "pin" the `less_then_twenty` stream, because `Unpin` is not a requirement for `all`. From 16a9bd92ebbb8ccea5f4812f17cda1f3784f60d0 Mon Sep 17 00:00:00 2001 From: Willem Vanhulle Date: Sat, 7 Jun 2025 16:40:34 +0200 Subject: [PATCH 2/3] Add debugger --- .gitignore | 1 + content/blog/2025-06-05_pico-debug.md | 103 ++++++++++++++++++++++++++ 2 files changed, 104 insertions(+) create mode 100644 content/blog/2025-06-05_pico-debug.md diff --git a/.gitignore b/.gitignore index d96e181..12c22fa 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ .env.* !.env.example .vscode +.aider* diff --git a/content/blog/2025-06-05_pico-debug.md b/content/blog/2025-06-05_pico-debug.md new file mode 100644 index 0000000..6306ee7 --- /dev/null +++ b/content/blog/2025-06-05_pico-debug.md @@ -0,0 +1,103 @@ ++++ +title = "Pico 2 as debugger" +description = "How to use the Raspberry Pi Pico 2 as a hardware debugger." +draft = false +weight = 7 +[taxonomies] +tags = [ "debug", "Raspberry Pi", "embedded", "Pico", "SWD", "declarative", "Rust", "probe-rs" ] ++++ + +On most popular microcontrollers used for educational purposes, there is already some hardware debugging support (also called a **hardware debug probe**) on the board itself, such as on the [Micro:bit](https://microbit.org/) or the [ESP32](https://www.espressif.com/en/products/socs/esp32). + +Having this debug probe allows you to debug the code running on the target Pico using GDB or other debugging tools. + +A debug probe comes in the form of a small secondary chip that can be used to debug the main microcontroller on the board. + +The Pico family of microcontrollers does not have this feature built-in. You have two options for debugging a Pico: + +* It is possible to turn a spare Raspberry Pico into a hardware debugging probe for another Pico. +* You buy (or borrow) an official Rasberry Pi hardware debug probe. +* You manually force the target into BOOTSELF mode and flash with `picotool`. In that case, you will not be able to debug as easily (you will need a serial monitor). + +In this workshop, we will pursue the first option. If you get stuck, feel free to ask for a pre-made hardware debugger. + +### Turning a Normal Pico into a Debugger Pico + +The Raspberry Pi Foundation provides images for Picos that can be flashed to turn a Pico into a hardware debugger. + +1. Download the latest `debugprobe_on_pico.uf2` flash image from the official [`debugprobe`](https://github.com/raspberrypi/debugprobe/releases)releases. +2. Attach the Pico to your laptop while holding the white BOOTSEL button. A mass storage device will appear in your file manager. It will be called something like `RPI-RP2`. +3. Drop the downloaded `.uf2` file onto the mass storage drive emulated by the Pico. Wait for a fraction of a second while the Pico unmounts and reboots as a fresh `debugprobe`. + +Now you have successfully made a cheap hardware debugging probe. + +### Wire Target to Debugger + +Let's make some aliases: + +* Assume **D** is the homemade debug probe (a Pico). +* Assume **T** is the target Pico. + +Right now, there is no cabling between the debug probe and the target Pico. The cables should be connected such that **D** can detect **T** over the SWD debugging protocol. + +***Important**: For this step, you need to have a JST-SH cable. You can find them on [Kiwi](https://www.kiwi-electronics.com/en/jst-sh-1mm-pitch-3-pin-to-male-headers-cable-100mm-long-19930), but they can be hard to find.* + +1. Plug the white connector of the JST cable into the SWD socket of **D**. + +2. Place **T** and **D** in parallel with their USB ports facing upwards (to prevent confusion). + +3. Connect the male jumper pins. The three male header pins from **T**'s JST cable should be connected to **D** as follows: + + * **T** left (yellow) \<-\> **D** pin 5 + * **T** middle (black) \<-\> **D** pin 3 + * **T** right (orange) \<-\> **D** pin 4 + + Instead of pin numbers, you can also use the pin names: + + * **T** SWCLK \<-\> **D** GP3 + * **T** SWDIO \<-\> **D** GP2 + * **T** GND \<-\> **D** GND + +4. Provide power to **T** using a single USB cable by forwarding power from **D**: + + * **T** GND pin 38 \<-\> **D** pin 38 (Connect ground) + * **T** VSYS pin 39 \<-\> **D** pin 39 (Connect power supply) + +*Remark: You can also connect **T** to **D** for UART communication. However, I have not needed it so far.* + +### Configure Flashing from Laptop + +There is still one step remaining: we have to configure our laptop's development environment to enable flashing (this applies to any microcontroller with an onboard or external debugger). + +1. Install `cargo-embed`, which is included in the `probe-rs` tool suite. + + ```bash + cargo install probe-rs-tools + ``` + +2. Verify that `cargo-embed` is available in your shell's `PATH` (`cargo-[CMD]` can be called with `cargo [CMD]`): + + ```bash + cargo embed --version + ``` + +3. Add `udev` rules for `probe-rs` as described in the [probe-rs documentation](https://probe.rs/docs/getting-started/probe-setup/). + + ```bash + sudo curl --output /etc/udev/rules.d/69-probe-rs.rules "https://probe.rs/files/69-probe-rs.rules" + sudo udevadm control --reload-rules + sudo udevadm trigger + ``` + +Now you can flash changes in the source code directly to the target Pico (without re-plugging it or holding the BOOTSEL button). The debug probe Pico will function as an intermediary between your laptop and the target Pico. + +```bash +cargo run --example external-blink +``` + +You should see two progress bars running to completion in your terminal. As soon as the flash process is finished: + +* **T** will start running the new code. +* A debug server will be started on **D** so that you can step through your code while it runs on **T**. + +While the Pico has a generous amount of flash memory, Embassy-produced binaries can sometimes be large. For microcontrollers with less memory, the [Min-sized Rust](https://github.com/johnthagen/min-sized-rust) guide provides tips for reducing binary size. From 854d02e8e3a4872a0435d80d5125b76567eb2cdb Mon Sep 17 00:00:00 2001 From: Willem Vanhulle Date: Sat, 7 Jun 2025 18:02:47 +0200 Subject: [PATCH 3/3] Add subsections and embedded writings --- .../2025-06-03_pico-debug.md} | 14 +-- .../bare-metal/2025-06-04_embassy-example.md | 94 ++++++++++++++++ .../bare-metal/2025-06-05_defmt-logging.md | 79 +++++++++++++ content/blog/bare-metal/2025-06-06_gdb.md | 104 ++++++++++++++++++ content/blog/bare-metal/_index.md | 9 ++ .../{ => streams}/2025-03-18_func-async.md | 0 .../{ => streams}/2025-04-01-coroutines.md | 0 .../2025-04-16_stream-combinators.md | 0 .../{ => streams}/2025-05-08_generators.md | 0 content/blog/streams/_index.md | 7 ++ static/cv.pdf | Bin 120925 -> 130269 bytes templates/base.html | 19 +++- templates/index.html | 15 ++- templates/section.html | 38 ++++++- 14 files changed, 362 insertions(+), 17 deletions(-) rename content/blog/{2025-06-05_pico-debug.md => bare-metal/2025-06-03_pico-debug.md} (93%) create mode 100644 content/blog/bare-metal/2025-06-04_embassy-example.md create mode 100644 content/blog/bare-metal/2025-06-05_defmt-logging.md create mode 100644 content/blog/bare-metal/2025-06-06_gdb.md create mode 100644 content/blog/bare-metal/_index.md rename content/blog/{ => streams}/2025-03-18_func-async.md (100%) rename content/blog/{ => streams}/2025-04-01-coroutines.md (100%) rename content/blog/{ => streams}/2025-04-16_stream-combinators.md (100%) rename content/blog/{ => streams}/2025-05-08_generators.md (100%) create mode 100644 content/blog/streams/_index.md diff --git a/content/blog/2025-06-05_pico-debug.md b/content/blog/bare-metal/2025-06-03_pico-debug.md similarity index 93% rename from content/blog/2025-06-05_pico-debug.md rename to content/blog/bare-metal/2025-06-03_pico-debug.md index 6306ee7..272fc30 100644 --- a/content/blog/2025-06-05_pico-debug.md +++ b/content/blog/bare-metal/2025-06-03_pico-debug.md @@ -1,10 +1,10 @@ +++ -title = "Pico 2 as debugger" +title = "Pico 2 as debugprobe" description = "How to use the Raspberry Pi Pico 2 as a hardware debugger." draft = false weight = 7 [taxonomies] -tags = [ "debug", "Raspberry Pi", "embedded", "Pico", "SWD", "declarative", "Rust", "probe-rs" ] +tags = [ "Raspberry Pi", "Pico", "SWD", "declarative", "Rust", "probe-rs", "cargo-embed" ] +++ On most popular microcontrollers used for educational purposes, there is already some hardware debugging support (also called a **hardware debug probe**) on the board itself, such as on the [Micro:bit](https://microbit.org/) or the [ESP32](https://www.espressif.com/en/products/socs/esp32). @@ -21,17 +21,17 @@ The Pico family of microcontrollers does not have this feature built-in. You hav In this workshop, we will pursue the first option. If you get stuck, feel free to ask for a pre-made hardware debugger. -### Turning a Normal Pico into a Debugger Pico +### Turning a Pico 2 into a debugger Pico The Raspberry Pi Foundation provides images for Picos that can be flashed to turn a Pico into a hardware debugger. 1. Download the latest `debugprobe_on_pico.uf2` flash image from the official [`debugprobe`](https://github.com/raspberrypi/debugprobe/releases)releases. -2. Attach the Pico to your laptop while holding the white BOOTSEL button. A mass storage device will appear in your file manager. It will be called something like `RPI-RP2`. +2. Attach the Pico to your laptop while holding the white BOOTSEL button. A mass storage device will appear in your file manager. It will be called something like `RP2350`. 3. Drop the downloaded `.uf2` file onto the mass storage drive emulated by the Pico. Wait for a fraction of a second while the Pico unmounts and reboots as a fresh `debugprobe`. Now you have successfully made a cheap hardware debugging probe. -### Wire Target to Debugger +### Wire target to debugger Let's make some aliases: @@ -65,7 +65,7 @@ Right now, there is no cabling between the debug probe and the target Pico. The *Remark: You can also connect **T** to **D** for UART communication. However, I have not needed it so far.* -### Configure Flashing from Laptop +### Configure flashing from laptop There is still one step remaining: we have to configure our laptop's development environment to enable flashing (this applies to any microcontroller with an onboard or external debugger). @@ -92,7 +92,7 @@ There is still one step remaining: we have to configure our laptop's development Now you can flash changes in the source code directly to the target Pico (without re-plugging it or holding the BOOTSEL button). The debug probe Pico will function as an intermediary between your laptop and the target Pico. ```bash -cargo run --example external-blink +cargo run ``` You should see two progress bars running to completion in your terminal. As soon as the flash process is finished: diff --git a/content/blog/bare-metal/2025-06-04_embassy-example.md b/content/blog/bare-metal/2025-06-04_embassy-example.md new file mode 100644 index 0000000..fc57a38 --- /dev/null +++ b/content/blog/bare-metal/2025-06-04_embassy-example.md @@ -0,0 +1,94 @@ ++++ +title = "Introduction to Embassy" +description = "Overview of the Embassy framework." +draft = false +weight = 8 +[taxonomies] +tags = [ "Rust", "Embassy" ] ++++ + +## Minimal Embassy example + +It can be useful to start with a minimal Embassy program. The following does nothing but can serve as a template for future programs. + +```rust +#![no_std] +#![no_main] + +use defmt_rtt as _; +use embassy_executor::{Spawner, main}; +use embassy_rp::config::Config; +use panic_probe as _; +use embassy_rp::bind_interrupts; + +bind_interrupts!(struct Irqs { + PIO0_IRQ_0 => InterruptHandler; +}); + +#[main] +async fn main(_spawner: Spawner) -> ! { + let p = embassy_rp::init(Config::default()); + loop { + embassy_futures::yield_now().await; + } +} +``` + +As you can see, there are two notable attributes at the top of the file. + +* `#![no_std]` means that the program does not use the standard library. Embedded systems are too small for the standard library. Instead of using `std::String`, you would a statically allocated `heapless::String`. Most `std` heap allocated container types have an analogue in `heapless`. +* `#![no_main]` means that the program does not have a typical `main` function (with arguments or an exit code) as on a typical operating system. Instead, calling and creating the `main` function is completely handled by the Embassy framework. + +Then there are two `use x as _;` lines. These crates don't expose functions or public modules to be used, but they contain setup code that should be included at least once in your embedded program. + +* The `panic_probe` crate provides a panic handler that is compatible with Embassy. Panics are **fatal errors**. Every embedded program needs a panic handler because traditional panics would unwind or abort and yield control back to the operating system. This operating system is absent, so we have to tell the compiler how to handle panics. Usually, this means going into an infinite loop. +* The `defmt_rtt` is not useful for the moment, but once you have configured a hardware debugger, it will allow you to log messages to the debugger console. This is useful for debugging your program. + +There is a macro call `embassy_rp::bind_interrupts!` that binds hardware interrupts with the Embassy framework. This is necessary to be able to use hardware interrupts in your program. Hardware interrupts can stop the current ongoing computation and jump execution to some handler code elsewhere. Examples of hardware interrupt bindings available on the Pico 2 are: + +* `PIO0_IRQ_0` is an interrupt coming from the PIO peripheral. +* `USBCTRL_IRQ` for USB interrupts (relevant in USB serial communication). +* `ADC_IRQ_FIFO` for ADC interrupts (relevant for reading data from the analog-to-digital converter in the moisture sensor). + +The `spawner` argument allows users to spawn asynchronous tasks. Keep in mind, however, that each task should be non-generic and completely specified at compile time. This is because the Embassy framework does not support dynamic task creation at runtime. + +The last line `loop { yield_now().await }` may seem unnecessary. The reason I have to write it is because the return type of `main` is "never" (written as `!`). The `never` return type is the type for a function that never returns. + +Because of the signature of `main`, we cannot simply escape the `main` function. Running this program is the only thing that happens on the microcontroller. So we have to keep looping, even if we have already finished our work. + +## Levels of Abstraction in Embedded Rust + +This section provides an overview of the different levels of abstraction that can be used when programming microcontrollers in Rust. + +### Low Level + +The lowest level of software abstraction provides direct access to the microcontroller's hardware registers. + +* **Core Support Crate**: Enables access to the core processor's features, like interrupts and system timers. See [Cortex-M](https://crates.io/crates/cortex-m). +* **Peripheral Access Crate (PAC)**: Built on top of the core support crate, the PAC contains auto-generated code for accessing hardware peripherals (like GPIO, ADC, etc.) based on SVD files from the chip manufacturer. See [RP235X-PAC](https://crates.io/crates/rp235x-pac). + +The Embassy framework builds on top of the PAC and HAL to provide a more intuitive and convenient API for accessing the hardware. + +### Medium Level + +If the Embassy framework doesn't suit your needs, you can fall back to a more conventional level of abstraction without `async/await`. + +The **Hardware Abstraction Layer (HAL)** is a more convenient way to access the hardware. It provides a higher level of abstraction than the PAC but still allows direct hardware access. + +The Pico 2 has [rp235x-hal](https://crates.io/crates/rp235x-hal) as its HAL crate. You can view the [examples](https://github.com/rp-rs/rp-hal/tree/main/rp235x-hal-examples), which were used as a reference for this workshop. + +*Remark: If you need to preempt tasks (i.e., interrupt a lower-priority task to run a higher-priority one), you should consider using [RTIC](https://github.com/rtic-rs/rtic). RTIC provides a different concurrency model based on preemption and priorities, which may be required for real-time applications.* + +### High Level + +For commonly used microcontrollers, there is often at least one good **Board Support Package (BSP)**. These are crates that provide a convenient, board-specific API, though they are sometimes less customizable than a HAL. For example, in the case of the Micro:bit controller, the BSP is called [microbit](https://crates.io/crates/microbit) and it allows you to draw shapes on the on-board LED array. + +For the Raspberry Pi Pico 2 W, `embassy` (and its `embassy-rp` plugin) come the closest to a full-featured BSP. + +## More Reading Material + +Interesting books about embedded Rust: + +* There is a book for beginners in embedded Rust: [The Discovery Book](https://docs.rust-embedded.org/discovery-mb2/). It assumes you have a Micro:bit v2 (\~€20). +* There is also a book about embedded Rust using an STM32 chip: [The Embedded Rust Book](https://docs.rust-embedded.org/book/). +* Another book about Rust and the Raspberry Pi Pico 2 is [Pico, In-Depth](https://pico.implrust.com/). diff --git a/content/blog/bare-metal/2025-06-05_defmt-logging.md b/content/blog/bare-metal/2025-06-05_defmt-logging.md new file mode 100644 index 0000000..8d7c63b --- /dev/null +++ b/content/blog/bare-metal/2025-06-05_defmt-logging.md @@ -0,0 +1,79 @@ ++++ +title = "Logging with defmt over RTT" +description = "How to use the defmt crate to log messages from a Raspberry Pi Pico 2 W over RTT." +draft = false +weight = 9 +[taxonomies] +tags = [ "defmt", "RTT", "SWD", "Rust", "GDB" ] ++++ + + +## Simple Logging + +RTT (Real-Time Transfer) is a logging protocol that can be used on top of an SWD connection. It does not require specifying the baud rate, etc. + +The `defmt` crate is the most popular crate for logging from embedded Rust programs. It exports macros like `info!` and `debug!`, similar to the macros in the standard `log` or `tracing` crates in Rust. + +For the debug probe to actually show the log output from the target, you need to enable a "transport". In the case of `defmt`, it is usually the `RTT` transport using the `defmt-rtt` crate. The `defmt-rtt` crate could be compared to `tracing-subscriber` or other mainstream log consumers. + +1. Add `defmt` and `defmt-rtt` as a dependency to your `Cargo.toml` file. Also, enable the `defmt` features for all existing dependencies that have it. + +2. Import the `defmt-rtt` module in your binary or library: + + ```rust + use defmt_rtt as _; + ``` + + This may seem useless, but it enables the setup of data necessary to link the binary against the `defmt-rtt` crate. + +3. Add a compiler flag under the current target in the `.cargo/config.toml` file: `-C link-arg=-Tdefmt.x`. + + ```toml + [target.thumbv8m.main-none-eabihf] + rustflags = [ + "-C", + "link-arg=--nmagic", + "-C", + "link-arg=-Tlink.x", + "-C", + "link-arg=-Tdefmt.x", + "-C", + "target-cpu=cortex-m33", + ] + ``` + +4. Specify the log level for `defmt` in the `.cargo/config.toml` file: + + ```toml + [env] + DEFMT_LOG = "debug" + ``` + +5. Enable `rtt` in the `Embed.toml` file: + + ```toml + [default.rtt] + enabled = true + ``` + +6. Add invocations of the `defmt` macros throughout your library or binary code (as necessary). For example, you could write: + + ```rust + use defmt::info; + + async fn main(_spawner: Spawner) -> ! { + loop { + info!("A new iteration of the loop has started."); + } + } + ``` + + There is nothing stopping you from adding such statements to library code. + +7. Compile, flash, and run your binary on the target Pico 2 W: + + ```bash + cargo ru + ``` + + This should open an RTT console that shows the log messages emitted by the `defmt` statements in your code. diff --git a/content/blog/bare-metal/2025-06-06_gdb.md b/content/blog/bare-metal/2025-06-06_gdb.md new file mode 100644 index 0000000..0aec426 --- /dev/null +++ b/content/blog/bare-metal/2025-06-06_gdb.md @@ -0,0 +1,104 @@ ++++ +title = "Usage of GDB debugger" +description = "How to use the GDB debugger with a Raspberry Pi Pico 2 W." +draft = false +weight = 10 +[taxonomies] +tags = [ "SWD", "Pico", "Rust", "cargo-embed" ] ++++ + + + + +## Debugging with GDB + +Once you start creating slightly more complicated embedded programs, you might want to: + +* introspect the values of local variables +* follow the execution flow + +For this, you need a piece of software called a debugger. The most commonly used debugger for Rust and C is [GDB](https://en.wikipedia.org/wiki/GNU_Debugger). + +*Remark: In VS Code, you can install the `probe-rs-debug` extension to use the `probe-rs` toolkit for debugging. It uses a different protocol than `gdb`. See [instructions](https://probe.rs/docs/tools/debugger/).* + +### Setup of `cargo-embed` + +Adjust the `Embed.toml` file in the root of this repository if necessary. This file configures the behavior of the `cargo embed` command when run on your laptop. + +For example, if the configuration contains the following, a GDB debug server session will be started, and the loaded program will be reset to the first instruction. + +```toml +[default.gdb] +enabled = true + +[default.reset] +halt_afterwards = true +``` + +Prevent lines from being merged or reordered during the build step of your program. These kinds of changes can make it harder for the debugger to stop at the right breakpoints. Add the following to `Cargo.toml`: + +```toml +[profile.dev] +debug = 2 +opt-level = 0 +``` + +To be sure the new configuration is used, you can clear the `target` build cache with `cargo clean` and then build again: + +```bash +cargo clean +cargo build --example [BINARY_EXAMPLE_NAME] +``` + +### Starting a GDB Client + +While searching for an appropriate GDB package, look for one that supports the architecture of your target chip. In the case of a Pico 2, `gdb` needs `ARM` support built in. + +Install the multi-architecture version of `gdb`: + +```bash +sudo apt-get install gdb-multiarch +``` + +Then run the following command to create and connect a `gdb` debugging client: + +```bash +gdb-multiarch target/thumbv8m.main-none-eabi/debug/[BINARY_EXAMPLE_NAME] +``` + +*Note: The command may also be `gdb`.* + +Within the `gdb` client on your laptop, you have to connect to the running `GDB` server on the debug Pico probe: + +```txt +target remote :1337 +monitor reset halt # optionally resets to the first instruction +tui enable +``` + +Alternatively, you can tell `gdb` to execute these commands automatically by writing them in a `.gdbinit` file in the root of this repository. + +### Common GDB Commands + +Breakpoints can be set in the `gdb` client by using the `break` command followed by a line number or function name: + +```txt +break [FUNCTION_NAME] # Set a breakpoint at a specific function +break [LINE_NUMBER] # Set a breakpoint at a specific line number +break [FILE_NAME]:[LINE_NUMBER] # Set a breakpoint at a specific line in a file +``` + +You can also write hardware breakpoints directly in your code with `cortex_m::asm::bkpt()`. + +To progress through the execution of your debugged program, you can use: + +```txt +continue # Continue execution until the next breakpoint is hit +next # Step to the next line of code +``` + +For introspection of variables: + +```txt +print [VAR_NAME] +``` diff --git a/content/blog/bare-metal/_index.md b/content/blog/bare-metal/_index.md new file mode 100644 index 0000000..8a00b31 --- /dev/null +++ b/content/blog/bare-metal/_index.md @@ -0,0 +1,9 @@ ++++ +title = "Embedded" +description = "Low-level programming with microcontrollers" +insert_anchor_links = "heading" +sort_by ="weight" +template = "section.html" ++++ + +Some notes from a [workshop](https://github.com/sysghent/plant-pot) on bare metal programming with Rust and the Raspberry Pi Pico 2 W. diff --git a/content/blog/2025-03-18_func-async.md b/content/blog/streams/2025-03-18_func-async.md similarity index 100% rename from content/blog/2025-03-18_func-async.md rename to content/blog/streams/2025-03-18_func-async.md diff --git a/content/blog/2025-04-01-coroutines.md b/content/blog/streams/2025-04-01-coroutines.md similarity index 100% rename from content/blog/2025-04-01-coroutines.md rename to content/blog/streams/2025-04-01-coroutines.md diff --git a/content/blog/2025-04-16_stream-combinators.md b/content/blog/streams/2025-04-16_stream-combinators.md similarity index 100% rename from content/blog/2025-04-16_stream-combinators.md rename to content/blog/streams/2025-04-16_stream-combinators.md diff --git a/content/blog/2025-05-08_generators.md b/content/blog/streams/2025-05-08_generators.md similarity index 100% rename from content/blog/2025-05-08_generators.md rename to content/blog/streams/2025-05-08_generators.md diff --git a/content/blog/streams/_index.md b/content/blog/streams/_index.md new file mode 100644 index 0000000..956ca06 --- /dev/null +++ b/content/blog/streams/_index.md @@ -0,0 +1,7 @@ ++++ +title = "Streams" +description = "Notes about how to utilise streams in Rust to build efficient and composable data processing pipelines." +insert_anchor_links = "heading" +sort_by ="weight" ++++ + diff --git a/static/cv.pdf b/static/cv.pdf index 03acc8347e2f68acc0e3dd79c799b4825e669a90..2ae2aec7c5400edcb0866e3cd299a032b3189b95 100644 GIT binary patch delta 93256 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 diff --git a/templates/base.html b/templates/base.html index b3ec704..25b1290 100644 --- a/templates/base.html +++ b/templates/base.html @@ -41,13 +41,24 @@ - {% set section = get_section(path="blog/_index.md") %} + {% set blog_section = get_section(path="blog/_index.md") %}
  • - {{ section.title }} - + {{ blog_section.title }}