- Jupyter kernel now shows errors and warnings inline as you type by running cargo check on the
backend. Running
evcxr\_jupyter --install
before starting jupyter notebook is recommended. It will auto-update when the evcxr jupyter kernel starts, however that update may not effect the current session. - Fixed
:clear
command. - Work around imprecise timestamps on Macs that use a HPFS filesystem
- Added
:toolchain
command to allow specifying rust compiler toolchains (e.g. "nightly"). - Added
:offline
to turn on offline mode when running Cargo. - Various improvements to error reporting.
- Fixed a number of bugs in tab completion.
- Documentation improvements. Thanks Ibraheem!
- Fixed a panic when doing tab completion after loading a crate with a hyphenated name.
- Changed internal parsing logic to use rust-analyzer instead of syn (reduced binary size from 24MB to 20MB).
- Improved semantics for use statements. e.g.
use a::{b, c};
followed byuse a::{b, c, d}
now won't give you errors. - API changes in the evcxr crate (used by the repl and jupyter kernel).
- Support for rustc 1.48.
- Tab completion based on rust-analyzer (in both Jupyter kernel and REPL).
- Minimum rust version is now 1.46
- Now requires rust-src component
- rustup component add rust-src
- Jupyter kernel now supports prompting for input.
- REPL now supports the quit command. Thanks komi
- Fix for a crash in the REPL when certain multiline error were encountered.
- REPL now supports
--edit-mode vi
thanks to aminroosta - REPL now has history-based tab completion thanks to aminroosta
- Works on FreeBSD. Thanks dmilith!
- Multiline errors look much better in the REPL thanks to aminroosta!
- Improved cursor navigation in REPL thanks to Ma27!
- Fixed colored text outputs on Windows. Thanks Mirko and Dmitry!
- Supports async / await using Tokio as the executor.
- Question mark operator can now be used (errors are printed to stderr).
- Now requires rustc >= 1.40.0
- REPL now support multiline input (thanks Thom Chiovoloni!)
- Don't use lld on MacOS, it's broken (thanks Thom Chiovoloni for figuring this out)
- Fixed segfault if executing code without variables followed by code with variables.
- Automatically use lld if it's installed. Use :linker command to override.
- Handle variables that contain type inference placeholders
_
. - Added support for overriding the config dir with the environment variable EVCXR_CONFIG_DIR (thanks Thom Chiovoloni).
- Run prelude.rs after init.evcxr if one exists (thanks Thom Chiovoloni).
- Allow output format to be specified. e.g. :fmt {:#?} (thanks κeen)
- Fixes to work with rust 1.41
- Improved handling of cargo workspaces.
- Now works if the user has overridden Cargo's default target directory (thanks Aloxaf).
- Fixed prompt color (thanks Dmitry Murzin).
- Added a flag to disable use of readline (thanks Dmitry Murzin).
- Fix for binder (thanks Luiz Irber)
- Escape reserved words "async" and "try" when encountered in types.
- Use vendored ZMQ library by default.
- Now support sccache.
- These release notes previously said that this release added support for mixing commands like :dep with code. That feature was actually added a long time ago by David Bernard. Thanks David, and sorry for the confusion.
- No longer preserves variables on panic by default.
- Turns out this was significantly slowing down compilation.
- You can get back the old behavior with
:preserve_vars_on_panic 1
- Put that in your ~/.config/evcxr/init.evcxr or equivalent to always have it.
- Optimization is now back on by default. With the above change, there's now not really any noticable difference in eval times for small amounts of code.
- Fixed runtime error on windows due to something not liking the dll having been renamed.
- Added option :preserve_vars_on_panic, which still defaults to on, but which if turned off will speed up some compilations at the expense of all variables being lost if a panic occurs.
- Revert change to not preserve copy variables on panic as it broke mutation of copy variables. Will reenable in future once it's properly fixed.
- Optimization is now off by default, since many people using a REPL or Jupyter
kernel are experimenting and faster compile times are more important than
faster runtimes.
- If you want it always on, see README.md for how to do that.
- New execution model.
- A single crate is now reused for all compilation. This is a bit faster than the old model where each execution was a separate crate that had a dependency on the previous crates.
- Defined items no longer need to be pub.
- Optimization level can now be set (as opposed to just toggled).
- Reads commands (one per line) from a startup file.
- e.g. ~/.config/evcxr/init.evcxr (on Linux)
- Now uses Rust 2018 edition.
- Don't preserve variables that are Copy on panic.
- Results in a small speedup in some evaluation times.
- If you really want this, you can opt back in via :preserve_copy_types.
- Fix for another upcoming cargo change (due in 1.37).
- Fix with upcomming beta release (1.36) where Cargo started intercepting and wrapping JSON errors from the compiler.
- Give proper error message if a closure or an impl trait is stored into a variable.
- Recover from compilation failure in a case where we previously got out-of-sync with what variables should exist.
- Windows and Mac support! Big thanks to Daniel Griffen for the final fixes and David Bernard for Travis setup.
- Fixed handling of crates with "-" in their name.
- Support relative crate paths.
- Don't error if the same extern crate is given multiple times with slightly different formatting.
- Fix optimization (wasn't actually working before for some reason).
- Give better error message if rustc suggests a private type for a variable.
- Allow variables to be given explicit types.
- A couple of fixes for Windows (probaly not enough for it to actually work though, but it's a start).
- Support for running in Binder.
- :dep no longer automatically adds extern crate. extern crate still automatically adds a dependency, but only if there isn't already a library with the specified name.
- Including ":help" command now works properly in the Jupyter kernel.
- Various fixes related to running on MacOS.
- Numerous other improvements to the Jupyter kernel, in particular making it work with Jupyter Lab.