"Живой" код и быстрое прототипирование с С++ и LLVM JIT?

Возможно, вы уже видели Брет Виктор "живой" JS IDE или некоторые из альтернативные реализации, которые он вдохновлял, распространяясь на другие языки, но сохраняя их на основе VM.

Вчера, однако, я наткнулся на ту же концепцию, примененную в старом добром С++, благодаря LLVM. Все еще очень ранняя и незрелая реализация, но с большим потенциалом.

Мне было очень интересно, но автор имеет и не может отпустить его на открытое.

Итак, мой вопрос: кто-нибудь знает о ресурсе о том, как реализовать подобную функциональность, я имею в виду почти мгновенную компиляцию и два соединения, давая обратную связь в реальном времени от кода, позволяя визуальной части изменять или даже генерировать и просматривать дополнительный код?

Ответ 1

На основе CLA-интерпретатора C-С++, называемого "Cling", может быть соответствующий фрагмент кода. Посмотрите, как его можно использовать для создания графического интерфейса в режиме реального времени: http://www.youtube.com/watch?v=BrjV1ZgYbbA

Ответ 2

Linux: если кто-то хочет наивный способ протестировать быстрый код C/С++ почти в реальном времени, вы можете использовать этот кусок кода, который я собрал:

#!/bin/bash
#Requires: inotify-tools
################################
# Adjust values:
terminal="xterm"
editor="vim"
compiler="clang++"
################################
if [[ $1 == "" ]]; then
    echo "Usage: $0 example.cpp";
    exit
fi
file_to_edit=$1
file_output=${file_to_edit%%.*}
(while(true); do 
    change=$(inotifywait -q -e close_write,moved_to,create .);
    change=${change#./ * }
    if [ "$change" = "$file_to_edit" ]; then
        ($compiler $file_to_edit -o $file_output);
    fi
done) & > /dev/null
$terminal -e "watch -n 1 ./$file_output" &
$editor $file_to_edit;
pkill -P $$

ПРИМЕЧАНИЕ. Для этого требуется пакет "inotify-tools".

Как это работает?

1) Он откроет терминал (по умолчанию: xterm), в котором каждая секунда будет выполнять двоичный файл с помощью команды "смотреть" (если файл не существует, он просто отобразит "не найденную ошибку" )

2) Если ваш код на C/С++ изменяется, он скомпилирует его (компилятор по умолчанию: clang++, но вы можете использовать gcc и т.д.). Вы можете изменить команду компиляции, если хотите: $compiler $file_to_edit -o $file_output

3) Он откроет файл с выбранным редактором (по умолчанию - vim).

4) На выходе закройте терминал и процесс мониторинга.