diff --git a/Home.md b/Home.md index a99d975..8c2bcd4 100644 --- a/Home.md +++ b/Home.md @@ -8,14 +8,14 @@ A great way to learn something new is to retrace the steps taken by someone who To safeguard against dependency hell, all the essential software needed to develop and run our OS will be provided through a set of Docker images. For more information, please refer to [this section](https://gitea.dmz.rs/sborovic/dmzOS#development-environment) of README. -***Which compiler to use, gcc or clang?*** +***Which compiler to use: gcc or clang?*** * Compilation times are comparable * Clang reportedly has better error messages * Clang/LLVM `lld` links on average twice as fast as GCC `ld` (Up to 10 times faster, reportedly. lld uses more cores?) * GCC - GPL, Clang - Apache licenses * While the standard may move to LLVM, GCC still remains the industry standard as of now. -Decision: TL;DR - *GCC*. +**Decision**: TL;DR - *GCC*. They have many differences, above are the potentially most relevant. The GPL license seems preferable in this case, which is a point in favor of GCC. A major performance consideration comes when there are a lot of lib files as well as `-debug` mode (which is expected to be the case in this project). This difference will come down to the linker, and seeing as `lld` can be a drop-in replacement for `ld`, and added independently of Clang, it is not a major point in favor of Clang. We can simply install `lld` from the LLVM backend (Clang is just the frontend), and pass the `-fuse-ld=lld` flag to GCC to make it use `lld` instead of `ld`. For these reasons, I propose to start with GCC.