Stabilizing decade-old Features
error[E0658]: <the thing you need> is unstable
Folkert de Vries, RustWeek 2026
stuff I've worked on



and progress on f16, f128, explicit_tail_calls, fn_align, static_align, ...
the thing you need...


nightly features are good, actually
normal users can play around with nightly features
$ rustup toolchain install nightly
#[feature(guaranteed_tail_calls)]
stable when?

surely it's stable now
stabilizing a feature often takes years
it's hard to get a sense for what progress is blocked on
many features are or seem to be abandoned
dozens of PRs merged every day

what about me though?
I use rust in places where C is the default
When Rust can't do something C has been able to do for 40 years, that's a liability
Solution 1: wait
Just wait
Solution 2: the nerdsnipe
an experienced contributor
- can implement technical changes
- knows the process
- knows the relevant people
Solution 3: the contract
pay someone to move your feature forward
underexplored
Solution 4: spite-driven development
get so worked up you do it yourself
how to become a rust contributor
git clone
draw the rest of the owl crab
make a small change (e.g. fix a typo)
./x build
on a Saturday afternoon
lurk!

be in the spaces where the work happens
lurk!


be in the spaces where the work happens
lurk!
be in the spaces where the work happens

the feature lifecycle
an idea with promise
team buy-in
implementation
stabilization
user has problem
the feature lifecycle


the feature lifecycle: idea
the feature lifecycle: team buy-in

the feature lifecycle: implementation

the feature lifecycle: now we wait
...
the feature lifecycle: let's stabilize

the feature lifecycle: vote & FCP

the feature lifecycle: success

why features are abandoned
roughly a year to stabilize 4 lines


why features are abandoned
at every stage, whether progress was made relied on me driving the feature forward
why features are abandoned
I work on multiple things at once to keep my occupied while waiting
stabilizing a decade-old feature
the lay of the land
read the tracking issue

locate the implementation (with grep)

the lay of the land
write it down

summarize the current state
https://cetra3.github.io/blog/state-of-allocators-2026/
form a crew
Figure out who is interested in this problem, and/or knowledgeable.
experience and time
experience
available time
most senior contributors
you (hopefully)
first steps
easy things to improve
Test Coverage
test c_variadic on exotic targets
Error Messages
error when
#[naked] is used with certain attributes
plan ahead

side quests
features spawn side quests, e.g.
-
naked_functions_target_rustic_abi -
c_variadic_naked_functions -
const_c_variadic -
c_variadic_int128
splitting features can simplify stabilization
it's hard, but also the best
summary
stabilizing features takes more than being a good programmer. (not blocked on 10x programmers)
Most work is research, technical writing and consensus building
i still don't always feel good at it, but I'll keep doing it, because on a technical and a social level, it's the most rewarding work
summary
it's hard, but also it's the coolest thing
summary

summary

(I use many of these quite frequently)
summary
(figure n: spite-driven development)

the end
let's stabilize some features!
play with the feature (e.g. on godbolt.org)

the lay of the land
experience and time
problem: this feature is incredibly target-specific; you get to implement it not once, but like 13 times
experience and time
solution: go look at clang. Someone less experienced would have bounced off here I think?
experience and time
design issues and the zulip
I just wrote up my suggestion; it was wrong, but sometimes any energy put into the system is positive
shoutout to beetrees and ralf jung
experience and time
also the "network" helps enormously here. who you're able to DM, ask for advice or vibes, really matters
another reason that if you're an outsider it's just not actually that feasible to stabilize a feature. you have to be in for the long haul
experience and time
identifying and clearing blockers
no-one will do this work if not for you
experience and time
admin: update the reference, write a stabilization report
stabilizing cfg_select

stabilizing cfg_select

stabilizing cfg_select

stabilizing cfg_select

stabilizing cfg_select
blockers
- some small stuff
- rustfmt support (very little review capacity)
stabilizing cfg_select

stabilizing cfg_select

stabilizing cfg_select

stabilizing cfg_select

notes on this process
it still took a lot of time, and a bunch of people collaborating.
aftur á ný
there are always new exciting things to work on: guaranteed tail calls, c-variadic function definitions, f16 & f128, align on functions and static, etc.
these things lead you on sidequests, and maintenance/review is a big part of the work
Stabilizing decade-old features
By folkert de vries
Stabilizing decade-old features
RustNL 2024
- 30