Google’s Chrome web browser is now built utilizing the Clang compiler on Windows. Formerly built utilizing the Microsoft C++ compiler, Google has become utilizing the compiler that is same Windows, macOS, Linux, and Android, and the switch makes Chrome arguably the first major software project to use Clang on Windows.
Chrome on macOS and Linux has long been built using the Clang compiler and the LLVM toolchain. The source that is open is the compiler of preference on macOS, which makes it the normal choice here, and it’s a first-class option for Linux; although venerable GCC continues to be the principal compiler option on Linux, through the use of Clang alternatively, Google ensured so it has just one group of compiler quirks and oddities to work well with versus two.
But Chrome on Windows has alternatively utilized Microsoft’s artistic C++ compiler. The artistic C++ compiler may be the best-supported, most favored compiler on Windows and, critically, may be the compiler aided by the support that is best for Windows’ wide range of debugging and diagnostic tools. The Visual Studio debugger is widely loved by the community that is c++ alongside tools, for instance the WinDbg debugger (usually useful for analyzing crash dumps), are key elements of the Windows designer experience.
Way back 2013, Google decided so it desired to everywhere use Clang, including Windows. Using the compiler that is same makes development much easier—you have a similar group of pests to cope with on every platform—and Clang specifically has diagnostic tools including ASan and UBSan that Google desired to have the ability to utilize.
There ended up being one little sticking point: Clang and LLVM don’t obviously have a great deal when it comes to Windows help. This is real in shallow ways—Clang supports command-line that is different to Microsoft’s compiler, for example, so couldn’t work as a drop-in replacement—and in many deeper ways. For example, Windows’ tooling is all built around the PDB (“program database”) file format for holding debug information. Microsoft’s debuggers and a range that is wide of tools all assume that Windows programs could have their debug information available as PDB files. LLVM, but could not create PDBs. The Windows APIs also require certain non-standard extensions, which Clang had to be altered to support.( as with almost any large software project****************)
As such, the step that is first making Chrome utilize Clang on Windows would be to enhance Clang and LLVM to provide them first-class help for Windows. Google put together a group to function with this. The web browser was initially effectively designed with Clang on Windows in 2015, with Google testing it first in its development that is canary channel then the Development and Beta channels. The stable browser channel is making the switch to using Clang.( with Chrome 64****************)
While Google did the lion’s share for the compiler development to produce this take place, a number of the work that is necessary done by Microsoft. The PDB format was largely undocumented (and the documentation that existed was very stale), so LLVM developers asked for help: Microsoft responded by publishing a chunk that is big of accustomed create PDBs. Microsoft has additionally worked to ensure the Windows headers and C++ libraries assist Clang in addition to its very own compiler.
Google hasn’t yet relocated totally towards LLVM toolchain. Chrome for Windows nevertheless makes use of the Microsoft linker (the right an element of the toolchain that combines the put together supply rule into an individual executable or DLL), also it nevertheless makes use of the Microsoft C++ collection. Eventually, Google intends to change to the LLVM linker and may also utilize Clang C++ collection, too.