Open thofma opened 3 months ago
Tab completion needs to be moved run on a separate thread. I don't think there are any other good options.
Most of inference supports cancellation (except the IRInterp where the implementation is marked broken) via LimitedAccuracy and the dont_work_on_me flag. It could be hooked to timeout after either some amount of delay or on the next keystroke (particularly better with threads so it could keep running though). I have also been working on resumable inference, which maybe completed soon, and could be used as a basis for this in the REPLCompletions
It's probably clear already, but this is even more of an issue on 1.11+ because of tab completion hinting.
i.e. on 1.11 I hit this just by typing foo().
julia> foo().[ Info: Compiling foo()
And I don't believe we're likely to make 1.11 start up with multiple threads by default, so I think the only option for 1.11 is to add a timeout? Perhaps a shorter timeout for hinting
so I think the only option for 1.11 is to add a timeout?
@vtjnash @Keno do you think thats the case? I think this needs figuring out, ideally before first release
@thofma thanks so much for the workaround!
I'm putting this on the 1.12 milestone as I don't believe it's properly fixable on 1.11
The two non mutually exclusive suggestions are:
@IanButterworth defaulting to many threads is a resource hog and interrupting is not stable at all. Can we have a simpler option that does this effectively instead? (perhaps an env variable that disables the autocomplete hint, to prevent unfixable freezes?)
Note: Base.active_repl does not exist at time when startup.jl is executed so that file can't be used as a "global config" for this purpose very easily.
(cc @stelmo )
Are you following the recommended way to disable it? https://julialang.org/blog/2024/10/julia-1.11-highlights/#improved_tab_completion_and_hinting_in_the_repl
Oh cool. Is that somewhere in docs? (Must have missed it in there)
Sometimes tab completion freezes the REPL. For example, I type
and this gives me a frozen REPL for a few minutes, where not even Ctrl-C does something useful. Not a great user experience (in particular the Ctrl-C not responding part).
@MasonProtter provided the following reproducer (my original example is free of
@generated
):This is with julia 1.10.
Can we make the under the hood type inference give up if the result cannot be returned "immediately"? Alternatively, can we make Ctrl-C work?
Edit: It is really bad on 1.11, where this is triggered by the tab completion "hint", so almost always.
Edit edit: For the fellow victims of this: One can turn it off (on 1.11) by typing the following in the REPL
or putting
in your startup.jl.