Chrome para Windows reemplaza el compilador de Microsoft por Clang

El navegador Chrome de Google, uno de los más usados, ahora se compila utilizando el compilador Clang en Windows. Desarrollado previamente utilizando el compilador Microsoft C ++, Google ahora usa el mismo compilador para Windows, MacOS, Linux y Android. Este cambio de compilación hace que Chrome sea posiblemente el primer gran proyecto de software en usar Clang en Windows.

Chrome en macOS y Linux se ha construido durante mucho tiempo utilizando el compilador Clang. Así como la cadena de herramientas LLVM. El compilador de código abierto es el compilador de elección en macOS. Por lo que es la opción natural allí, y también es una opción de primera clase para Linux.

Aunque el venerable GCC sigue siendo la principal elección del compilador en Linux. Al usar Clang en su lugar, Google se aseguró de tener solo un conjunto de rarezas de compilación para trabajar en lugar de dos conjuntos.

No obstante, Chrome en Windows ha utilizado el compilador de Visual C++ de Microsoft. El compilador de Visual C++ es el compilador más utilizado y popular en Windows. Y lo que es más importante, es el compilador con el mejor soporte para la amplia gama de herramientas de diagnóstico y depuración de Windows.

El depurador de Visual Studio es muy querido por la comunidad de C++. Y otras herramientas, como el depurador de WinDbg (a menudo utilizado para analizar los volcados de memoria), son partes centrales de la experiencia del desarrollador de Windows.

Google y Clang

Allá por 2013, Google decidió que quería usar Clang en todas partes, incluido Windows. Usar el mismo compilador en todas partes hace que el desarrollo sea mucho más fácil. Porque se tiene el mismo conjunto de errores para tratar en cada plataforma. Clang en particular tiene herramientas de diagnóstico como ASan y UBSan que Google quería poder usar.

Solo había un pequeño punto de fricción: Clang y LLVM realmente no tenían mucho soporte de Windows. Esto era cierto de forma superficial, ya que Clang, por ejemplo, admite diferentes opciones de línea de comandos para el compilador de Microsoft. Por esto, podría funcionar como un reemplazo directo y de muchas maneras más profundas.

Por ejemplo, las herramientas de Windows se basan en el formato de archivo PDB (“base de datos de programas”) para almacenar información de depuración. Los depuradores de Microsoft y una amplia gama de herramientas de terceros suponen que los programas de Windows tendrán sus datos de depuración disponibles como archivos PDB.

LLVM, sin embargo, no pudo producir PDB. Al igual que con casi cualquier proyecto de software grande, las API de Windows también requieren ciertas extensiones no estándar. Unas para las que Clang tuvo que ser modificado.

Mejoras en LLVM

El primer paso que Chrome pudiera usar Clang en Windows fue mejorar Clang y LLVM. Esto para darles soporte de primera clase para Windows. Google ensambló un equipo para trabajar en esto. El navegador se construyó con éxito con Clang en Windows en 2015. Y Google lo probó primero en su canal de desarrollo Canary, luego en los canales de Desarrollo y Beta. Con Chrome 64, el canal de navegador estable está cambiando a usar Clang.

Google hizo la mayor parte del desarrollo del compilador para que esto suceda. Sin embargo, parte del trabajo necesario fue realizado por Microsoft. El formato PDB no estaba documentado en gran medida (y la documentación que existía era muy obsoleta).

Por lo tanto, los desarrolladores de LLVM pidieron ayuda: Microsoft respondió publicando una gran parte de la fuente utilizada para producir PDB. Microsoft también ha trabajado para garantizar que tanto los encabezados de Windows como las bibliotecas de C++ funcionen con Clang y con su propio compilador.

Google aún no se ha movido por completo a la cadena de herramientas LLVM. Chrome para Windows todavía usa el enlazador de Microsoft y aún usa la biblioteca Microsoft C++. Con el tiempo, Google planea cambiar al enlazador LLVM y también podría usar la biblioteca Clang C++.

Sobre el Autor

ElTecnólogoEM

Técnico en Informática, apasionado y amante de todo lo relacionado con Internet, juegos, consolas, software y las nuevas tecnologías.

Cada día, trato de crear nuevo contenido para ti. Sígueme en las redes sociales y suscríbete a mi canal.

Si no sirves para servir, tampoco sirves para vivir. By: ElTecnólogoEM

Deja un comentario

Centro de preferencias de privacidad

Necessary

Las webs propiedad de BlogTi Media utilizan "cookies". Las cookies son ficheros creados en el navegador por medio de un servidor web para registrar las actividades del Usuario en una web determinada. Usamos esta información en formatos estadísticos y agregados para evaluar la eficacia y calidad de nuestras webs. Gracias a estos datos podemos mejorar tu experiencia al visitar alguna de nuestras web, tomando en cuenta prioridades e intereses de los visitantes. No recogeremos información personal sin tu consentimiento como por ejemplo nombre, apellido, correo electrónico, dirección postal o alguna otra de carácter privado.

Además se instalan cookies sobre servicios de terceros: • Facebook: Tiene como objetivo compartir los contenidos en Facebook. Sus finalidades están descritas en la Página de Cookies de Facebook. • Twitter: Permite compartir contenidos en Twitter. Sus finalidades están descritas en la Página de Privacidad de Twitter. • Google+: Permite compartir contenidos en Google+. Sus finalidades están descritas en la Página de Cookies de Google.

Advertising

Las políticas de Google Adsense y Bing Ads ayudan a los anunciantes a saber cómo crear un buen anuncio y lo que se puede incluir y no se puede incluir en ellos. Revisamos los anuncios y las palabras clave en función de estos requisitos para proporcionarte a ti y a tus clientes una fantástica experiencia en nuestra red publicitaria. Debes cumplir todas las políticas de Bing Ads. Usa las siguientes políticas para ayudar a que tus anuncios reciban la aprobación rápidamente y para evitar las consecuencias resultantes o retrasos. Nos reservamos el derecho de rechazar o eliminar cualquier anuncio, a nuestra entera discreción y en todo momento.