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>>

Reply via email to