Colección modular de tecnologías para compiladores y cadenas de herramientas, que incluye el núcleo de LLVM, el frontend Clang para C/C++, libc++ y el linker LLD.
root-project/cling
Intérprete interactivo de C++ basado en Clang y LLVM que ofrece un REPL para ejecutar código C++ línea por línea.
- Estrellas
- 4,201
- Forks
- 313
- Issues abiertos
- 138
- Último commit
- hace 7 días
¿Qué es?
Cling es un intérprete interactivo de C++ que implementa un bucle de lectura, evaluación e impresión (REPL), por lo que permite introducir y ejecutar código C++ de forma incremental, sin tener que completar el ciclo de compilación, enlace y ejecución. Está desarrollado como una extensión de LLVM y Clang, y reutiliza los diagnósticos del compilador de Clang.
El proyecto se puede compilar de forma independiente con una instalación existente de LLVM/Clang o junto con LLVM desde una rama específica de llvm-project. Al ejecutar el binario cling, se pueden introducir directamente sentencias de C++ y directivas include. También ofrece comandos con prefijo de punto, como .help, para el uso interactivo.
Cling también permite depurar y perfilar código interpretado (compilado con JIT) mediante las variables de entorno CLING_DEBUG y CLING_PROFILE, y proporciona un kernel de Jupyter que se puede instalar después de compilarlo.
Funciones clave
- 01REPL interactivo para ejecutar sentencias y declaraciones de C++ de forma incremental.
- 02Basado en Clang y LLVM, y reutiliza los diagnósticos del compilador de Clang.
- 03Admite directivas #include y la ejecución interactiva de código desde la línea de comandos.
- 04Emisión de símbolos de depuración y perfilado con perf del código compilado con JIT mediante variables de entorno.
- 05Incluye un kernel de Jupyter para usar en notebooks.
Casos de uso
- Probar rápidamente fragmentos de C++ o API de bibliotecas sin escribir un programa completo.
- Explorar headers y el comportamiento del lenguaje C++ de forma interactiva.
- Usar C++ en notebooks de Jupyter para explorar datos.
- Depurar o perfilar código compilado con JIT en tiempo de ejecución.
Inicio rápido
- 1
Clona el repositorio llvm-project y cambia a la rama cling-latest
git clone https://github.com/root-project/llvm-project.git - 2
Clona cling y compílalo junto con LLVM y 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
Compila los objetivos clang y cling
cmake --build . --target clang cling - 4
Inicia el intérprete interactivo desde la carpeta de compilación
./bin/cling
Antes de usarlo
- La compilación requiere compilar LLVM y Clang desde el código fuente, lo que lleva tiempo.
- Actualmente no hay instantáneas binarias nightly disponibles, por lo que debes compilar desde el código fuente.
- Parte de la documentación y de las charlas enlazadas es antigua, y el README indica que las limitaciones que mencionan ya no están actualizadas.
Temas
Preguntas frecuentes
- ¿Qué es cling?
- Intérprete interactivo de C++ basado en Clang y LLVM que ofrece un REPL para ejecutar código C++ línea por línea. Cling es un intérprete interactivo de C++ que implementa un bucle de lectura, evaluación e impresión (REPL), por lo que permite introducir y ejecutar código C++ de forma incremental, sin tener que completar el ciclo de compilación, enlace y ejecución. Está desarrollado como una extensión de LLVM y Clang, y reutiliza los diagnósticos del compilador de Clang.
- ¿cling es gratuito? ¿Qué licencia tiene?
- cling es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿cling sigue mantenido?
- Mantenimiento activo. El último commit de cling fue el 15 oct 2026.
- ¿Para qué puedo usar cling?
- Probar rápidamente fragmentos de C++ o API de bibliotecas sin escribir un programa completo. Explorar headers y el comportamiento del lenguaje C++ de forma interactiva. Usar C++ en notebooks de Jupyter para explorar datos. Depurar o perfilar código compilado con JIT en tiempo de ejecución.
- ¿Cómo se instala cling?
- Clona el repositorio llvm-project y cambia a la rama cling-latest: git clone https://github.com/root-project/llvm-project.git Clona cling y compílalo junto con LLVM y 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 Compila los objetivos clang y cling: cmake --build . --target clang cling Inicia el intérprete interactivo desde la carpeta de compilación: ./bin/cling
- ¿Dónde consigo cling?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/root-project/cling
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Un entorno de evaluación para Rust que ofrece un kernel de Jupyter y un REPL de línea de comandos para ejecutar código de forma interactiva.
Un kernel de Haskell para Jupyter que permite ejecutar código Haskell en notebooks, la consola y otros frontends de Jupyter.
Una cadena de herramientas de compilación que convierte código C y C++ en WebAssembly para ejecutarlo en navegadores, Node.js y otros runtimes de Wasm.
Un compilador de Go basado en LLVM que genera código para microcontroladores, WebAssembly (WASM/WASI) y herramientas de línea de comandos.
Motor de JavaScript ECMAScript 5.1 escrito íntegramente en Go, para integrar la ejecución de JS en aplicaciones Go.