Points Clés
- Le projet Chromium a officiellement interdit certaines fonctionnalités C++ pour maintenir la stabilité et la sécurité de son codebase à travers son vaste écosystème de navigateurs.
- Ces restrictions sont détaillées dans le guide de style officiel du projet, qui sert de référence définitive pour tous les contributeurs.
- Parmi les fonctionnalités interdites figurent std::make_unique, std::make_shared et std::regex en raison de problèmes de compatibilité et de performance.
- Le projet fournit des alternatives spécifiques à Chromium comme base::MakeUnique pour garantir un comportement cohérent sur toutes les plateformes supportées.
- Les processus de révision de code incluent désormais des vérifications automatisées qui signalent les fonctionnalités interdites avant que le code ne soit fusionné dans la branche principale.
- Le guide de style est un document vivant qui reçoit des mises à jour régulières à mesure que les normes C++ évoluent et que le support des compilateurs s'améliore.
Évolution du Codebase
Le projet Chromium a établi des directives complètes interdisant certaines fonctionnalités C++ pour maintenir la stabilité à travers son vaste codebase. Ces restrictions reflètent l'engagement du projet envers la maintenabilité et la sécurité à long terme.
En tant que l'un des plus grands projets de logiciels open-source au monde, les décisions de Chromium impactent des millions de développeurs et d'utilisateurs à l'échelle mondiale. Le guide de style du projet interdit désormais explicitement certaines additions modernes de C++ qui pourraient introduire une instabilité ou des vulnérabilités de sécurité.
Les fonctionnalités interdites incluent plusieurs additions modernes de C++ qui pourraient compromettre les normes de stabilité et de sécurité du projet. Cette décision souligne l'accent mis par le projet sur la qualité du code et la compatibilité multiplateforme.
Liste des Fonctionnalités Interdites
Le projet Chromium a identifié plusieurs fonctionnalités C++ qui sont désormais interdites dans le codebase. Ces restrictions sont détaillées dans le guide de style officiel du projet, qui sert de référence définitive pour les contributeurs.
Parmi les fonctionnalités interdites figurent :
- std::make_unique - Interdit en raison de problèmes de compatibilité
- std::make_shared - Restreint pour des raisons de compatibilité similaires
- std::shared_ptr avec des tableaux - Non autorisé en raison d'incohérences d'implémentation
- std::atomic avec certains types - Limité pour prévenir un comportement indéfini
- std::regex - Interdit en raison de problèmes de performance et de compatibilité
Le projet restreint également l'utilisation de std::filesystem et std::optional dans certains contextes. Ces fonctionnalités, bien que faisant partie des normes C++ modernes, sont jugées inadaptées aux exigences spécifiques de Chromium.
Le guide de style souligne que ces restrictions s'appliquent à l'ensemble du codebase, y compris tous les sous-projets et dépendances. Les contributeurs doivent respecter ces directives lorsqu'ils soumettent du code pour révision.
Rationale des Restrictions
La décision d'interdire ces fonctionnalités découle de la position unique de Chromium en tant que projet multiplateforme supportant plusieurs systèmes d'exploitation et architectures. Le projet doit maintenir la compatibilité avec les anciens compilateurs et bibliothèques tout en assurant un comportement cohérent sur les plateformes.
Les considérations de sécurité jouent également un rôle crucial dans ces restrictions. Certaines fonctionnalités C++ modernes peuvent introduire des bugs subtils ou un comportement indéfini qui pourrait être exploité. Les mainteneurs du projet privilégient la sécurité et la fiabilité sur la commodité.
La performance est un autre facteur critique. Bien que certaines fonctionnalités C++ modernes offrent une commodité, elles peuvent ne pas répondre aux exigences de performance de Chromium. L'échelle massive du projet signifie que même de légères régressions de performance peuvent avoir un impact significatif.
L'équipe Chromium a constat que certaines fonctionnalités, bien que faisant partie de la norme C++, ont des implémentations incohérentes sur différentes plateformes. Cette incohérence peut conduire à un comportement inattendu et rendre le débogage plus difficile.
Impact sur le Développement
Ces restrictions influencent de manière significative la manière dont les développeurs écrivent du code pour Chromium. Les contributeurs doivent utiliser des approches alternatives qui s'alignent sur les directives du projet tout en atteignant la même fonctionnalité.
Par exemple, au lieu d'utiliser std::make_unique, les développeurs doivent utiliser base::MakeUnique ou des alternatives spécifiques à Chromium similaires. Ces alternatives sont soigneusement conçues pour fonctionner de manière cohérente sur toutes les plateformes supportées.
Le projet fournit une documentation détaillée et des exemples pour chaque fonctionnalité restreinte, aidant les développeurs à comprendre les alternatives approuvées. Cette documentation est régulièrement mise à jour à mesure que le projet évolue.
Les processus de révision de code ont été améliorés pour détecter automatiquement les violations de ces restrictions. Le système de construction de Chromium inclut des vérifications qui signalent les fonctionnalités interdites avant que le code ne soit fusionné dans la branche principale.
Considérations Futures
Le projet Chromium évalue continuellement ses normes de codage à mesure que C++ évolue. Bien que certaines fonctionnalités soient actuellement interdites, le projet reste ouvert à la réexamen de ces décisions à mesure que le support des compilateurs s'améliore et que les normes mûrissent.
Le guide de style est un document vivant qui reçoit des mises à jour régulières. Les contributeurs sont encouragés à fournir des commentaires et à suggérer des modifications basées sur l'expérience réelle et les exigences changeantes.
À mesure que le projet grandit et que de nouvelles normes C++ émergent, des fonctionnalités supplémentaires peuvent être ajoutées à la liste des interdictions, tandis que d'autres pourraient devenir permises sous des conditions spécifiques. Cette approche dynamique garantit que Chromium reste à la pointe des meilleures pratiques d'ingénierie logicielle.
L'engagement du projet envers ces normes démontre sa dévouement à produire un logiciel de haute qualité, sécurisé et maintenable qui sert des millions d'utilisateurs dans le monde.
Points Clés
La décision du projet Chromium d'interdire certaines fonctionnalités C++ représente une approche réfléchie pour gérer un codebase massif et complexe. Ces restrictions privilégient la stabilité, la sécurité et la maintenabilité sur la commodité.
Les développeurs travaillant avec Chromium doivent s'adapter à ces directives, en utilisant des alternatives approuvées qui garantissent un comportement cohérent sur les plateformes. Bien que cela puisse nécessiter un effort supplémentaire, les bénéfices en termes de qualité et de fiabilité du code sont substantiels.
Les normes évolutives du projet reflètent la nature dynamique du développement logiciel, où les meilleures pratiques s'améliorent continuellement pour relever de nouveaux défis et opportunités.
Questions Fréquemment Posées
Quelles fonctionnalités C++ Chromium a-t-il interdites ?
Chromium a interdit plusieurs fonctionnalités C++ modernes, notamment std::make_unique, std::make_shared, std::shared_ptr avec tableaux, std::atomic avec certains types, std::regex, std::filesystem et std::optional dans certains contextes. Ces restrictions sont détaillées dans le guide de style officiel du projet.
Pourquoi Chromium a-t-il interdit ces fonctionnalités ?
Les restrictions découlent de problèmes de compatibilité, de considérations de sécurité et d'exigences de performance. Certaines fonctionnalités ont des implémentations incohérentes sur les plateformes, tandis que d'autres pourraient introduire des bugs subtils ou un comportement indéfini qui pourrait être exploité.
Quelles alternatives les développeurs utilisent-ils ?
Chromium fournit des alternatives spécifiques comme base::MakeUnique au lieu de std::make_unique. Ces alternatives sont soigneusement conçues pour fonctionner de manière cohérente sur toutes les plateformes supportées et répondre aux exigences de performance du projet.
Comment ces restrictions sont-elles appliquées ?
Le système de construction de Chromium inclut des vérifications automatisées qui signalent les fonctionnalités interdites pendant la révision de code. Cela garantit que les violations sont détectées avant que le code ne soit fusionné dans la branche principale, maintenant l'intégrité du codebase.









