Braam 0.6
An operating system in a browser tab — kernel, filesystem, terminal, shell and
45 programs, written from scratch in freestanding C++20 and compiled to
WebAssembly. It deploys as a static site: no server, no special headers.
kernel.wasm is 175 KiB.
0.5 was about what a program can count on once it is here. 0.6 is about what a
shell script can count on, which turned out to be less.
What changed
cp,basename,dirnameandtruncate. Four programs a script has
always been entitled to assume. The copy behindcpwas already written three
times over in the tree and now lives once, insrc/proc/io.h.- A descriptor can be told where to be.
Sys::Seek, and an optional length
onSys::Read. The position had always existed below the process; nothing
could name it. - A read is a span, not half a kilobyte.
SYS_READ_MAXis 65,532 where the
old chunk was 512. Sys::Truncate, the operation/bin/truncatecalls. It takes GNU's whole
SIZE operand:+,-,<,>,/,%, and K/M/G/T against KB/MB/GB/TB.pkg installandpkg upgradetake operands.installnow moves what
you name instead of reportingunchanged;upgradeaccepts the names to
upgrade, and an operand takes the pin off.installmoves what you name,
upgrademoves the lot.ScreenClearchecks the screen's owner — the last terminal operation with
no authorisation on it. It now refuses while another process holds the
alternate screen.- The package repository has an address of its own,
https://braamix.github.io. The keys did not change, only the machine serving
what they signed.
The process ABI moved
PROC_ABI is 18, up from 17. A program built against the 0.5 SDK is refused
at exec on a 0.6 kernel — a diagnostic, not a crash. Rebuild against the SDK
below, and re-sign any repository whose packages you rebuilt.
The archives
braam-0.6.182-92b91d6.zip — the site. Unpack it in a web root and serve it.
braam-sdk-0.6.182-92b91d6.zip — the SDK, for building a program against an
installed prefix.