scroll
v0.1.0Interactive notebook for March — Livebook-style in the browser
$ forge add scrollScroll
Interactive notebook for March — Livebook-style in the browser.
Notebooks are plain Markdown files (.scrollmd) with fenced March code blocks. Open them in the browser, run cells interactively, and save changes back to disk.
Installation
Scroll is a forge tool: installing it adds the scroll.serve command. It's listed on the forge registry at <https://forgepm.org/packages/scroll>.
Install directly from the GitHub source:
forge install https://github.com/march-language/scrollOr from a local checkout:
git clone https://github.com/march-language/scroll
forge install ./scrollUsage
Start a notebook server
# Open an existing notebook
forge scroll.serve mynotebook.scrollmd
# Create a new notebook (opens a blank one in the browser)
forge scroll.serve
# Specify a port (default: 4040)
forge scroll.serve mynotebook.scrollmd --port 8080Notebook format
A .scrollmd file is standard Markdown. Code cells use fenced March blocks:
# My Notebook
Some prose here.
```march
let x = 6 * 7x
- **Markdown cells** — rendered as HTML in the browser
- **Code cells** — run in sequence; each cell sees bindings from earlier cells
- **`let` bindings** are silent (no auto-print), just like a REPL assignment
- **Plain expressions** auto-print their value if non-unit
### Server cells
Long-running processes (HTTP servers, background workers) use the `march:server` fence:
````markdown
```march:server
HttpServer.start(3000)
Server cells run as background processes with Start/Stop controls in the UI.
## Running tests
```bash
cd /path/to/scroll
# Unit tests (149 tests)
MARCH_LIB_PATH=lib march test test/test_scroll.march
# End-to-end tests over the notebook WebSocket protocol
python3 test/test_scroll.pyNote:
forge test currently fails to link the compiled test binary due to three upstream march toolchain bugs (nested-namespace name mangling in the linker, a module init-order bug in the interpreter, and a hang in compiled test binaries on arm64 macOS). Use march test in interpreter mode instead — it runs the same 117 unit tests without those issues.Development
After editing lib/scroll.march, changes are live immediately — no reinstall needed when installed as a path archive (forge install scroll@./).