One workbook, multiple runtimes
Languages and packages
Supported languages
| Choice | Runtime or purpose | First thing to try |
|---|---|---|
| Python | Pyodide | print(2 ** 10) |
| R | webR | mean(c(2, 4, 8)) |
| SWI-Prolog | swipl-wasm | member(X, [red, blue]). |
| Bash | Brush shell | printf 'hello\n' |
| JavaScript | Browser runtime | [1, 2, 3].map(x => x * x) |
| Lua | Fengari | print(2 ^ 10) |
| TypR | Typed R compiled to R | Install an example workbook first |
| ClojureScript | Scittle | (map #(* % %) [1 2 3]) |
| Markdown | Rendered text and math | ## Notes |
Use Menu → Languages (or Languages & modes in Pro) to hide choices you do not use. Hiding a language does not unload a runtime that is already in memory.
Python packages
Install compatible packages from a Python cell:
%pip install package-namePure-Python packages work directly. Packages with native extensions need WebAssembly-compatible wheels.
R packages
Use install.packages() or SciREPL’s %install helper. Only packages available for webR/WebAssembly can load. A package’s first installation may take time; later sessions can reuse cached assets.
Catalogue workbooks and bundles
Browse Packages, Bundles & Workbooks reads a verified SciREPL Catalog channel. Stable and release channels use static descriptors rather than GitHub API calls. A bundle can install workbooks, data, modules, and compatible WebAssembly assets together.
Catalogue integrity verifies the downloaded descriptor and archive; it does not make arbitrary notebook code safe. Inspect unfamiliar cells before running them.
Cross-language data
Use SharedVFS for ordinary files and Notebook VFS for cell source/output. This is usually clearer than copying large values through the clipboard. See Files, import, and export.