Explaining the internals of async-task from the ground up

async-task is one of the most complicated crates in the smol ecosystem. But, fundamentally, it’s just a future on the heap. | Continue reading


@notgull.net | 1 month ago

Why choose async/await over threads?

A common refrain is that threads can do everything that async/await can, but simpler. So why would anyone choose async/await? | Continue reading


@notgull.net | 1 month ago

Announcing smol-macros, smol-hyper and smol-axum

smol just became a much easier choice to build web servers. smol is a small and fast asynchronous runtime written in Rust. It serves as an alternative to crates like tokio with a new architecture and greater user flexibility. However, tokio and crates like it are already well est … | Continue reading


@notgull.net | 4 months ago

Creating a time machine for my blog

We can’t let the Internet Archive do all of the work. I’ve recently been reading a lot about the Small Web lately. While I don’t think that we can get there 100 percent, I think it has some good ideas. One of those ideas is that we should set our sites up in a way to prevent link … | Continue reading


@notgull.net | 4 months ago

SCP-093 is a Timeless Masterpiece

SCP-093 is an absolute masterwork. Here’s why. This essay is adapted from this comment on the SCP-093 discussion page, by me, in 2019. So, the audience of the post of more “people who are familiar with the SCP wiki” than the usual audience of this blog. Some time ago, I was tr … | Continue reading


@notgull.net | 4 months ago

Figure 1: Painting of a crab prepared to be eaten, surrounded by wine and bread. crab-painting.jpg was created by Jan Arkesteijn and is released under the CC0 1.0 Public Domain license. unsafe code is not only tricky to get right. It’s also tricky to track down when things go wro … | Continue reading


@notgull.net | 4 months ago

A cautionary tale against unsafe code

unsafe code is not only tricky to get right. It’s also tricky to track down when things go wrong. Here’s a question to ponder: do you think you are experienced enough at Rust to use unsafe code properly? If you asked me 24 hours ago, I would confidently say “yes, I am.” I would d … | Continue reading


@notgull.net | 4 months ago

Evaluating new software forges

What options are there other than GitHub? Oh boy, I sure do love contributing to open source software on the largest software forge in the world! I hope they haven’t started down the slow and painful process of enshittification by following vague, ill-defined industry trends! Wa … | Continue reading


@notgull.net | 4 months ago

My new, remote-access Rust development setup

I’ve set up a new system for Rust development work. I work on quite a few crates in the Rust ecosystem. Since I started taking Rust seriously back in 2021, I’ve been using the same laptop that I’ve used since high school. It’s actually a pretty beefy laptop, all things considered … | Continue reading


@notgull.net | 5 months ago

Recreating concurrent futures combinators in smol

[futures] comes with many additional combinators that [smol] doesn’t have out of the box. We can rebuild them, better. Whew, it’s almost been a month since my last blogpost here. This was because I was spending time doing research and testing, and not because I lost the PGP key t … | Continue reading


@notgull.net | 6 months ago

Eyra is an interesting Rust project

In the eternal quest to rewrite everything in Rust, even the C standard library isn’t safe from carcinisation. Modern Rust programs are, for the most part, written mostly in Rust. For networking applications, the entire asynchronous stack is Rusty; no libuv in sight, only mio and … | Continue reading


@notgull.net | 7 months ago

Why you might actually want async in your project

There is a common sentiment I’ve seen over and over in the Rust community that I think is ignorant at best and harmful at worst. This blogpost is largely a response to this post by Matt Kline, but I’ve seen this kind of sentiment all over the Rust community. I’ve found that, in a … | Continue reading


@notgull.net | 7 months ago

What to expect from smol 2.0

The tree of robust software must be refreshed from time to time with the blood of breaking changes. smol is no exception. smol version 1.0 was originally released on September 7th, 2020. Since then, we’ve seen almost thirty new minor version bumps of Rust and a small handful of e … | Continue reading


@notgull.net | 8 months ago

Announcing Theo

Today I’m happy to officially announce a project that has been the culmination of about five months of work. This makes it probably the most involved programming project I’ve ever done, and I’m proud of the final result. The GUI ecosystem in Rust is still in a nascent stage. Ther … | Continue reading


@notgull.net | 9 months ago

The Quest for Piet 4, or, The Way It Ends

This project has driven me to the brink, but we’re just about there now. We’re in the home stretch! Last time, we struggled to integrate text into [piet-cosmic-text] and therefore piet-hardware. This time, it all ends. We have six samples left to go by my count, so it’s time to g … | Continue reading


@notgull.net | 9 months ago

The Quest for Piet 3, or, Text Rendering Madness

Whenever I’ve talked to someone else who writes a drawing interface like this, it seems like they always say text is the hardest part. But obviously, I’m built different, right? Last time, I integrated gradients more completely into my piet-hardware crate. Today, we’re moving ont … | Continue reading


@notgull.net | 9 months ago

The Quest for Piet 2, or, the Revenge of the Gradients

It’s high time for some vector graphics. Last time, we set up our harnesses for piet rendering using our hardware-based backends and adjusted it for multisampling and scaling. Today, let’s focus on getting some more samples rendered. The next few samples exhibit line styling and … | Continue reading


@notgull.net | 10 months ago

The Quest for Piet

Graphical User Interfaces (GUIs) are still a sore subject in Rust. The ecosystem is certainly better than when I started was a few years ago, with egui and iced providing successful models for GUI projects. However, I still think there are models to explore that are interesting a … | Continue reading


@notgull.net | 10 months ago

A Proposal for an asynchronous Rust GUI framework

It’s an exciting time for GUI in Rust. There are now quite a few, well written windowing libraries in Rust. winit is the leader of the pack, with the best platform support and a newly merged keyboard support PR that positions it to become the dominant windowing system in the ecos … | Continue reading


@notgull.net | 11 months ago

Announcing unsend

I’d like to introduce unsend: a thread-unsafe runtime for thread-unsafe people. Most contemporary async runtimes are thread safe, as they are meant to be used in networking applications where multithreading is all but necessary. This kind of hardware parallelism improves the perf … | Continue reading


@notgull.net | 11 months ago