We already have that capability.
You tend to think of Pluto.jl just for notebooks and interactivity (and possibly graphs), but it’s a pure Julia file with all you need, an implied Manifest.toml file, in just one file. I haven’t checked if I can run it from the shell (or as a REPL, as with ipython), but I would at least want that. That said I’ve made a 30% smaller sysimage, with 20% faster startup that would be good for scripting. Another problem with your “Install all using
packages without prompting” is that it’s not reproducible, it doesn’t know the exact package used, so must assume latest version ok, and install that. In many cases would be ok, but better to specify. I guess that’s what Pluto does if handed a .jl file without the (otherwise hidden) markup. Another problem is the implied --startup-file=yes
so in effect anything could happen at runtime, Pluto disables that, I believe. [I believe also it adds threads, a non-default in Julia, and possibly not wanted…]
Starting with version 0.15, Pluto has a built-in package manager, which means:
1. Packages are automatically installed when you use
import
orusing
.
2. Your package environment is stored inside the notebook file. When someone else opens your notebook with Pluto, the exact same package environment will be used, and packages will work on their computer.
These two features are designed to make it easy to write and share reproducible notebooks.
Your last point about caching compiled code is part of my tiny executable idea, i.e. would make .ji files with compiled code automatically, which would be good for default Julia, and then help Pluto also automatically: