Polyglot: Concepts
    Compile Time and Runtime
    Standard Libraries
    Build Tools
    Memory Management
    Zero Cost Abstractions
    Design Patterns
    Functional Programming
    Bit Manipulation
    String Interning
Polyglot: Language Notes

Programming Languages - Build Tools

Updated: 2022-10-13

Build toolchain: compiler + linker + libraries + others.

Build tools / package managers:

Tool Config / DSL C/C++ JVM Rust Go Swift JS
CMake CMakeLists.txt Yes
Gradle Groovy / Kotlin Yes Yes Yes
Maven xml Yes
Bazel Starlark (Python) Yes Yes Yes Yes
Cargo toml Yes
NPM json Yes

JVM inclues Java, Kotlin, Scala, etc.

Build Tools

Android: AOSP is migrating to Bazel; Android Studio uses Gradle by default, which is used to build Android apps.

Package Managers and Registries

Cloud Services


  • swc: (https://swc.rs/) a typescript / javascript compiler, written in Rust.
  • Emscripten: an LLVM/Clang-based compiler that compiles C and C++ source code to WebAssembly

Clang vs GCC

2 Primary C/C++ compilers: Clang and GCC.

Clang GCC
License Apache 2.0 GPL / LGPL
C++ Standard Library libc++ libstdc++
C Standard Library glibc
Parent Project LLVM GNU
Website https://clang.llvm.org/ https://gcc.gnu.org/


  • Clang was originated from Apple but now widely used (You will find Google, Facebook Microsoft, Intel, Qualcomm, Huawei in LLVM Found ation sponsor list https://foundation.llvm.org/docs/sponsors/)
  • Emerging languages are using the LLVM frameworks, such as Swift, Rust.
  • GCC was deprecated in Android in 2019 and removed in 2020
  • GCC is the official compiler for the GNU and Linux systems
  • Clang supports a wide variety of C standard library implementations.

Conclusion: use Clang/LLVM if you do not have to use GCC.

Install Clang

On Debian / Ubuntu:

$ sudo apt install clang libc++-dev libc++abi-dev


$ clang --version
clang version xx.x.x
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin