This file describes only major changes, and does not include bug fixes, cleanups, or minor enhancements.
- Add framework for user callbacks
- Faster startup and revision, depending on Julia version
- Starting with Julia 1.5 it will be possible to run Revise with just
using Revise
in yourstartup.jl
file. Older Julia versions will still need the backend-stealing code.
- Allow previously reported errors to be re-reported with
Revise.errors()
- Automatic tracking of methods and included files in
@require
blocks (needs Requires 1.0.0 or higher)
- When running code (e.g., with
includet
), execute lines that "do work" rather than "define methods" using the compiler. The greatly improves performance in work-intensive cases. - When analyzing code to compute method signatures, omit expressions that don't contribute to signatures. By skipping initialization code this leads to improved safety and performance.
- Switch to an O(N) algorithm for renaming frame methods to match their running variants.
- Support addition and deletion of source files.
- Improve handling and printing of errors.
- Revise now warns you when the source files are not synchronized with running code. (timholy#317)
New features:
- Add
entr
for re-running code any time a set of dependent files and/or packages change.
Revise 2.0 is a major rewrite with JuliaInterpreter at its foundation.
Breaking changes:
-
Most of the internal data structures have changed
-
The ability to revise code in Core.Compiler has regressed until technical issues are resolved in JuliaInterpreter.
-
In principle, code that cannot be evaluated twice (e.g., library initialization) could be problematic.
New features:
-
Revise now (re)evaluates top-level code to extract method signatures. This allows Revise to identify methods defined by code, e.g., by an
@eval
block. Moreover, Revise can identify important changes external to the definition, e.g., iffor T in (Float16, Float32, Float32) @eval foo(::Type{$T}) = 1 end
gets revised to
for T in (Float32, Float32) @eval foo(::Type{$T}) = 1 end
then Revise correctly deletes the
Float16
method offoo
. (#243) -
Revise handles all method deletions before enacting any new definitions. As a consequence, moving methods from one file to another is more robust. (#243)
-
Revise was split, with a new package CodeTracking designed to be the "query" interface for Revise. (#245)
-
Line numbers in method lists are corrected for moving code (requires Julia 1.2 or higher) (#278)
Breaking changes:
- The internal structure has changed from using absolute paths for
individual files to a package-level organization that uses
Base.PkgId
keys and relative paths (#217).
New features:
-
Integration with Julia package manager. Revise now follows switches from
dev
ed packages tofree
d packages, and also follows version-upgrades offree
d packages (#217). -
Tracking code in Julia's standard libraries even for users who download Julia binaries. Users of Rebugger will be able to step into such methods (#222).