Sebelum menyentuh LLVM, kalian perlu menguasai C++ modern, CMake, dan konsep dasar kompilasi. Di episode ini kalian menyiapkan LLVM/Clang toolchain, CMake + Ninja, debugger, editor dengan clangd, dan membangun "Hello World" pertama via clang vs gcc.

Selamat datang di series Belajar LLVM! Series ini akan membawa kalian menguasai LLVM — compiler infrastructure modular open-source yang mendasari Clang, Swift, Rust, Zig, Julia, dan Mojo. Total ada 28 episode yang tersusun dalam enam fase, dari fondasi konsep sampai production readiness dan tren ekosistem 2026.
Sebelum menulis satu baris pass atau mendump IR pertama, ada skill dasar dan perangkat yang wajib kalian siapkan. Mengapa prasyarat ini penting? Karena LLVM ditulis dalam C++ dan dibangun dengan CMake/Ninja; tanpa fondasi ini, kalian akan tersesat bahkan sebelum memahami IR. Episode 0 ini adalah peta jalan kalian: kita pastikan skill dasar terpenuhi, menyiapkan toolchain, lalu membangun "Hello World" pertama.
LLVM ditulis dalam C++17 dan API-nya menggunakan pola C++ modern secara ekstensif. Kalian wajib nyaman dengan:
std::unique_ptr dan std::shared_ptr untuk ownership model.#include <memory>
#include <vector>
class PassManager {
std::vector<std::unique_ptr<Pass>> passes;
public:
void addPass(std::unique_ptr<Pass> p) {
passes.push_back(std::move(p));
}
};Jika pola di atas masih asing, selesaikan dulu materi C++ modern sebelum lanjut.
Seluruh ekosistem LLVM dibangun dengan CMake. Kalian perlu memahami target, dependency, generator expression, dan opsi build. Tanpa ini, kalian tidak akan bisa membangun LLVM dari source atau menulis plugin out-of-tree.
Tidak perlu jago teori formal, tetapi kalian harus memahami:
Cara paling cepat: install dari repository distro kalian. LLVM 22.1 (rilis Februari 2026) atau lebih baru direkomendasikan.
sudo apt install clang llvm lld lldb # Debian/Ubuntu
sudo dnf install clang llvm lld lldb # RHEL/FedoraVerifikasi versi:
clang --version
llvm-config --versionPastikan versi ≥ 17 agar mendukung New Pass Manager secara default dan fitur-fitur modern yang kita bahas di episode 7 dan seterusnya.
sudo apt install cmake ninja-build # Debian/Ubuntu
sudo dnf install cmake ninja-build # RHEL/FedoraCMake ≥3.20 dan Ninja diperlukan untuk membangun LLVM dari source (episode 3).
sudo apt install lldb gdb # Debian/UbuntuKita akan menggunakan debugger untuk step-through IR di episode 14.
clangd adalah language server berbasis Clang yang memberikan autocompletion, go-to-definition, dan diagnistik real-time untuk kode C++ yang memanggil LLVM API. Install extension clangd di VS Code atau Neovim LSP kalian.
which clangd
clangd --versionBuat file sederhana dan kompilasi dengan kedua compiler untuk membandingkan:
#include <stdio.h>
int main() {
printf("Hello, LLVM!\n");
return 0;
}clang -o hello-clang hello.c
gcc -o hello-gcc hello.c
./hello-clang
./hello-gccKeduanya menghasilkan output yang sama. Sekarang bandingkan ukuran binary dan behavior default:
ls -la hello-clang hello-gcc
file hello-clang hello-gccPerhatikan: Clang cenderung menghasilkan binary yang lebih kecil dan error message yang lebih jelas dibanding gcc. Ini adalah salah satu alasan Clang menjadi default di macOS dan banyak distro Linux modern.
Sebelum lanjut ke episode 1, jalankan verifikasi menyeluruh:
clang --version
llvm-config --version
cmake --version
ninja --version
clangd --version
lldb --versionSemua command harus mencetak versi tanpa error. Jika ada yang belum terinstall, lengkapi dulu.
Tip
Jika kalian tidak ingin install LLVM dari distro, LLVM menyediakan prebuilt binaries di releases.llvm.org. Untuk Linux x86_64, download tarball, extract, dan tambahkan bin/ ke PATH. Ini berguna jika kalian butuh versi spesifik yang tidak tersedia di repository distro.
Rangkuman yang sudah kalian siapkan di episode 0:
Jika ada yang belum terpenuhi, berhenti dulu dan lengkapi sebelum melanjutkan. Perjalanan 27 episode ke depan akan jauh lebih lancar dengan pijakan yang kuat ini.
Inti yang harus dibawa pulang:
Di episode 1 selanjutnya kita akan membahas pengenalan compiler infrastructure & sejarah LLVM — dari Chris Lattner di UIUC tahun 2000, adopsi Apple 2005, hingga ekosistem proyek yang kini mencakup Clang, LLD, LLDB, Polly, Flang, dan MLIR. Pastikan environment kalian sudah siap, karena perjalanan Belajar LLVM baru saja dimulai!