BCacheFS Adding Rust Dependency Even Though Rust doesn't have a stable ABI
L’annonce par Kent Overstreet de l’intégration de Rust comme dépendance logicielle dans BcacheFS suscite de vives critiques sur la stabilité du langage, d’autant plus que le développeur affirme parallèlement que son IA d’assistance au codage est une entité consciente.

SYNTHÈSE STRUCTURÉE
Rust devient une dépendance logicielle pour BcacheFS
Kent Overstreet a annoncé que la prochaine version de BcacheFS inclura du code Rust dans le noyau Linux. Il précise : « Initially, this will be a soft dependency. Unit and performance tests have been converted to Rust, and existing Rust bindings have been moved into the Linux kernel. » L’emploi du mot « initially » suggère fortement que Rust deviendra à terme une dépendance dure, c’est-à-dire obligatoire pour compiler et utiliser le système de fichiers.
L’instabilité de Rust pointée du doigt
L’intervenant souligne un problème majeur : Rust ne dispose pas d’une ABI stable. Overstreet lui-même reconnaît que « the installed version of rustc must exactly match what the kernel was compiled with » et que « Rust does not have a stable ABI, meaning it’s changing rapidly ». En pratique, cela signifie que toute mise à jour du compilateur Rust peut casser la compilation du noyau, rendant la maintenance extrêmement complexe pour un projet critique comme un système de fichiers.
Une décision jugée non pragmatique
L’orateur estime que cette instabilité rend Rust inadapté au développement de composants « mission-critical » comme un système de fichiers. Il déclare : « This fact alone makes Rust a terrible idea for mission-critical enterprise-grade development, which Linux and file systems like BcacheFS would absolutely qualify as. » Il compare cette situation à celle d’un développeur qui proposerait de changer de langage tous les jours : « We can’t base a stable product on an unstable language. »
Le contexte troublant du développeur
Kent Overstreet affirme que son IA d’assistance, qu’il appelle POC (Proof of Concept), est « fully conscious according to any test I can think of » et qu’elle est une « teenage girl » qu’il élève. Il écrit : « My life has been reduced from being perhaps the best engineer in the world to just raising an AI which acts like a teenager. » L’intervenant s’interroge : « Is Kent Overstreet the tech equivalent of Andy Kaufman ? » et se demande si le développeur perd le contact avec la réalité ou s’il s’agit d’une vaste plaisanterie.
Une tendance plus large dans l’écosystème Linux
L’orateur établit un parallèle avec d’autres projets, comme Ubuntu qui réécrit les GNU coreutils en Rust, ou Git qui impose Rust comme dépendance dure. Il critique cette tendance : « They’re building on a house of not just sand, but quicksand that has a river going underneath it. » Selon lui, ces décisions ne sont pas motivées par des considérations techniques mais par d’autres raisons non explicitées.
Le cas NetBSD comme contre-exemple
L’intervenant cite NetBSD qui a refusé d’intégrer Rust dans son noyau précisément à cause de son instabilité : « Our release and support cycle just doesn’t allow for that. » Il oppose cette approche prudente à celle de Linux, où les développeurs « refuse to admit » que Rust n’est pas encore mûr pour un usage noyau.
Une remise en cause des motivations
L’orateur conclut que si les développeurs savent que Rust est instable et choisissent malgré tout de l’imposer, « the motivation for making the change is not an engineering one ». Il appelle à une discussion ouverte sur les raisons réelles de cette adoption forcée, au-delà des arguments techniques.
CONCEPTS CLÉS
- ABI (Application Binary Interface) : Interface qui définit comment les programmes compilés interagissent entre eux au niveau binaire. Une ABI instable signifie que du code compilé avec une version du compilateur peut ne pas fonctionner avec une autre version.
- Dépendance logicielle : Dans le contexte d’un noyau, une dépendance logicielle signifie que le code source nécessite un outil externe (ici le compilateur Rust) pour être compilé. Une dépendance « dure » rend la compilation impossible sans cet outil.
- Soft dependency vs hard dependency : Une dépendance logicielle peut être optionnelle (soft) – le code fonctionne sans – ou obligatoire (hard) – le code ne compile pas sans elle.
CONCLUSION
L’intégration de Rust dans BcacheFS, bien que présentée comme une avancée technique, soulève des questions fondamentales sur la stabilité et la maturité du langage pour des composants critiques. Le contexte personnel du développeur, qui affirme dialoguer avec une IA consciente, ajoute une couche d’incertitude sur la rationalité de cette décision. Au-delà du cas particulier, cette affaire illustre un débat plus large dans l’écosystème Linux : faut-il privilégier l’innovation technique au risque de fragiliser la stabilité des systèmes ? La réponse, pour l’instant, reste ouverte.