Read-Compile-Run-Loop: tiny and powerful interactive C++ compiler (REPL)
RCRL is a tiny engine for interactive C++ compilation and execution (implemented in just a few source files - src/rcrl
) and works on any platform with any toolchain - the main focus is easy integration. It supports:
- mixing includes, type/function definitions, persistent variable definitions and statements meant only for function scope
- interacting with the host application through dll-exported symbols (after linking to it)
Watch this youtube video to see it in action with commentary:
It is an elegant alternative to cling (and other projects that are built on top of it).
I gave a 30 minute talk about it at CppCon 2018 showing it integrated in a small but functional game engine:
This repository is a demo project with GUI but the RCRL engine can be integrated in any way with host applications - code may be submitted even from external editors with full syntax highlighting and code completion! The goal was not to make a one-size-fits-all solution because that is hardly possible - but to demonstrate how the core of RCRL can be integrated.
Checkout this blog post if you are curious how to use it, how it works and how to integrate it.
A fork of RCRL using libclang
@Islam0mar has been developing the project further in his fork where libclang is used, along with a few other changes.
Building
The demo is tested on Windows/Linux/MacOS and uses OpenGL 2.
You will need:
- CMake 3.0 or newer
- A C++14 capable compiler (tested with VS 2015+, GCC 5+, Clang 3.6+)
The repository makes use of a few third party libraries and they are setup as submodules of the repo (in src/third_party/
). Here are the steps you'll need to setup, build and run the project after cloning it:
git submodule update --init
- checks out the submodulescmake path/to/repo
- call cmake to generate the build filescmake --build .
- compiles the project- the resulting binary is
host_app
inbin
of the build folder