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