Skip to content

Releases: wspringer/lilypond-wasi

LilyPond 2.27.3+gca8dc08 (dev) — recipe 0.1.3

Choose a tag to compare

LilyPond 2.27.3 (dev line,
upstream gca8dc08) compiled to wasm32-unknown-wasi,
built by recipe 0.1.3.

Verified on this runner: the module engraves SVG under wasmtime before publishing.

Running it

Needs a WASI Preview 1 host with WebAssembly exception handling (the
module uses the modern try_table/exnref encoding), the asset tree
mounted, and Guile's Scheme library available:

wasmtime run -W exceptions=y \
  --dir "$PWD/work::/work" \
  --dir "$PWD/lilypond::/lilypond" \
  --dir "<guile>/share/guile/3.0::/guile" \
  --dir "<guile>/lib/guile/3.0/ccache::/guile-ccache" \
  --env LILYPOND_DATADIR=/lilypond \
  --env FONTCONFIG_FILE=/lilypond/fonts/fonts.conf \
  --env GUILE_LOAD_PATH=/guile \
  --env GUILE_LOAD_COMPILED_PATH=/guile-ccache \
  --env GUILE_SYSTEM_PATH=/guile \
  --env GUILE_SYSTEM_COMPILED_PATH=/guile-ccache \
  --env HOME=/work/home --env TMPDIR=/work/tmp \
  --env XDG_CACHE_HOME=/work/cache \
  --argv0 /lilypond \
  lilypond-wasi-2.27.3-dev.wasm \
  --formats=svg -o /work/out /work/in.ly

Mounting the bytecode tarball as (and appending
to ) cuts startup ~5x —
measured 4.7 s -> 0.9 s for a small score.

Formats are SVG and EPS. PDF and PNG need Ghostscript, which cannot
run under WASI — convert host-side, or use native LilyPond.

Nix users need none of this: the flake's nixConfig points at
lilypond-wasi.cachix.org (pass --accept-flake-config).

0.1.3 (2026-08-25)

Choose a tag to compare

@knope-bot knope-bot released this 25 Aug 10:01
62e58a4

Features

  • cairo backend in the wasm engine — native PDF and PNG

Fixes

  • normalize permissions in release tarballs (#8)

LilyPond 2.26.1 (stable) — recipe 0.1.3

Choose a tag to compare

@github-actions github-actions released this 25 Aug 10:11
62e58a4

LilyPond 2.26.1 (stable line,
upstream g8d6b320) compiled to wasm32-unknown-wasi,
built by recipe 0.1.3.

Verified on this runner: the module engraves SVG under wasmtime before publishing.

Running it

Needs a WASI Preview 1 host with WebAssembly exception handling (the
module uses the modern try_table/exnref encoding), the asset tree
mounted, and Guile's Scheme library available:

wasmtime run -W exceptions=y \
  --dir "$PWD/work::/work" \
  --dir "$PWD/lilypond::/lilypond" \
  --dir "<guile>/share/guile/3.0::/guile" \
  --dir "<guile>/lib/guile/3.0/ccache::/guile-ccache" \
  --env LILYPOND_DATADIR=/lilypond \
  --env FONTCONFIG_FILE=/lilypond/fonts/fonts.conf \
  --env GUILE_LOAD_PATH=/guile \
  --env GUILE_LOAD_COMPILED_PATH=/guile-ccache \
  --env GUILE_SYSTEM_PATH=/guile \
  --env GUILE_SYSTEM_COMPILED_PATH=/guile-ccache \
  --env HOME=/work/home --env TMPDIR=/work/tmp \
  --env XDG_CACHE_HOME=/work/cache \
  --argv0 /lilypond \
  lilypond-wasi-2.26.1-stable.wasm \
  --formats=svg -o /work/out /work/in.ly

Mounting the bytecode tarball as (and appending
to ) cuts startup ~5x —
measured 4.7 s -> 0.9 s for a small score.

Formats are SVG and EPS. PDF and PNG need Ghostscript, which cannot
run under WASI — convert host-side, or use native LilyPond.

Nix users need none of this: the flake's nixConfig points at
lilypond-wasi.cachix.org (pass --accept-flake-config).

LilyPond 2.27.3 (dev) — recipe 0.1.3

Pre-release

Choose a tag to compare

@github-actions github-actions released this 25 Aug 10:03
62e58a4

LilyPond 2.27.3 (dev line,
upstream g32e3cc2) compiled to wasm32-unknown-wasi,
built by recipe 0.1.3.

Verified on this runner: the module engraves SVG under wasmtime before publishing.

Running it

Needs a WASI Preview 1 host with WebAssembly exception handling (the
module uses the modern try_table/exnref encoding), the asset tree
mounted, and Guile's Scheme library available:

wasmtime run -W exceptions=y \
  --dir "$PWD/work::/work" \
  --dir "$PWD/lilypond::/lilypond" \
  --dir "<guile>/share/guile/3.0::/guile" \
  --dir "<guile>/lib/guile/3.0/ccache::/guile-ccache" \
  --env LILYPOND_DATADIR=/lilypond \
  --env FONTCONFIG_FILE=/lilypond/fonts/fonts.conf \
  --env GUILE_LOAD_PATH=/guile \
  --env GUILE_LOAD_COMPILED_PATH=/guile-ccache \
  --env GUILE_SYSTEM_PATH=/guile \
  --env GUILE_SYSTEM_COMPILED_PATH=/guile-ccache \
  --env HOME=/work/home --env TMPDIR=/work/tmp \
  --env XDG_CACHE_HOME=/work/cache \
  --argv0 /lilypond \
  lilypond-wasi-2.27.3-dev.wasm \
  --formats=svg -o /work/out /work/in.ly

Mounting the bytecode tarball as (and appending
to ) cuts startup ~5x —
measured 4.7 s -> 0.9 s for a small score.

Formats are SVG and EPS. PDF and PNG need Ghostscript, which cannot
run under WASI — convert host-side, or use native LilyPond.

Nix users need none of this: the flake's nixConfig points at
lilypond-wasi.cachix.org (pass --accept-flake-config).

0.1.2 (2026-08-24)

Choose a tag to compare

@knope-bot knope-bot released this 24 Aug 15:10
86b1845

Features

  • self-sufficient releases — Guile ccache tarball + runtime manifest

0.1.1 (2026-08-24)

Choose a tag to compare

@knope-bot knope-bot released this 24 Aug 14:25
199c573

Features

  • precompiled Guile bytecode per variant — startup 4.7s -> 0.9s

LilyPond 2.26.1 (stable) — recipe 0.1.2

Choose a tag to compare

@github-actions github-actions released this 24 Aug 15:13
86b1845

LilyPond 2.26.1 (stable line,
upstream g8d6b320) compiled to wasm32-unknown-wasi,
built by recipe 0.1.2.

Verified on this runner: the module engraves SVG under wasmtime before publishing.

Running it

Needs a WASI Preview 1 host with WebAssembly exception handling (the
module uses the modern try_table/exnref encoding), the asset tree
mounted, and Guile's Scheme library available:

wasmtime run -W exceptions=y \
  --dir "$PWD/work::/work" \
  --dir "$PWD/lilypond::/lilypond" \
  --dir "<guile>/share/guile/3.0::/guile" \
  --dir "<guile>/lib/guile/3.0/ccache::/guile-ccache" \
  --env LILYPOND_DATADIR=/lilypond \
  --env FONTCONFIG_FILE=/lilypond/fonts/fonts.conf \
  --env GUILE_LOAD_PATH=/guile \
  --env GUILE_LOAD_COMPILED_PATH=/guile-ccache \
  --env GUILE_SYSTEM_PATH=/guile \
  --env GUILE_SYSTEM_COMPILED_PATH=/guile-ccache \
  --env HOME=/work/home --env TMPDIR=/work/tmp \
  --env XDG_CACHE_HOME=/work/cache \
  --argv0 /lilypond \
  lilypond-wasi-2.26.1-stable.wasm \
  --formats=svg -o /work/out /work/in.ly

Mounting the bytecode tarball as (and appending
to ) cuts startup ~5x —
measured 4.7 s -> 0.9 s for a small score.

Formats are SVG and EPS. PDF and PNG need Ghostscript, which cannot
run under WASI — convert host-side, or use native LilyPond.

Nix users need none of this: the flake's nixConfig points at
lilypond-wasi.cachix.org (pass --accept-flake-config).

LilyPond 2.26.1 (stable) — recipe 0.1.1

Choose a tag to compare

@github-actions github-actions released this 24 Aug 14:28
199c573

LilyPond 2.26.1 (stable line,
upstream g8d6b320) compiled to wasm32-unknown-wasi,
built by recipe 0.1.1.

Verified on this runner: the module engraves SVG under wasmtime before publishing.

Running it

Needs a WASI Preview 1 host with WebAssembly exception handling (the
module uses the modern try_table/exnref encoding), the asset tree
mounted, and Guile's Scheme library available:

wasmtime run -W exceptions=y \
  --dir "$PWD/work::/work" \
  --dir "$PWD/lilypond::/lilypond" \
  --dir "<guile>/share/guile/3.0::/guile" \
  --dir "<guile>/lib/guile/3.0/ccache::/guile-ccache" \
  --env LILYPOND_DATADIR=/lilypond \
  --env FONTCONFIG_FILE=/lilypond/fonts/fonts.conf \
  --env GUILE_LOAD_PATH=/guile \
  --env GUILE_LOAD_COMPILED_PATH=/guile-ccache \
  --env GUILE_SYSTEM_PATH=/guile \
  --env GUILE_SYSTEM_COMPILED_PATH=/guile-ccache \
  --env HOME=/work/home --env TMPDIR=/work/tmp \
  --env XDG_CACHE_HOME=/work/cache \
  --argv0 /lilypond \
  lilypond-wasi-2.26.1-stable.wasm \
  --formats=svg -o /work/out /work/in.ly

Mounting the bytecode tarball as (and appending
to ) cuts startup ~5x —
measured 4.7 s -> 0.9 s for a small score.

Formats are SVG and EPS. PDF and PNG need Ghostscript, which cannot
run under WASI — convert host-side, or use native LilyPond.

Nix users need none of this: the flake's nixConfig points at
lilypond-wasi.cachix.org (pass --accept-flake-config).

LilyPond 2.26.1 (stable) — recipe 0.1.0

Choose a tag to compare

LilyPond 2.26.1 (stable line,
upstream g8d6b320) compiled to wasm32-unknown-wasi,
built by recipe 0.1.0.

Verified on this runner: the module engraves SVG under wasmtime before publishing.

Running it

Needs a WASI Preview 1 host with WebAssembly exception handling (the
module uses the modern try_table/exnref encoding), the asset tree
mounted, and Guile's Scheme library available:

wasmtime run -W exceptions=y \
  --dir "$PWD/work::/work" \
  --dir "$PWD/lilypond::/lilypond" \
  --dir "<guile>/share/guile/3.0::/guile" \
  --dir "<guile>/lib/guile/3.0/ccache::/guile-ccache" \
  --env LILYPOND_DATADIR=/lilypond \
  --env FONTCONFIG_FILE=/lilypond/fonts/fonts.conf \
  --env GUILE_LOAD_PATH=/guile \
  --env GUILE_LOAD_COMPILED_PATH=/guile-ccache \
  --env GUILE_SYSTEM_PATH=/guile \
  --env GUILE_SYSTEM_COMPILED_PATH=/guile-ccache \
  --env HOME=/work/home --env TMPDIR=/work/tmp \
  --env XDG_CACHE_HOME=/work/cache \
  --argv0 /lilypond \
  lilypond-wasi-2.26.1-stable.wasm \
  --formats=svg -o /work/out /work/in.ly

Formats are SVG and EPS. PDF and PNG need Ghostscript, which cannot
run under WASI — convert host-side, or use native LilyPond.

Nix users need none of this: the flake's nixConfig points at
lilypond-wasi.cachix.org (pass --accept-flake-config).

LilyPond 2.27.3 (dev) — recipe 0.1.2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 24 Aug 15:13
86b1845

LilyPond 2.27.3 (dev line,
upstream g32e3cc2) compiled to wasm32-unknown-wasi,
built by recipe 0.1.2.

Verified on this runner: the module engraves SVG under wasmtime before publishing.

Running it

Needs a WASI Preview 1 host with WebAssembly exception handling (the
module uses the modern try_table/exnref encoding), the asset tree
mounted, and Guile's Scheme library available:

wasmtime run -W exceptions=y \
  --dir "$PWD/work::/work" \
  --dir "$PWD/lilypond::/lilypond" \
  --dir "<guile>/share/guile/3.0::/guile" \
  --dir "<guile>/lib/guile/3.0/ccache::/guile-ccache" \
  --env LILYPOND_DATADIR=/lilypond \
  --env FONTCONFIG_FILE=/lilypond/fonts/fonts.conf \
  --env GUILE_LOAD_PATH=/guile \
  --env GUILE_LOAD_COMPILED_PATH=/guile-ccache \
  --env GUILE_SYSTEM_PATH=/guile \
  --env GUILE_SYSTEM_COMPILED_PATH=/guile-ccache \
  --env HOME=/work/home --env TMPDIR=/work/tmp \
  --env XDG_CACHE_HOME=/work/cache \
  --argv0 /lilypond \
  lilypond-wasi-2.27.3-dev.wasm \
  --formats=svg -o /work/out /work/in.ly

Mounting the bytecode tarball as (and appending
to ) cuts startup ~5x —
measured 4.7 s -> 0.9 s for a small score.

Formats are SVG and EPS. PDF and PNG need Ghostscript, which cannot
run under WASI — convert host-side, or use native LilyPond.

Nix users need none of this: the flake's nixConfig points at
lilypond-wasi.cachix.org (pass --accept-flake-config).