VS Code extension v0.14.0 beta

We just finished the third beta release candidate v0.14.0.beta.1 v0.14.0.beta.2 v0.14.0.beta.3 v0.14.0.rc.1 v0.14.0.rc.2 v0.14.0.rc.3 v0.14.0.rc.4 for the Julia extension for VS code here. We’d much appreciate it if we could get some testers to try it out and give feedback on bugs before we release it to the marketplace.

EDIT: We have a new way of distributing pre-release versions of the extension, see here. We are using this new way of distributing pre-release versions for the 0.14 series, so please us the new insider build if you want to help with the testing of the extension.

Here is the list of things we’ve updated for this release:

  • Async indexing of packages. While indexing still takes a while, it now no longer blocks the rest of the functionality of the extension from working until it is finished. There is a visual indication in the status bar while packages are indexed.
  • Improved linting: call number of args check, = used in if conditional, check for pirates, unused free parameter (e.g. where T) check, unhandled include hint, module name clashes.
  • New Code Actions: explicit-reexport, automatically import all package names explicitly labelled within code (i.e. CSTParser.parse(..) -> parse(..)), expand short form functions, add default constructors to struct declarations.
  • Major fixes: fixed handling of unicode characters, prettier Markdown representation of hover documentation, options to disable various linting/DocumentFormat features.
  • Improved macro handling (JuMP, Turing).
  • A large number of bug fixes and robustness improvements.
  • NEW: Support for Julia 1.4.

If you can, please opt into the crash reporting of the extension! It makes finding and fixing bugs a lot easier for us.

To try the release candidate download the VSIX file from and install using the Extensions: Install from VSIX… command follow the instructions here.

I’ll keep adding messages to this thread as we release more betas and release candidates.

Thanks,
David and Zac

25 Likes

Is this expected to work with Julia 1.3.1? The Language Server keeps crashing…
Otherwise it looks great.

Yes, it should work on 1.3.1! I got the crash report, but unfortunately there was an error in the crash reporting that prevents it from sending something useful :frowning: So I’ll have to create a new beta, and then hopefully the same error will happen again, and when you send that new crash report, hopefully we’ll get it…

Alright, here is beta 2, please use that, because otherwise we won’t get useful crash reports!

Download at https://github.com/julia-vscode/julia-vscode/releases/tag/v0.14.0-beta.2

Thanks @PetrKryslUCSD for catching this so early!

2 Likes

Installed beta 2. So far no crashes to report.

And, thank you David and Zac very much for your efforts to provide the community with a decent editor!

1 Like

Is v0.14.0-beta.2 suppose to work with Julia v1.4.0-rc1 or not yet?

I think @ZacLN mentioned that we need to change some more things for 1.4 because of the a[begin] stuff. Not clear to me whether that makes it entirely unusable on 1.4, or whether it is just a few scenarios where things won’t work.

1 Like

@davidanthoff I guess it’d be best if you also replace the link in the announcement. (Not all people will continue reading BEFORE clicking on download :smiley: )

4 Likes

Just have to say, wow. I decided to give VS Code another try with this beta release. It’s working very smoothly and is a really nice experience so far. Thanks for your hard work!

4 Likes

VS Code with the Julia extension is my daily driver so I’ll download and let you know if I have any issues : ) Thanks so much for all the hard work!!! :+1:

2 Likes

I just released beta 3, please update to that version and keep those crash and bug reports coming: https://github.com/julia-vscode/julia-vscode/releases/tag/v0.14.0-beta.3 .

2 Likes

I’ve been using the VS code extension 0.14.0-beta3 for 4 or 5 days, and it’s been running very well. But today I’m seeing a possible bug.

I have a short script that returns a Dictionary. Running it from the REPL works fine - the Dictionary is displayed in the REPL. But running it by hitting F5 whilst the script is the active tab does not work, things seems to be failing at the point where the Dictionary is being displayed in the REPL. The call stack mentions “vscodeserver” a fair amount…

Running from the REPL:

julia> include("XVA/src/precompile.jl")
Executing precompile file
<ETC ETC>
OrderedCollections.OrderedDict{String,Any} with 8 entries:
  "Trades"         => OrderedCollections.OrderedDict{Any,Any}("TradeID"=>["T000001", "T000002", "T000003", "T000004", "T000005"],"
<ETC ETC>

Running by hitting F5:

Executing precompile file
<ETC ETC>
OrderedCollections.OrderedDict{String,Any} with 8 entries:ERROR: MethodError: no method matching size(::WeakRefStrings.StringArray{String,1})
The applicable method may be too new: running in world age 26877, while current world is 27662.
Closest candidates are:
  size(::WeakRefStrings.StringArray) at C:\Users\Philip\.julia\packages\WeakRefStrings\lqf5B\src\WeakRefStrings.jl:193 (method too new to be called from this world context.)
  size(::AbstractArray{T,N}, ::Any) where {T, N} at abstractarray.jl:38
  size(::BitArray{1}) at bitarray.jl:77
  ...
Stacktrace:
 [1] length at .\abstractarray.jl:206 [inlined]
 [2] isempty(::WeakRefStrings.StringArray{String,1}) at .\abstractarray.jl:917
 [3] typeinfo_prefix(::IOContext{Base.GenericIOBuffer{Array{UInt8,1}}}, ::WeakRefStrings.StringArray{String,1}) at .\arrayshow.jl:480
 [4] show_vector(::IOContext{Base.GenericIOBuffer{Array{UInt8,1}}}, ::WeakRefStrings.StringArray{String,1}, ::Char, ::Char) at .\arrayshow.jl:432 (repeats 2 times)
 [5] show(::IOContext{Base.GenericIOBuffer{Array{UInt8,1}}}, ::WeakRefStrings.StringArray{String,1}) at .\arrayshow.jl:418
 [6] show(::IOContext{Base.GenericIOBuffer{Array{UInt8,1}}}, ::Pair{String,WeakRefStrings.StringArray{String,1}}) at .\show.jl:604
 [7] show(::IOContext{Base.GenericIOBuffer{Array{UInt8,1}}}, ::OrderedCollections.OrderedDict{Any,Any}) at .\dict.jl:38
 [8] #sprint#339(::IOContext{REPL.Terminals.TTYTerminal}, ::Int64, ::typeof(sprint), ::Function, ::OrderedCollections.OrderedDict{Any,Any}) at .\strings\io.jl:103
 [9] (::Base.var"#kw##sprint")(::NamedTuple{(:context, :sizehint),Tuple{IOContext{REPL.Terminals.TTYTerminal},Int64}}, ::typeof(sprint), ::Function, ::OrderedCollections.OrderedDict{Any,Any}) at .\none:0
 [10] show(::IOContext{REPL.Terminals.TTYTerminal}, ::MIME{Symbol("text/plain")}, ::OrderedCollections.OrderedDict{String,Any}) at .\show.jl:101
 [11] display(::REPL.REPLDisplay, ::MIME{Symbol("text/plain")}, ::Any) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.3\REPL\src\REPL.jl:132
 [12] display(::REPL.REPLDisplay, ::Any) at D:\buildbot\worker\package_win64\build\usr\share\julia\stdlib\v1.3\REPL\src\REPL.jl:136
 [13] display(::Any) at .\multimedia.jl:323
 [14] (::Main._vscodeserver.var"#9#12"{String,Int64,Int64,String})() at c:\Users\Philip\.vscode\extensions\julialang.language-julia-0.14.0-beta.3\scripts\terminalserver\terminalserver.jl:160
 [15] withpath(::Main._vscodeserver.var"#9#12"{String,Int64,Int64,String}, ::String) at c:\Users\Philip\.vscode\extensions\julialang.language-julia-0.14.0-beta.3\scripts\terminalserver\repl.jl:62
 [16] (::Main._vscodeserver.var"#8#11"{String,Int64,Int64,String})() at c:\Users\Philip\.vscode\extensions\julialang.language-julia-0.14.0-beta.3\scripts\terminalserver\terminalserver.jl:156
 [17] hideprompt(::Main._vscodeserver.var"#8#11"{String,Int64,Int64,String}) at c:\Users\Philip\.vscode\extensions\julialang.language-julia-0.14.0-beta.3\scripts\terminalserver\repl.jl:28
 [18] macro expansion at c:\Users\Philip\.vscode\extensions\julialang.language-julia-0.14.0-beta.3\scripts\terminalserver\terminalserver.jl:152 [inlined]
 [19] (::Main._vscodeserver.var"#7#10")() at .\task.jl:333

julia> 
julia> versioninfo()
Julia Version 1.3.1
Commit 2d5741174c (2019-12-30 21:36 UTC)
Platform Info:
  OS: Windows (x86_64-w64-mingw32)
  CPU: Intel(R) Core(TM) i7-6700 CPU @ 3.40GHz
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-6.0.1 (ORCJIT, skylake)
Environment:
  JULIA_NUM_THREADS = 8
  JULIA_EDITOR = "C:\Users\Philip\AppData\Local\Programs\Microsoft VS Code\Code.exe"

I’m pretty sure this is fixed by Fix a world age bug in the REPL display code by davidanthoff · Pull Request #974 · julia-vscode/julia-vscode · GitHub. If this still appears after we publish a new beta, please open an issue!

1 Like

We have a first release candidate here. Please install and report back any bugs!

1 Like

The new alpha fixed the Makie display issue for me on shift / alt + enter :slight_smile:

2 Likes

For some reason this option (which is new, I think), does not work:

grafik

I unticked it, because of the known wrong behaviour (for local packages). However, it still shows me missing references, so I have to turn off the Linter entirely.

Can you open an issue?

We have a new release candidate: Release v0.14.0-rc.2 · julia-vscode/julia-vscode · GitHub

Please download and test and report any bugs! We hope to release a final version soon!

6 Likes

We have a third release candidate finished, available at Release v0.14.0-rc.3 · julia-vscode/julia-vscode · GitHub.

We made some pretty fundamental changes in some low level routines that hopefully will fix some longstanding bugs. BUT, that means the changes relative to the previous release candidate are pretty substantial…

So, PLEASE download, install and test this release candidate! We need good coverage for this one to make sure the changes we made didn’t introduce any regressions.

1 Like

I use PlotlyJS to produce plots updated from within running code (FinEtoolsFlexBeams.jl/fast_top_examples.jl at 5c7022bd3fe7a80abed749772f94a482e4e3946b · PetrKryslUCSD/FinEtoolsFlexBeams.jl · GitHub). The plot opens within Code, the static graphic is produced, but the dynamic drawings never show up.