Skip to content

💡 Choosing Pluto.jl

Ashton Bradley edited this page Jan 21, 2022 · 7 revisions

How is Pluto.jl different from Jupyter?

Pluto.jl was built from the ground up to be a fresh new notebook system, written in Julia. The main differences are that Pluto notebooks are reactive, and that your notebooks are stored as executable .jl files.


What's the deal with reactivity?

You use cells to define variables and functions to be used later. In a reactive notebook, changing a variable or function will automagically re-evaluate all other cells that use it. Just like a speadsheet editor!

this gif

Programming is hard sometimes. Even more so when you need to keep track not only of your code, but also of your session's hidden state. Pluto gives you confidence that the code you see exactly matches the variables you're working with, eliminating bugs before you even knew you had them.


Will all cells be re-evaluated when I change something?

No. Pluto.jl figures out the dependency graph between cells, and knows exactly which cells to re-evaluate, in which order. A cell never executes twice.


Will my code be slower?

Nope - Pluto.jl analyses your code, and then executes the code without modifications. Variables and functions are not wrapped in special objects. After analysis, your code will run on its own.


Can I use Plots!

Yes you can! All plotting back-ends should work right away.


How to use multiple threads in Pluto.jl? nthreads() says 1 somehow

You can, but you need to set JULIA_NUM_THREADS environment variable as described in the documentation for the worker spawned by Pluto.jl to pick up.


Can I use [my favourite package]?

Yes you can! (Probably!) Your code is evaluated as-is, so if it works in the REPL or in Jupyter, it will work in Pluto.jl. There are some exceptions:

  • packages that are made specifically for the REPL or Jupyter
  • Distributed, and packages that use it (#300)