Read-Compile-Run-Loop: tiny and powerful interactive C++ compiler (REPL)
Switch branches/tags
Nothing to show
Clone or download
Latest commit 1c7d0bd Nov 10, 2018

README.md

Read-Compile-Run-Loop: tiny and powerful interactive C++ compiler (REPL)

Windows status Linux Status Language License

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:

youtube video showcase

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:

Interactive C++ Compilation (REPL) Done in a Tiny and Embeddable Way

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.

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 submodules
  • cmake path/to/repo - call cmake to generate the build files
  • cmake --build . - compiles the project
  • the resulting binary is host_app in bin of the build folder