Cromo en Windows abandona el compilador de Microsoft, ahora usa Clang

El logotipo del dragón LLVM, en honor al libro del dragón Agrandar / El logo del dragón LLVM, en honor al libro del dragón. manzana

El navegador Chrome de Google ahora está construido usando el compilador Clang en Windows Anteriormente creado con el compilador de Microsoft C ++, Google ahora usa el mismo compilador para Windows, macOS, Linux y Android, y el interruptor hace que Chrome sea posiblemente el primer gran proyecto de software para usar Clang en Windows

Chrome en macOS y Linux se ha creado durante mucho tiempo utilizando Clang compilador y 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 elección principal del compilador en Linux, usando Clang en cambio, Google se aseguró de tener solo un conjunto de peculiaridades del compilador y rarezas para trabajar en lugar de dos.

Pero Chrome en Windows ha utilizado Visual C ++ de Microsoft compilador. El compilador de Visual C ++ es el mejor soportado, más compilador ampliamente utilizado en Windows y, críticamente, es el compilador con el mejor soporte para la amplia gama de depuración y herramientas diagnosticas. El depurador de Visual Studio es muy apreciado por Comunidad C ++ y otras herramientas, como el depurador WinDbg (a menudo utilizado para analizar volcados de memoria), son partes centrales de Windows Experiencia de desarrollador.

En 2013, Google decidió que quería usar Clang en todas partes, incluido Windows. Usando el mismo compilador en todas partes hace que el desarrollo sea mucho más fácil: tiene que lidiar con el mismo conjunto de errores con en cada plataforma, y ​​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 conflicto: Clang y LLVM no Realmente tengo mucho en el camino de soporte de Windows. Esto fue cierto en formas superficiales: Clang admite diferentes opciones de línea de comandos para El compilador de Microsoft, por ejemplo, no podía funcionar como un drop-in reemplazo, y de muchas maneras más profundas. Por ejemplo, las herramientas de Windows todo se basa en el formato de archivo PDB (“base de datos del programa”) para con información de depuración. Los depuradores de Microsoft y una amplia gama de herramientas de terceros, todos asumen que los programas de Windows tendrán sus datos de depuración disponibles como archivos PDB. LLVM, sin embargo, no pudo producir PDBs. Como con casi cualquier proyecto de software grande, el Las API de Windows también requieren ciertas extensiones no estándar, que Clang tuvo que ser alterado para apoyar.

Como tal, el primer paso para hacer que Chrome use Clang en Windows fue mejorar Clang y LLVM para darles soporte de primera clase para Windows. Google reunió un equipo para trabajar en esto. El navegador fue primero construido con éxito con Clang en Windows en 2015, con Google probándolo primero en su canal de desarrollo de Canarias, luego el Desarrollo y canales Beta. Con Chrome 64, el navegador estable channel está haciendo el cambio para usar Clang.

Mientras que Google hizo la mayor parte del desarrollo del compilador para Para que esto suceda, Microsoft realizó parte del trabajo necesario. El formato PDB fue en gran parte indocumentado (y la documentación que existía era muy rancio), por lo que los desarrolladores de LLVM pidieron ayuda: Microsoft respondió publicando una gran parte de la fuente utilizada para producir PDBs. Microsoft también ha trabajado para garantizar que tanto el Los encabezados de Windows y las bibliotecas de C ++ funcionan tanto con Clang como con Su propio compilador.

Google aún no se ha movido por completo a la cadena de herramientas LLVM. Chromepara Windows todavía usa el vinculador de Microsoft (la parte de cadena de herramientas que combina el código fuente compilado en un solo ejecutable o DLL), y todavía usa la biblioteca Microsoft C ++. En vez, Google planea cambiar al enlazador LLVM y puede usar Clang Biblioteca de C ++, también.

Like this post? Please share to your friends:
Leave a Reply

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: