Skip to content

Diluvium 5.5.1_build6

Choose a tag to compare

@github-actions github-actions released this 12 Aug 19:17
9d887d1

[5.5.1_build6] - 2026-08-12

v5.5.1_build6 · Lua 5.5.1 · bytecode format 0x46

Three guest libraries and the rest host-side.

The sealed sandbox met text edges -- a JWT segment, an HTTP body, a
config, a timestamp for a human -- with no tools for them, because the
libraries that would have them (os, and any C-module loader) are the
ones sealing takes away. Three new libraries fill that in, all pure
computation and so libraries rather than hostcalls: nothing about them
reaches outside the instance or is nondeterministic, so none needs a
capability.

bytes transcodes: tohex/fromhex, tobase64/frombase64,
tobase64url/frombase64url (the JWT and URL alphabet, unpadded),
and urlencode/urldecode (RFC 3986 percent-encoding). The decoders
are strict about the alphabet and a truncated group and name a bad
byte's position rather than skipping it. json is the whole-value
codec that sits beside msgpack: json.encode/json.decode, with
the array-or-object question settled by a documented heuristic and a
decoder that is bounded in depth and strict about the number grammar,
because it reads bytes a client sent. time is the pure half of the
clock -- the reading of it stays the host:time connector, but
time.iso, time.parse, time.fields and time.of convert between
Unix seconds, ISO 8601 and broken-down UTC fields, the calendar
arithmetic os.date used to do. crypto/random returning hex was the
first sign the gap was real; these close it.

Host-side, two additions since build5. The crypto connector gains
host:crypto/jwt_sign and host:crypto/jwt_verify alongside
random, hash and hmac: JWT-HS256, minted and checked with the
key in the host and never in a guest, the header fixed so
alg-confusion has no field to set, and the host owning iat/exp.
The configured secret signs nothing directly -- two subkeys are
derived from it, one for hmac and one for the JWT MAC -- so a
program holding only host:crypto/hmac cannot use it as an oracle to
forge a token, which it otherwise could. And the listener connector
accepts an array of blocks, so a deployment that cannot bind at
runtime pre-binds a block of ports up front; they share one poll and
one connection-token space, so replies route correctly whether the
ports share a queue or not.

Upgrading

Snapshots taken by 5.5.1_build5 and earlier are refused by a build
with these libraries.
Their functions join the permanents set (they
must, or a program holding one could not be snapshotted at all), which
moves the permanents fingerprint the snapshot header carries -- the
same mechanism, and the same clean format-mismatch refusal, as
build5's endpoint-metatable move. Nothing half-loads, and there is no
converter. DILUVIUM_SNAP_FORMAT and DS_THREAD_VERSION are
unchanged from build5; only the permanents list grew.

Bytecode is unaffected. LUAC_FORMAT stays 0x46; chunks compiled
by build5 load without recompiling.

The bytes, json and time globals are new. A program that
used one of those as a global name of its own now shadows the library;
guests that kept to locals are unaffected, and the libraries are only
present inside an instance, as queue and msgpack are.

Built from commit 9d887d111c77.

Download guide

Platform File Notes
Linux (standard) diluvium_linux_static_x86_64 Static; works on Ubuntu, Fedora, CentOS, Arch
Raspberry Pi 3/4/5 diluvium_linux_static_aarch64 64-bit OS only
Raspberry Pi Zero diluvium_linux_static_armv7l 32-bit ARM
macOS (Apple silicon) diluvium_darwin_arm64 M1/M2/M3/M4
macOS (Intel) diluvium_darwin_x86_64
Windows diluvium_windows_x86_64.exe 64-bit
WASI diluvium_wasi.wasm Needs a runtime with wasm exception-handling (wasmtime 28+ with -W exceptions=y)
Browser libdiluvium_wasm_unknown.a wasm32-unknown-unknown static library

Each platform also ships a diluvium_compiler_* binary (luac
with the -r analysis report flag) and a libdiluvium_*.a static
library for embedding.

Verifying a download

sha256sum -c SHA256SUMS.txt --ignore-missing

BUILDINFO.txt records the exact commit, build time and workflow run.