[ANN] IJulia 1.30.0

Salutations \o

IJulia.jl has been around forever, but v1.30 was just been released and it’s quite a big one so I felt it deserves an announcement post.

The main change in this version is that the internals have been completely refactored to allow:

  • Full tests of the eventloop for the first time.
  • A precompilation workload to improve TTFX.

With luck you may notice a slight improvement to kernel TTFX with the precompile workload, and with some inference improvements we made to make precompilation more effective. While there is no breaking change to the public API it’s possible that some packages depend on internals and will break (e.g. please use ProgressMeter.jl 1.11). For this reason please look out for any strange behaviour of IJulia or other packages running in IJulia since it may be a bug caused by all the refactoring.

And lots of credit goes to everyone who helped out with the refactor, particularly @stevengj, @Mason, and @halleysfifthinc :heart:


If you haven’t kept up to date with IJulia recently you might want to check out the changelog to see what’s changed. Some notable improvements in previous versions from this year are:

  • A deadlock was fixed that would cause the IJulia kernel to hang when shutting down (v1.28.1).
  • IJulia doesn’t hardcode a path in the kernel files now so it’s possible to use whatever IJulia version is installed in a notebook environment instead of the global environment (v1.28.0).
  • IJulia kernels previously weren’t shut down properly when exiting notebook() or jupyterlab(), now they are (v1.29.0).
  • notebook() and jupyterlab() now support passing verbose=true to show the command output, and passing arguments to their underlying command (v1.29.0).
32 Likes

Great! Sometime ago when I used Jupyter, I did feel start/restart Julia kernel is much slower than the Python one. I’m glad this issue is resolved.

1 Like

IJulia v1.31 is out now, the big improvement in this release is a PythonCall.jl extension to add support for ipywidgets and interactive matplotlib plots: Using IJulia · IJulia

Previously there were also 6 patch releases in the v1.30 series, mostly covering bug fixes from the big v1.30.0 refactor and some improvements to TTFX by lazy-loading Pkg.jl and Conda.jl.

15 Likes

Hey all, IJulia v1.32 has been released. There’s a bunch of bug fixes and internal changes, but most importantly IJulia now detects when juliaup is being used. Previously it was necessary to rebuild IJulia every time the Julia binary path changed, meaning it had to be done for every minor and patch release. Now, if juliaup is detected the kernel spec will run julia +major.minor, so if you’re using juliaup it’ll only be necessary to rebuild IJulia for each Julia minor release instead of each patch release.

There was also some work done to improve inferability and precompilation, so IJulia should be a smidgen snappier than before.

8 Likes

Alas, this turned out to be very buggy so it’s been disabled in IJulia v1.32.1 :smiling_face_with_tear:

(but it will be back in a future release)

1 Like