LLVMコア、Clang C/C++フロントエンド、libc++、LLDリンカーなどを含む、モジュール式のコンパイラおよびツールチェーン技術群。
root-project/cling
ClangとLLVMを基盤とする対話型C++インタープリター。REPLでC++コードを1行ずつ実行できます。
- スター
- 4,201
- フォーク
- 313
- 未解決の Issue
- 138
- 最終コミット
- 7 日前
これは何?
Clingはread-eval-print loop(REPL)を実装した対話型C++インタープリターです。C++コードを入力するたびに実行できるため、コンパイル・リンク・実行を一通り行う必要がありません。LLVMとClangの拡張として構築されており、Clangのコンパイラー診断を再利用します。
既存のLLVM/Clang環境に対して単独でビルドできるほか、専用のllvm-projectブランチからLLVMと一緒にビルドすることもできます。clingバイナリを起動すると、C++の文やincludeディレクティブを直接入力でき、対話的に利用するための.helpなどのドットで始まるコマンドも用意されています。
CLING_DEBUGおよびCLING_PROFILE環境変数を使って、インタープリターで実行される(JITコンパイルされた)コードのデバッグやプロファイリングも行えます。また、ビルド後にインストールできるJupyterカーネルも提供しています。
主な機能
- 01C++の文や宣言を逐次実行できる対話型REPL。
- 02ClangとLLVMを基盤とし、Clangのコンパイラー診断を再利用。
- 03#includeディレクティブに対応し、コマンドラインから対話的にコードを実行可能。
- 04環境変数を使って、JITコンパイルされたコードのデバッグシンボル出力とperfプロファイリングに対応。
- 05ノートブックで使えるJupyterカーネルを提供。
ユースケース
- プログラム全体を書かずに、C++のコード断片やライブラリAPIを手早く試す。
- ヘッダーやC++言語の挙動を対話的に調べる。
- JupyterノートブックでC++を使ってデータを探索する。
- 実行時にJITコンパイルされるコードをデバッグまたはプロファイリングする。
クイックスタート
- 1
llvm-projectリポジトリをcloneし、cling-latestをチェックアウトします
git clone https://github.com/root-project/llvm-project.git - 2
clingをcloneし、CMakeを使ってLLVMおよびClangと一緒にビルドします
cmake -DLLVM_EXTERNAL_PROJECTS=cling -DLLVM_EXTERNAL_CLING_SOURCE_DIR=../cling/ -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_TARGETS_TO_BUILD="host;NVPTX" -DCMAKE_BUILD_TYPE=Release ../llvm-project/llvm - 3
clangおよびclingのターゲットをビルドします
cmake --build . --target clang cling - 4
ビルドフォルダーから対話型インタープリターを起動します
./bin/cling
使う前に知っておきたいこと
- ビルドにはLLVMとClangをソースからコンパイルする必要があり、時間がかかります。
- 現在、ナイトリーバイナリスナップショットは利用できないため、ソースからビルドする必要があります。
- リンクされているドキュメントや講演の一部は古く、READMEによると、そこに記載された制限事項は最新ではありません。
トピック
よくある質問
- cling とは?
- ClangとLLVMを基盤とする対話型C++インタープリター。REPLでC++コードを1行ずつ実行できます。 Clingはread-eval-print loop(REPL)を実装した対話型C++インタープリターです。C++コードを入力するたびに実行できるため、コンパイル・リンク・実行を一通り行う必要がありません。LLVMとClangの拡張として構築されており、Clangのコンパイラー診断を再利用します。
- cling は無料で使えますか?ライセンスは?
- cling は Other ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- cling は今もメンテナンスされていますか?
- 活発にメンテナンス中。cling の最終コミットは 2026年10月15日 です。
- cling は何に使えますか?
- プログラム全体を書かずに、C++のコード断片やライブラリAPIを手早く試す。 ヘッダーやC++言語の挙動を対話的に調べる。 JupyterノートブックでC++を使ってデータを探索する。 実行時にJITコンパイルされるコードをデバッグまたはプロファイリングする。
- cling のインストール方法は?
- llvm-projectリポジトリをcloneし、cling-latestをチェックアウトします: git clone https://github.com/root-project/llvm-project.git clingをcloneし、CMakeを使ってLLVMおよびClangと一緒にビルドします: cmake -DLLVM_EXTERNAL_PROJECTS=cling -DLLVM_EXTERNAL_CLING_SOURCE_DIR=../cling/ -DLLVM_ENABLE_PROJECTS="clang" -DLLVM_TARGETS_TO_BUILD="host;NVPTX" -DCMAKE_BUILD_TYPE=Release ../llvm-project/llvm clangおよびclingのターゲットをビルドします: cmake --build . --target clang cling ビルドフォルダーから対話型インタープリターを起動します: ./bin/cling
- cling はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/root-project/cling
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Rustの対話型実行環境。JupyterカーネルとコマンドラインREPLを提供します。
C/C++コードをWebAssemblyに変換し、ブラウザーやNode.jsなどのWasmランタイムで実行できるコンパイラツールチェーン。
LLVMを基盤とするGoコンパイラ。マイクロコントローラー、WebAssembly(WASM/WASI)、コマンドラインツール向けにビルドできます。
Goアプリケーションへの組み込みに使える、純Go製のECMAScript 5.1 JavaScriptエンジン。