Coleção modular de tecnologias para compiladores e toolchains, incluindo o núcleo do LLVM, o frontend Clang para C/C++, libc++ e o linker LLD.
root-project/cling
Um interpretador interativo de C++ baseado em Clang e LLVM, com um REPL para executar código C++ linha por linha.
- Estrelas
- 4,201
- Forks
- 313
- Issues abertas
- 138
- Último commit
- há 7 dias
O que é?
Cling é um interpretador interativo de C++ que implementa um loop de leitura, avaliação e impressão (REPL), permitindo inserir e executar código C++ incrementalmente, sem passar por um ciclo completo de compilação, linkedição e execução. Ele é desenvolvido como uma extensão do LLVM e do Clang e reutiliza os diagnósticos do compilador do Clang.
O projeto pode ser compilado de forma independente usando uma instalação existente do LLVM/Clang ou junto com o LLVM a partir de uma branch dedicada do llvm-project. Ao executar o binário cling, é possível inserir diretamente instruções C++ e diretivas include, além de usar comandos iniciados por ponto, como .help, durante a interação.
Cling também oferece suporte à depuração e à criação de perfil de código interpretado (compilado com JIT) por meio das variáveis de ambiente CLING_DEBUG e CLING_PROFILE, além de disponibilizar um kernel Jupyter que pode ser instalado após a compilação.
Recursos principais
- 01REPL interativo para executar instruções e declarações C++ incrementalmente.
- 02Desenvolvido com Clang e LLVM, reutilizando os diagnósticos do compilador do Clang.
- 03Oferece suporte a diretivas #include e à execução interativa de código pela linha de comando.
- 04Emissão de símbolos de depuração e criação de perfil com perf para código compilado com JIT, por meio de variáveis de ambiente.
- 05Kernel Jupyter disponível para uso em notebooks.
Casos de uso
- Testar rapidamente trechos de código C++ ou APIs de bibliotecas sem escrever um programa completo.
- Explorar headers e o comportamento da linguagem C++ de forma interativa.
- Usar C++ em notebooks Jupyter para explorar dados.
- Depurar ou criar perfis de código compilado com JIT durante a execução.
Início rápido
- 1
Clone o repositório llvm-project e faça checkout de cling-latest
git clone https://github.com/root-project/llvm-project.git - 2
Clone cling e compile-o junto com LLVM e Clang usando CMake
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
Compile os alvos clang e cling
cmake --build . --target clang cling - 4
Inicie o interpretador interativo na pasta de build
./bin/cling
Antes de usar
- A compilação exige compilar LLVM e Clang a partir do código-fonte, o que leva tempo.
- No momento, não há snapshots binários nightly disponíveis, então é necessário compilar a partir do código-fonte.
- Parte da documentação e das palestras vinculadas é antiga, e o README informa que as limitações mencionadas nelas estão desatualizadas.
Tópicos
Perguntas frequentes
- O que é cling?
- Um interpretador interativo de C++ baseado em Clang e LLVM, com um REPL para executar código C++ linha por linha. Cling é um interpretador interativo de C++ que implementa um loop de leitura, avaliação e impressão (REPL), permitindo inserir e executar código C++ incrementalmente, sem passar por um ciclo completo de compilação, linkedição e execução. Ele é desenvolvido como uma extensão do LLVM e do Clang e reutiliza os diagnósticos do compilador do Clang.
- cling é gratuito? Qual é a licença?
- cling é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
- cling ainda é mantido?
- Manutenção ativa. O último commit de cling foi em 15 de out. de 2026.
- Para que posso usar cling?
- Testar rapidamente trechos de código C++ ou APIs de bibliotecas sem escrever um programa completo. Explorar headers e o comportamento da linguagem C++ de forma interativa. Usar C++ em notebooks Jupyter para explorar dados. Depurar ou criar perfis de código compilado com JIT durante a execução.
- Como instalar cling?
- Clone o repositório llvm-project e faça checkout de cling-latest: git clone https://github.com/root-project/llvm-project.git Clone cling e compile-o junto com LLVM e Clang usando CMake: 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 Compile os alvos clang e cling: cmake --build . --target clang cling Inicie o interpretador interativo na pasta de build: ./bin/cling
- Onde consigo cling?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/root-project/cling
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Ambiente de avaliação para Rust com um kernel Jupyter e um REPL de linha de comando para executar código interativamente.
Um kernel Haskell para Jupyter que permite executar código Haskell em notebooks, no console e em outras interfaces.
Uma toolchain de compilação que transforma código C e C++ em WebAssembly para execução em navegadores, Node.js e outros runtimes Wasm.
Um compilador Go baseado em LLVM para microcontroladores, WebAssembly (WASM/WASI) e ferramentas de linha de comando.
Engine JavaScript ECMAScript 5.1 escrita em Go puro para incorporar a execução de JS em aplicações Go.