A robustness release driven by a full-codebase review. Nothing changes about the
language, but a lot changes underneath it. The full notes are in
CHANGELOG.md.
Highlights
- A security fix worth upgrading for — a running Extempore turned each
incoming OSC message into Scheme source text with its address interpolated
unescaped, so any host that could reach the OSC server could evaluate
arbitrary code in the session. Addresses are now validated and strings escaped
by construction. - Errors stop disappearing —
sys:loadused to swallow every error in a
file it loaded, so a broken library could AOT-compile "successfully". It now
reports each failing form and returns#f, which surfaced (and fixed) five
examples that had quietly stopped working. - Memory safety through the C++ runtime — every Scheme FFI primitive is
registered with its real name and arity, so a wrong call is a Scheme error
rather than a segfault, and the zone allocator, OSC send path, IFF chunk
scanner and a dozen fixed buffers no longer write past their ends. - Relocatable installs — the binary looks for
runtime/,libs/and
examples/beside itself, so an unzipped release runs from any working
directory and can be moved wherever you like. - Less vendored code — the 2019 Networking TS snapshot and PCRE 8.38 are
gone; sockets go through one small shim on every platform and regular
expressions use PCRE2 10.48.
Before you upgrade
pcg32_boundedrandnow matches reference PCG32, so seeded streams differ from
earlier releases.io:osc:set-integer-64bit?andio:osc:send-from-server-socket?are removed.topclockno longer starts its network loop at load when
*topclock-autostart*is#f.sys:directory-listreturns bare names on every platform.
Installing
Download the archive for your platform below and unzip it. The folder is
self-contained — keep it together, but put it wherever you like — and
extempore (extempore.exe on Windows) runs from any working directory.
On macOS the binaries aren't signed with an Apple Developer ID, so first launch
is refused until you clear the quarantine flag:
xattr -dr com.apple.quarantine /path/to/extempore
Questions and bug reports are welcome on the
mailing list or as
an issue.