-
Notifications
You must be signed in to change notification settings - Fork 110
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Eliminate need to parse include paths #49
Conversation
How will this interact with |
Not sure, to be honest. FYI once I finish closing a couple of other issues, I'm planning to tag a v0.1.0 release, fork a 0.6 branch, and then make master 0.7-only. JuliaLang/julia#23898 makes Revise work so much more reliably, I think we really should just focus on making Revise as good as it can be for Julia 1.0. When tagged, the new one will be (at least) v0.2.0, so that if needed we can continue to fix 0.6 on that 0.6 branch. Seem OK to you? |
Sure, I will most likely do the same with TraceCalls. |
Great. Just tagged 0.1. I may have just figured out in principle how to handle deleted specializations. For me I think that's the main reason for Revise to "fail", |
a8b7816
to
c810fcd
Compare
61e2c7d
to
225d186
Compare
Codecov Report
@@ Coverage Diff @@
## master #49 +/- ##
=========================================
- Coverage 85.48% 83.98% -1.5%
=========================================
Files 1 4 +3
Lines 310 306 -4
=========================================
- Hits 265 257 -8
- Misses 45 49 +4
Continue to review full report at Codecov.
|
db17ac7
to
73b9afc
Compare
73b9afc
to
3d08650
Compare
3d08650
to
2b76859
Compare
This should work on sufficiently-recent master, but until CI passes I'm reluctant to merge since I can only test Linux. JuliaLang/julia#23846 |
This is a major redesign: - requires julia-0.7 - relies on new include callbacks and extra information stored in *.ji files to get the list of files to track - splits code base into multiple files for easier navigation and understanding - adopts the Base.root_module interface for working with modules
This eliminates mentions of needing to parse the include path, and makes a few other relevant updates.
8c4771c
to
97dc0bc
Compare
97dc0bc
to
6349790
Compare
This is based on
the not-yet-mergedJuliaLang/julia#23898. Locally it passes all testsuntil it gets to theRevise.track
tests, because there I haven't expunged the dependence on parsing. I'm posting this now because there seems to be room to discuss how this should work:Revise.track(Base)
: perhaps the best approach here would be forbase/sysimg.jl
to keep track of the files it includes, and Revise could just look that information up.More interesting isRevise.track(filename)
, which I'm thinking of in the context of "scripts" for test or analysis code. Currently we recursively track any fileincluded
by that file, based on parsing. If we wanted to replicate that, note that the newRevise.included_files
list includes the entire set, oncefilename
has been included once. The trouble is that if the user has included several files, there doesn't seem to be a great way to know which files got recursively included by which operation. One approach would be to temporarily empty the list and re-includefilename
, but that has some obvious downsides. Overall, here I favor restricting it to be literal, and require users to list each file they want to track.Once merged this will fix #40.