RSSAmplifier

Blog

PoignardAzur

poignardazur.github.ioRSS feed ↗27 posts

Latest posts

Variadic Generics ideas that won't work for Rust

A long-running interest of mine is how we could add variadic generics to the Rust programming language . The discussion is long-running enough that I’ve seen some arguments show up again and again in various forms from various people, over a span of a decade. Since it looks like we’re reaching a point where the Rust maintainers may soon accept work on the feature , I want to take the time to head…

Remark on Rust's 10th anniversary.

Last month, RustWeek 2025 took place, during which we celebrated the 10th anniversary of the Rust programming language . As it happened, that day was the scheduled date for the release of Rust 1.87 , as part of its regular six-weeks release trait. If you’re anything like me, and you might be wondering how that works: did the two dates really happen to coincide? Let’s do the math: Rust has one…

Report on variadic generics discussions at RustWeek 2025.

This is a follow-up to last year’s Report on variadic generics discussion at RustNL . Last month, I went to RustWeek 2025 , an event gathering Rust maintainers, professional users and enthusiasts, from the same organizers as last year’s RustNL. This time the event took place in Utrecht, Netherlands, and much like last year there were two days of “Unconference”, where people discussed various…

Post-mortem for work on Xilem in 2024

Last year, Google funded me to work on the Linebender ecosystem , a group of projects aiming to improve user interface design in the Rust programming language . I was one of several people to get such funding , and my specific focus was the Xilem crate (and later Masonry). As 2025 begins, I’d like to take some time to reflect on the work accomplished so far, and how it compares to what we intended…

Pre-RFC - Rename annotations

This is an informal proposal for improving the Rust programming language . I’ll assume familiarity with the language. The problem Let’s imagine you’re writing a crate. Your crate has a single lib.rs file, with two modules and an arbitrary number of items: pub mod foo { // ... } pub mod bar { // ... pub struct Foobar ( i32 , f32 , String , u8 ); // ... } After a while, you decide that Foobar should…

Patterns of use of Vello crate

This document tries to establish patterns among a list of crates and Github projects using the Vello renderer. The crate list isn’t meant to be exhaustive, but it’s pretty large: I’ve sifted through maybe 40 or so reverse dependencies of the Vello repository, up to the point where most of the READMEs I read were along the lines of “WIP: quick experiment paint shapes with Vello”. Don’t expect…

Expanding on withoutboat's pinned places

Let’s talk about pinning in the Rust programming language . Recently, Rust maintainer withoutboats (secret codename “Boats”) released an article called Pinned places where he argues that we could solve most of the problems with Pin by adding a concept of pinned places to the language. The Context Very long story short: in Rust, all values can be “moved”, meaning their bytes are copied from one…

Report on variadic generics discussion at RustNL.

This is a summary of a bunch of discussions that took place at RustNL’s Unconference , where developers representing various projects in the Rust programming language came together to chat and find common ground. During the Unconference, I ran a survey among developers of the GUI subgroups (and a few others) to see if their projects could benefit from the addition of Variadic Generics to the…

Variadic generics, again

Tl;dr: The Rust community should talk about variadic generics again, and motivated people should get the ball rolling. Discussions about adding variadics to the Rust programming language have been around for a while. In 2021 I wrote an analysis on the subject , and it was already drawing on years of history. As a quick reminder, variadic generics (aka variadic templates, or variadic tuples), are a…

Thinking for Yourself in the Face of AI - post-mortem on my post-mortem

Content note: This is mostly something I’ve written for myself. I still did my best to make it readable, but it might be too long, too rambly, or too focused on specific points. You’ve been warned. About a month ago, I wrote a post-mortem titled When to not use Rust - post-mortem on my wiki converter project and posted it on r/rust . Reactions were… critical, to say the least. Some excerpts:…

Leaving one's comfort zone - post-mortem on my wiki converter project

This article is a post-mortem on a small project I’ve been working on for the past few months. The project itself is mundane: I was tasked with converting a MediaWiki archive into a Git repository, with revision history included. Where it gets interesting is that, while I initially expected to finish the project in less than a week, it ended up taking about twenty days, spread over three months.…

Your blog, now with comments!

This blog now uses utteranc.es to implement comments. Actually, this post right here is for me to test them, and see how they look. But hopefully I’ll keep them! Some articles (eg the Learning to swim essay) don’t have a subreddit I can point to for comments (and reddit’s future is somewhat uncertain right now anyway). So having a drop-in script for implementing comment, using the platform this…

On jumping from lily pad to lily pad, and learning to swim

Today we’re putting Rust aside for a moment. Let’s talk about dating. There’s a bit of ancient wisdom so common it’s cliché, that goes like this: “The best way to find love is to stop searching for it. The watched pot never boils, and love finds you when you least expect it. Only by accepting yourself for who you are will you find true connection.” I hate that piece of ancient wisdom. I have hated…

Rambling about Microsoft, and testing alternatives to Github Copilot.

Content note - This is a bit more unstructured than my usual writing. Jump here if you only care about the model comparisons. I’ve recently been in a discussion where I argued that Microsoft had made a strategic blunder by releasing Copilot the way they did, releasing a product built from a large database of open-source projects while keeping the project itself very much proprietary. To be clear,…

Report on platform-compliance for cargo directories

When you use the Rust programming language toolchain, usually through a cargo command, it needs a place to store a bunch of config files, caches, and the cargo binary itself. By default, that place will be your operating system’s user directory, which I’m going to refer to as $HOME or ~ , where it will put a .cargo folder. This is a very common approach for Unix projects, but not the preferred…

Announcing Masonry 0.1, and my vision for Rust UI

When I see the landscape of native GUI in 2022, I feel like something is missing. I don’t just mean Rust UI. My frustrations with UI frameworks started long before I’d even heard of Rust. The origin story: Qt and fear The Qt framework is a C++ toolkit for writing GUI apps. In 2019, I spent a year working on a Qt project for an energy company, a diagram editor meant to be used by electrical…

Rust 2030 Christmas list: Subcrate dependencies

This is the fourth entry on my Christmas list for Rust 2030. These articles are me fantasizing about what I’d like the Rust programming language to be like, if we had infinite resources to implement every possible feature. I’m not worrying about “is this important to implement right now” so much as “what should the language look like in the long term”. In this article, we’re gonna talk about…

A call for blogs about Rust GUI in 2023

This is a call for everyone in the Rust programming language’s community: Let’s talk about GUI! GUI in Rust is what you might call a “work in progress”. We are not GUI yet , unfortunately, despite the best efforts of everybody involved. Still! There has been a lot of progress in the last few years, but discussion about it has been rare and scattered. As the end of the year approaches, I though I…

Status of the Druid ecosystem in December 2022

Druid is an experimental GUI framework for the Rust programming language . Rust is a… pretty unique language, to say the least. Because of the constraints it adds to your program (no aliased mutable references, data structures don’t have parent pointers, etc), writing GUI in this language is a major challenge. Common design patterns (eg the observer, where widgets will run an arbitrary callback…

About political messages on the Rust blog.

Alright, let’s mention the elephant in the room. Earlier this week, the article announcing the 1.65 release of the Rust programming language included this little aside: Before going into the details of the new Rust release, we’d like to draw attention to the tragic death of Mahsa Amini and the death and violent suppression of many others, by the religious morality police of Iran. See…

Analyzing unsized variables in Rust

In the Rust programming language , unsized variables are one of those concepts that has been floating around for a long time, but hasn’t seen much design work in recent years. Although there is an RFC dating back to 2017 (5 years old as of the writing of this article), and there’s a stub implementation in the nightly compiler, the feature looks stalled. Little work has been done on it in recent…

Rust 2030 Christmas list: Inout methods

This is the third entry on my Christmas list for Rust 2030. These articles are me fantasizing about what I’d like the Rust programming language to be like, if we had infinite resources to implement every possible feature. I’m not worrying about “is this important to implement right now” so much as “what should the language look like on the long term”. For my third article, I’d like to talk about…

Rust 2030 Christmas list: Macro sources in compiler diagnostics

This is the second entry on my Christmas list for Rust 2030. These articles are me fantasizing about what I’d like the Rust programming language to be like, if we had infinite resources to implement every possible feature. I’m not worrying about “is this important to implement right now” so much as “what should the language look like on the long term”. For my second article, I’d like to talk about…

Trying NixOS on the desktop

A few weeks ago, I decided to install NixOS on my laptop. I’m barely using it these days, and I already had Pop_OS installed on my work computer, so I could experiment with alternate distributions without too much risk. NixOS is a Linux distribution built around the Nix package manager. It’s a distribution-wide generalization of the “bundle your dependencies” approach that has packagers tearing…

Object-oriented smells

Object-Oriented Programming is widespread in industrial codebases. This is in part because of inertia: OOP has been the dominant paradigm for decades; an entire generation of programmers has been taught from the onset that OOP was The Right Way To Program. There are also strong reasons to do OOP: objects are somewhat intuitive abstractions, and encapsulation is a convenient way to separate…

Rust 2030 Christmas list: Better cfg

[Note - This is republishing of an article that was previous posted on github gist , and advertised on reddit in February 2021.] This article is me fantasizing about what I’d like the Rust programming language to be like, if we had infinite resources to implement every possible feature. I’m tentatively calling it my “Christmas list for Rust 2030”, mostly because it sounds catchy. For my first…

Analysing variadics, and how to add them to Rust

[Note - This is republishing of an article that was previous posted on github gist , and advertised on reddit in January 2021.] This is an analysis of how variadic generics could be added to the Rust programming language . It’s not a proposal so much as a summary of existing work, and a toolbox for creating an eventual proposal. Introduction Variadic generics (aka variadic templates, or variadic…