Hechos Clave
- El proyecto Chromium ha prohibido oficialmente características específicas de C++ para mantener la estabilidad y seguridad de su base de código en todo su masivo ecosistema de navegadores.
- Estas restricciones están detalladas en la guía de estilo oficial del proyecto, que sirve como referencia definitiva para todos los colaboradores.
- Entre las características prohibidas están std::make_unique, std::make_shared y std::regex debido a preocupaciones de compatibilidad y rendimiento.
- El proyecto proporciona alternativas específicas de Chromium como base::MakeUnique para garantizar un comportamiento consistente en todas las plataformas soportadas.
- Los procesos de revisión de código ahora incluyen verificaciones automatizadas que señalan características prohibidas antes de que el código se fusione en la rama principal.
- La guía de estilo es un documento vivo que recibe actualizaciones regulares a medida que evolucionan los estándares de C++ y mejora el soporte de los compiladores.
Evolución de la Base de Código
El proyecto Chromium ha establecido pautas integrales que prohíben características específicas de C++ para mantener la estabilidad en su masiva base de código. Estas restricciones reflejan el compromiso del proyecto con la mantenibilidad a largo plazo y la seguridad.
Como uno de los proyectos de software de código abierto más grandes del mundo, las decisiones de Chromium impactan a millones de desarrolladores y usuarios a nivel global. La guía de estilo del proyecto ahora prohíbe explícitamente ciertas adiciones modernas de C++ que podrían introducir inestabilidad o vulnerabilidades de seguridad.
Las características prohibidas incluyen varias adiciones modernas de C++ que podrían comprometer los estándares de estabilidad y seguridad del proyecto. Esta decisión subraya el enfoque del proyecto en la calidad del código y la compatibilidad entre plataformas.
Lista de Características Prohibidas
El proyecto Chromium ha identificado varias características de C++ que ahora están prohibidas dentro de la base de código. Estas restricciones están detalladas en la guía de estilo oficial del proyecto, que sirve como referencia definitiva para los colaboradores.
Entre las características prohibidas se encuentran:
- std::make_unique - Prohibido debido a preocupaciones de compatibilidad
- std::make_shared - Restringido por razones de compatibilidad similares
- std::shared_ptr con matrices - No permitido debido a inconsistencias de implementación
- std::atomic con ciertos tipos - Limitado para prevenir comportamiento indefinido
- std::regex - Prohibido debido a problemas de rendimiento y compatibilidad
El proyecto también restringe el uso de std::filesystem y std::optional en ciertos contextos. Estas características, aunque son parte de los estándares modernos de C++, se consideran inadecuadas para los requisitos específicos de Chromium.
La guía de estilo enfatiza que estas restricciones se aplican a toda la base de código, incluyendo todos los subproyectos y dependencias. Los colaboradores deben adherirse a estas pautas al presentar código para revisión.
Razones de las Restricciones
La decisión de prohibir estas características surge de la posición única de Chromium como un proyecto multiplataforma que soporta múltiples sistemas operativos y arquitecturas. El proyecto debe mantener compatibilidad con compiladores y bibliotecas más antiguos mientras garantiza un comportamiento consistente entre plataformas.
Las consideraciones de seguridad también juegan un papel crucial en estas restricciones. Algunas características modernas de C++ pueden introducir errores sutiles o comportamiento indefinido que podría ser explotado. Los mantenedores del proyecto priorizan la seguridad y la fiabilidad sobre la conveniencia.
El rendimiento es otro factor crítico. Si bien algunas características modernas de C++ ofrecen conveniencia, pueden no cumplir con los requisitos de rendimiento de Chromium. La escala masiva del proyecto significa que incluso regresiones menores de rendimiento pueden tener un impacto significativo.
El equipo de Chromium ha descubierto que ciertas características, a pesar de ser parte del estándar de C++, tienen implementaciones inconsistentes entre diferentes plataformas. Esta inconsistencia puede llevar a comportamientos inesperados y hacer que la depuración sea más difícil.
Impacto en el Desarrollo
Estas restricciones influyen significativamente en cómo los desarrolladores escriben código para Chromium. Los colaboradores deben usar enfoques alternativos que se alineen con las pautas del proyecto mientras logran la misma funcionalidad.
Por ejemplo, en lugar de usar std::make_unique, los desarrolladores deben usar base::MakeUnique o alternativas específicas de Chromium similares. Estas alternativas están cuidadosamente diseñadas para funcionar consistentemente en todas las plataformas soportadas.
El proyecto proporciona documentación detallada y ejemplos para cada característica restringida, ayudando a los desarrolladores a entender las alternativas aprobadas. Esta documentación se actualiza regularmente a medida que evoluciona el proyecto.
Los procesos de revisión de código se han mejorado para detectar automáticamente violaciones de estas restricciones. El sistema de compilación de Chromium incluye verificaciones que señalan características prohibidas antes de que el código se fusione en la rama principal.
Consideraciones Futuras
El proyecto Chromium evalúa continuamente sus estándares de codificación a medida que evoluciona C++. Si bien ciertas características están actualmente prohibidas, el proyecto permanece abierto a reconsiderar estas decisiones a medida que mejora el soporte de los compiladores y maduran los estándares.
La guía de estilo es un documento vivo que recibe actualizaciones regulares. Se anima a los colaboradores a proporcionar comentarios y sugerir modificaciones basadas en la experiencia del mundo real y los requisitos cambiantes.
A medida que el proyecto crece y surgen nuevos estándares de C++, se pueden agregar características adicionales a la lista prohibida, mientras que otras podrían volverse permisibles bajo condiciones específicas. Este enfoque dinámico garantiza que Chromium permanezca a la vanguardia de las mejores prácticas de ingeniería de software.
El compromiso del proyecto con estos estándares demuestra su dedicación a producir software de alta calidad, seguro y mantenible que sirve a millones de usuarios en todo el mundo.
Puntos Clave
La decisión del proyecto Chromium de prohibir características específicas de C++ representa un enfoque reflexivo para gestionar una base de código masiva y compleja. Estas restricciones priorizan la estabilidad, la seguridad y la mantenibilidad sobre la conveniencia.
Los desarrolladores que trabajan con Chromium deben adaptarse a estas pautas, usando alternativas aprobadas que garanticen un comportamiento consistente entre plataformas. Si bien esto puede requerir un esfuerzo adicional, los beneficios en calidad y fiabilidad del código son sustanciales.
Los estándares en evolución del proyecto reflejan la naturaleza dinámica del desarrollo de software, donde las mejores prácticas mejoran continuamente para cumplir con nuevos desafíos y oportunidades.
Preguntas Frecuentes
¿Qué características de C++ ha prohibido Chromium?
Chromium ha prohibido varias características modernas de C++ incluyendo std::make_unique, std::make_shared, std::shared_ptr con matrices, std::atomic con ciertos tipos, std::regex, std::filesystem y std::optional en ciertos contextos. Estas restricciones están detalladas en la guía de estilo oficial del proyecto.
¿Por qué Chromium prohibió estas características?
Las restricciones surgen de preocupaciones de compatibilidad, consideraciones de seguridad y requisitos de rendimiento. Algunas características tienen implementaciones inconsistentes entre plataformas, mientras que otras podrían introducir errores sutiles o comportamiento indefinido que podría ser explotado.
¿Qué alternativas usan los desarrolladores?
Chromium proporciona alternativas específicas como base::MakeUnique en lugar de std::make_unique. Estas alternativas están cuidadosamente diseñadas para funcionar consistentemente en todas las plataformas soportadas y cumplir con los requisitos de rendimiento del proyecto.
¿Cómo se hacen cumplir estas restricciones?
El sistema de compilación de Chromium incluye verificaciones automatizadas que señalan características prohibidas durante la revisión de código. Esto garantiza que las violaciones se detecten antes de que el código se fusione en la rama principal, manteniendo la integridad de la base de código.









