{"id":13441071,"url":"https://github.com/onqtam/rcrl","last_synced_at":"2025-04-06T18:17:35.514Z","repository":{"id":73734419,"uuid":"115033594","full_name":"onqtam/rcrl","owner":"onqtam","description":"Read-Compile-Run-Loop: tiny and powerful interactive C++ compiler (REPL)","archived":false,"fork":false,"pushed_at":"2022-06-19T10:43:26.000Z","size":134,"stargazers_count":413,"open_issues_count":6,"forks_count":37,"subscribers_count":22,"default_branch":"master","last_synced_at":"2025-03-30T17:09:08.052Z","etag":null,"topics":["c-plus-plus","cling","cpp","dll","hot-reload","live-coding","productivity","read-eval-print-loop","repl","runtime-compilation"],"latest_commit_sha":null,"homepage":"http://onqtam.github.io/programming/2018-02-12-read-compile-run-loop-a-tiny-repl-for-cpp/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/onqtam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2017-12-21T18:07:27.000Z","updated_at":"2025-01-25T18:59:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"325e2b6b-b733-4206-a272-e1d3e9d95518","html_url":"https://github.com/onqtam/rcrl","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onqtam%2Frcrl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onqtam%2Frcrl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onqtam%2Frcrl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/onqtam%2Frcrl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/onqtam","download_url":"https://codeload.github.com/onqtam/rcrl/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247526768,"owners_count":20953143,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c-plus-plus","cling","cpp","dll","hot-reload","live-coding","productivity","read-eval-print-loop","repl","runtime-compilation"],"created_at":"2024-07-31T03:01:29.599Z","updated_at":"2025-04-06T18:17:35.490Z","avatar_url":"https://github.com/onqtam.png","language":"C++","readme":"## Read-Compile-Run-Loop: tiny and powerful interactive C++ compiler (REPL)\n\n[![Windows status](https://ci.appveyor.com/api/projects/status/fp0sqit57eorgswb/branch/master?svg=true)](https://ci.appveyor.com/project/onqtam/rcrl/branch/master)\n[![Linux Status](https://travis-ci.org/onqtam/rcrl.svg?branch=master)](https://travis-ci.org/onqtam/rcrl)\n[![Language](https://img.shields.io/badge/language-C++-blue.svg)](https://isocpp.org/)\n[![License](http://img.shields.io/badge/license-MIT-blue.svg)](http://opensource.org/licenses/MIT)\n\nRCRL is a tiny engine for interactive C++ compilation and execution (implemented in just a few source files - [```src/rcrl```](src/rcrl)) and works on any platform with any toolchain - the main focus is easy integration. It supports:\n- mixing includes, type/function definitions, persistent variable definitions and statements meant only for function scope\n- interacting with the host application through dll-exported symbols (after linking to it)\n\nWatch this youtube video to see it in action with commentary:\n\n[![youtube video showcase](https://onqtam.github.io/assets/images/rcrl.gif)](https://www.youtube.com/watch?v=HscxAzFc2QY)\n\nIt is an elegant alternative to [cling](https://github.com/root-project/cling) (and [other projects](https://github.com/inspector-repl/inspector) that are built on top of it).\n\nI gave a 30 minute talk about it at CppCon 2018 showing it integrated in a small but functional game engine:\n\n[![youtube cppcon video showcase](https://onqtam.github.io/assets/images/rcrl_youtube_cppcon_thumbnail.png)](https://www.youtube.com/watch?v=UEuA0yuw_O0)\n\nThis 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.\n\nCheckout this [blog post](https://onqtam.github.io/programming/2018-02-12-read-compile-run-loop-a-tiny-repl-for-cpp/) if you are curious **how to use** it, **how it works** and **how to integrate** it.\n\n## A fork of RCRL using libclang\n\n[@Islam0mar](https://github.com/Islam0mar) has been developing the project further [in his fork](https://github.com/Islam0mar/rcrl) where libclang is used, along with [a few other changes](https://github.com/Islam0mar/rcrl#the-new-recipe).\n\n## Building\n\nThe demo is tested on Windows/Linux/MacOS and uses OpenGL 2.\n\nYou will need:\n- CMake 3.0 or newer\n- A C++14 capable compiler (tested with VS 2015+, GCC 5+, Clang 3.6+)\n\nThe 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:\n\n- ```git submodule update --init``` - checks out the submodules\n- ```cmake path/to/repo``` - call cmake to generate the build files\n- ```cmake --build .``` - compiles the project\n- the resulting binary is ```host_app``` in ```bin``` of the build folder\n","funding_links":[],"categories":["C++","Tools"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonqtam%2Frcrl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fonqtam%2Frcrl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fonqtam%2Frcrl/lists"}