Bootstrap de Rust avec GCC : une odyssée de débogage

2025-07-07

Cet article détaille le parcours de l'auteur pour bootstrapper le compilateur Rust en utilisant GCC au lieu de LLVM. Le processus a été semé d'embûches, avec trois bugs majeurs : l'attribut `#[inline(always)]` sur les fonctions récursives, une implémentation incorrecte du terminateur SwitchInt 128 bits et un accès mémoire non aligné. En utilisant une approche de débogage de type « lobotomie », l'auteur a progressivement identifié et corrigé ces problèmes, réussissant une compilation de l'étape 2 et progressant vers l'étape 3. L'article partage des techniques de débogage, comme l'utilisation de core dumps pour analyser les plantages, et explore les complexités des optimisations du compilateur.

Lire plus
Développement

Mise à jour du compilateur Rust vers C : 96 % de couverture des tests !

2025-04-12

Des progrès significatifs ont été réalisés sur un projet de compilateur Rust vers C, atteignant un taux de réussite des tests principaux de 95,9 % et culminant par une présentation à la Rust Week. L’article détaille les corrections apportées aux intrinsèques des entiers 128 bits, à l’arithmétique vérifiée et aux bogues de sous-tranchage. Les améliorations de la compatibilité du compilateur C sont également abordées, ainsi que le passage à un IR interne plus efficace en termes de mémoire. Les défis tels que les difficultés à obtenir des compilateurs pour certaines plates-formes sont reconnus, mais l’auteur reste déterminé à améliorer la conformité C99 et le support d’un plus grand nombre de plates-formes. Les projets futurs incluent la finalisation d’une analyse approfondie des paniques Rust et le développement d’un profileur de mémoire.

Lire plus
Développement Compilateur C

Réflexion en Rust : L'équilibre entre sécurité et règles d'accès

2025-01-03

Rust manque de réflexion, une fonctionnalité souhaitée par de nombreux développeurs. Cet article explore les défis de sécurité liés à l'implémentation de la réflexion en Rust. En raison des garanties de sécurité mémoire de Rust, une API de réflexion doit respecter des règles d'accès strictes, empêchant tout accès arbitraire aux champs privés afin d'éviter les vulnérabilités de sécurité mémoire. L'auteur explore l'impact de ces limitations sur la conception de l'API de réflexion, comme la gestion des échecs de réflexion et l'expression de limites de réflexion complexes. Les compromis entre les API de réflexion sûres et non sûres sont également abordés, ainsi que l'équilibre entre fonctionnalité et sécurité. En fin de compte, la création d'un mécanisme de réflexion sûr en Rust est un problème complexe et difficile qui nécessite une attention particulière aux différents facteurs.

Lire plus