Good news, everyone! The pure-Julia read eval print loop (REPL) that Keno Fischer developed and Mike Nolta integrated into base Julia has just been merged. There are a number of nice things about changing from the old REPL to this new one, in no particular order:
- The old REPL used the GNU readline library, which we had hacked far beyond what it was ever meant to do. This made modifying it a bit terrifying and thus issues with it tended to get ignored or shelved as "we'll be able to do that in the new REPL". - The new REPL, is pretty clean, simple Julia code. Seriously – terminal support<https://github.com/JuliaLang/julia/blob/master/base/Terminals.jl>, line editing<https://github.com/JuliaLang/julia/blob/master/base/LineEdit.jl>, and the REPL itself<https://github.com/JuliaLang/julia/blob/master/base/REPL.jl>are less than 2000 lines of code – *total*. This works out to a net code reduction of 33233 lines of code (GNU readline is 34640 lines of C), while *gaining* functionality. That has to be a project record. - The new code is infinitely easier to modify, fix and improve, so REPL-replated bugs will probably get fixed lickety split going forward. - The old GNU readline REPL was one of our GPL library dependencies that make the total Julia "product" GPL. We'd like to shed these or make them optional to allow for a non-GPL, MIT-licensed Julia distribution and this is a major step toward that goal. - The new REPL code already has fancy features that you wouldn't even think about doing with readline. Try typing "?" or ";" at the prompt and see the REPL mode change form "julia>" to "help>" or "shell>". Cool, huh? - The new REPL is noticeably snappier than the old one. Combined with the static compilation of julia introduced in 0.3, going from zero to REPL is pretty quick these days. - Since full-fledged line editing functionality is now built into Base Julia, we can use it everywhere without worrying what libraries people have installed. Once we settle on a good API, you can expect that user code that needs to prompt for input will be just as slick as the REPL itself. There will, of course, be some hitches and road bumps, but now that this is merged and everyone using Julia master will be testing it, they should get sorted out in short order. Much applause for Keno and Mike for this excellent work. Stefan
<<attachment: good news everyone.jpg>>
