You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> 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**.
11
+
12
+
<br >
13
+
14
+
What's the deal with **reactivity**?
15
+
> 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!_
> 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.
20
+
21
+
<br >
22
+
23
+
Will all cells be re-evaluated when I change something?
24
+
> 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.
25
+
26
+
<br >
27
+
28
+
Will my code be **slower**?
29
+
> 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.
30
+
31
+
<br >
32
+
33
+
Can I use **`Plots`**?
34
+
> Yes you can! All plotting back-ends should work right away.
35
+
36
+
37
+
<br >
38
+
39
+
How to use multiple threads in Pluto.jl? `nthreads()` says 1 somehow
40
+
> You can, but you need to set `JULIA_NUM_THREADS` environment variable as described in the [documentation](https://docs.julialang.org/en/v1/manual/environment-variables/#JULIA_NUM_THREADS) for the `worker` spawned by Pluto.jl to pick up.
41
+
<br >
42
+
43
+
Can I use **`[my favourite package]`**?
44
+
> 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:
45
+
> - packages that are made specifically for the REPL or Jupyter
46
+
> - `Distributed`, and packages that use it ([#300](https://github.com/fonsp/Pluto.jl/issues/300))
47
+
48
+
<br >
49
+
50
+
Can I open **multiple notebooks** at the same time?
51
+
> Yes! Click on the logo ( <img src="https://raw.githubusercontent.com/fonsp/Pluto.jl/master/frontend/img/logo.svg" width="60"> ) to go back to the welcome screen. You can use your browser tabs to see multiple notebooks simultaneously.
52
+
53
+
54
+
Can I use Pluto **remotely**?
55
+
> If the server (where Pluto will run) and the client (the machine whose browser will use Pluto) are on the same network then set the host to `0.0.0.0` while launching Pluto (e.g `Pluto.run(host="0.0.0.0"`). An example use case is if you have a headless raspberry pi and a laptop connected to the same wi-fi network in your home. You can run Pluto on the raspberry-pi and use your laptop's browser for development.
56
+
>
57
+
> However if the server is remote and has a public ip you need to set up an _SSH tunnel_. First, log in to your server using SSH and start a Pluto server. Then open a local terminal on your own computer and type:
58
+
>
59
+
> ```bash
60
+
> ssh user@ipaddress -N -L 1234:localhost:1234
61
+
> ```
62
+
> with `user` and `ipaddress` filled in accordingly. You can then go to [`http://localhost:1234/`](http://localhost:1234/) on your own computer to get started! For more info and instructions for Windows, see [this guide](https://medium.com/@apbetahouse45/how-to-run-jupyter-notebooks-on-remote-server-part-1-ssh-a2be0232c533). This can come in handy if your server is on a cloud service such as AWS or Azure. The latter method can be used in the former case too provided an ssh client is available and enabled on both machines.
63
+
64
+
<br >
65
+
66
+
67
+
Can I use **`@async`** to update values reactively on demand?
68
+
> Unfortunately not. Pluto.jl uses _static code analysis_ to determine which cells to run next — it does _not_ use wrappers or a polling mechanism to watch variables in real-time. However, the **`@bind` macro** might be able to do what you want! Have a look at the Interactivity sample inside Pluto. Feel free to open a GitHub issue if this doesn't suit your needs.
69
+
70
+
<br >
71
+
72
+
How can I load `startup.jl`?
73
+
> We want your notebooks to be reproducible, so our suggested method is that you copy and paste your personal setup script into a `begin ... end` block inside your notebook. This avoids implicit dependencies of your notebook. Alternatively, you could write `include("path/to/startup.jl")`, but this will only work on your computer.
74
+
75
+
<br >
76
+
77
+
How can I load a notebook upon launching Pluto?
78
+
> You can pass the `notebook` keyword argument to `Pluto.run`, e.g. `Pluto.run(notebook="/path/to/notebook.jl")`.
79
+
80
+
<br>
81
+
82
+
How can I use a sysimage inside Pluto?
83
+
84
+
> `Pluto.run()` takes a keyword argument `sysimage` which can be used to add sysimage used by each notebook. To load the currently loaded sysimage, start pluto using:
Take a look at our [localization documentation](https://github.com/fonsp/Pluto.jl/tree/main/frontend/lang) to get started! Or at our [developer instructions](https://github.com/JuliaPluto/pluto-developer-instructions)
10
+
We look forward to your contributions! 💛
11
+
12
+
We’re also happy to hear about any issues we may have missed. Before opening a new one, please take a moment to check [this guide](https://github.com/JuliaPluto/Pluto.jl/issues/182).
8
13
9
14
## How to give Feedback
10
15
How is your experience with Pluto? Pluto has a built-in feedback form for complaints, praises, nice-to-haves, or any suggestions you might have, we're always glad to hear from you!
Pluto supports showing messages printed with the [standard library Logging module](https://docs.julialang.org/en/v1/stdlib/Logging/). This can be done using the `@info`, `@warn` and `@error` macro.
A simple way to disable all logs for a notebook is to change the global logger of the Logging module to a [`NullLogger`](https://docs.julialang.org/en/v1/stdlib/Logging/#Logging.NullLogger) which removes all outputs of log messages.
If a package logs warnings or info messages that you want to hide (especially in the static export of the notebook), then the option to hide logs can be toggled by clicking on the cell menu (the three dots on the right).
Pluto supports an integration with the [ProgressLogging.jl](https://github.com/JuliaLogging/ProgressLogging.jl) package which can be used to display a progress bar in the log message area:
To disable capturing and showing standard output inside Pluto and show it inside the terminal instead the `capture_stdout=false` option can be provided to `Pluto.run` when launching Pluto.
0 commit comments