OSS探訪

LLVM Project — IR・optimizer・backendを共有してcompiler/toolchainを組み立てる

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
40,558
主要言語
LLVM
ライセンス
Apache-2.0 WITH LLVM-exception
リポジトリ最終更新
2026/09/20

概要

LLVM Projectは、高度に最適化されたcompiler、optimizer、runtime、toolchainを構築するためのmodularな技術群です。LLVM IRとoptimizer/backendを中心に、C/C++等のfrontendであるClang、linkerのLLD、debuggerのLLDB、C++ standard libraryのlibc++などを同じmonorepoで開発しています。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

LLVM IRを中間表現としてoptimizationとcode generationを共通化する

frontendから生成したLLVM IRへoptimization passを適用し、複数architecture向けmachine codeへ変換する共通compiler backendを提供します。

出典:[2][4]

Clang・LLD・LLDB・libc++を一つのtoolchain ecosystemとして提供する

C/C++ frontend、linker、debugger、standard libraryなどを同じproject群として開発し、compiler toolchain全体を組み合わせられます。

出典:[2]

compiler・language runtime・static analysis・toolchainを構築したい場合に

独自language frontend、新しいarchitecture backend、optimizer、JIT、debugger等を既存LLVM components上に構築したい用途に向きます。

出典:[2][4]

巨大monorepoのbuild costとsubtreeごとのlicenseを確認する

source buildは多くのcomponentとresourceを必要とするため、利用だけならpackage/release版が簡単です。主要codeはApache-2.0 WITH LLVM-exceptionですが、third-party codeには別licenseがあるため配布時は各noticeを確認してください。

出典:[3][4]

参考にした公式資料

  1. [1]llvm/llvm-project repository(2026-09-20)
  2. [2]LLVM Project README(2026-09-20)
  3. [3]LLVM Apache-2.0 with LLVM Exceptions license(2026-09-20)
  4. [4]Getting Started with LLVM(2026-09-20)
編集部からの補足

LLVMは単一compilerというより、IR・optimizer・code generatorを共通基盤に複数frontend/toolを組み立てるcompiler infrastructureです。Clangだけを使う場合でも、内部ではLLVM IRとbackendを共有します。主要codeはApache-2.0 WITH LLVM-exceptionですがthird-party codeは別licenseを含むため、再配布時は各subtreeのnoticeも確認してください。

3ステップで試す

  1. 1

    LLVM/Clangを導入

    OS向けpackageまたは公式releaseを使い、clang commandが使える状態にします。

    https://llvm.org/docs/GettingStarted.html
  2. 2

    C programをClangでbuild

    Clang frontendからnative executableまでの基本compile flowを確認します。

    printf '#include <stdio.h>\nint main(void){puts("hello");return 0;}\n' > hello.c && clang hello.c -o hello && ./hello
  3. 3

    LLVM IRを出力

    同じsourceをtext形式のLLVM IRへ変換し、frontendとLLVM backendの境界を確認します。

    clang -S -emit-llvm hello.c -o hello.ll && head -n 20 hello.ll
公式READMEで確認

成長

成長の推移 · 直近30日

40,558 Stars

推移データを蓄積中です。

開発アクティビティ

直近90日・週次

Commit(直近30日)
4,409
Open PR
9,851
Issue登録
3,117
Issue解決
2,649
PR登録
16,289
PRマージ
12,947

Issues

3,117 / 2,649

6月23日9月20日
Issue登録Issue解決

Pull Requests

16,289 / 12,947

6月23日9月20日
PR登録PRマージ

メンテナンス状況

Issue初回応答中央値
6.4時間
Issue応答率
2.6% (2/77)

直近90日に外部から作成されたIssue(新しい順に最大100件)が対象です。OWNER・MEMBER・COLLABORATORによる最初のコメントを応答とし、全コメントを確認できないIssueは集計から除外します。中央値と応答率は週次更新です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る
Stars
40,558
Forks
18,723
Watchers
567
Open Issues
29,421
Contributors
365
主要言語
LLVM
リポジトリ最終更新
2026/09/20

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。