Awesome! And this is not just REPL. I think this software will bring up metaprogramming into a new level. We can instantiate template class at runtime (at configuration phase) and plug it into a working program. As result we get flexible runtime configuration with zero-overhead abstractions at the same time.
Absolutely awesome! Add tab completion and maybe syntax highlighting and it sounds pretty powerful...
One thing I'm missing in interactive interpreters is a way to save code to a file on the fly - testing things and preparing the output file in one go. Does anybody know a solution to this for, say, Python?
Jupyter runs on the command line. It started out as a fancy Python REPL replacement (IPython), the notebook part has been a relatively new development.
https://root.cern.ch/ has tab completion and syntax highlighting. Also scripting support and built in reflection. It integrates with Python and R too, and you can move objects between the languages.
Just run it inside Emacs and you'll have a log of everything you do. In fact you could overlay C++ mode on top of shell mode and have syntax highlighting and everything.
It does actually: http://imgur.com/eN9asVz. At some point I need to get around to creating a snazzy landing page for people not coming from the julia world, but who has the time ;).
The instructions in the README should work fine to get it running. Please do let me know if they don't for you. We're planning to make it effortlessly installable with julia 0.5 once that's released, but we're not there yet.
The build process took a long time. But it works fine :). I had no problems getting it to work on
C++ > system("uname -a");
Linux KaliBaseVm 4.0.0-kali1-amd64 #1 SMP Debian 4.0.4-1+kali2 (2015-06-03) x86_64 GNU/Linux
So that's nice :D
EDIT:
Honestly I feel kinda bad about dismissing this project so quickly. It works really well, and now that I took a better look at the examples I must say that it actually looks quite elegant. I didn't understand what I was seeing at first :o
Cool! Is the code available anywhere? There's a couple of projects doing this and it would be good to share code. I assume this is using Clang? Do you have a list of things you'd like to see in upstream Clang? I'd imagine such a list of things would overlap quite a bit with what I or the cling folks need. If there's enough of a support base we might just be able to have upstream implement it.
This is exciting. I'm excited to see keno here too. He has been really helpful in helping get Cxx.jl working. It's awesome. Being able to interactively work on c++ and to load external dynamic libraries is really useful. Thanks for working on this I can't wait to see where this goes.
Maybe this is already on their list, but I'd strongly encourage support for some kind of object or value introspection (a la iPython -- I know this would be difficult since it's kind like apples and oranges) as well as tab-completion pulling from that information. This is the major thing missing from Cling that prevents me from finding it really useful.
Is there a "production-ready" front-end for Fortran on top of LLVM? PGI announced one but I haven't seen anything released yet.
Edit: and most of the work with this kind of project is about integrating into the Front-end, so LLVM-based or not does not really help for the amount of work to put in.
32 comments
[ 3.1 ms ] story [ 87.0 ms ] threadOne thing I'm missing in interactive interpreters is a way to save code to a file on the fly - testing things and preparing the output file in one go. Does anybody know a solution to this for, say, Python?
http://jupyter.org/
[1]: https://github.com/bpython/bpython
For example "%save mycode.py 1-10" saves the code input on lines 1 through 10 of the session to the file "mycode.py".
It opens your system editor and then runs the code on save. (-p opens the last edited thing from within the current ipython session)
Can't wait until this is finished given certain tendencies to use C++ as a scripting language...
Thanks
EDIT:
Honestly I feel kinda bad about dismissing this project so quickly. It works really well, and now that I took a better look at the examples I must say that it actually looks quite elegant. I didn't understand what I was seeing at first :o
Edit: and most of the work with this kind of project is about integrating into the Front-end, so LLVM-based or not does not really help for the amount of work to put in.