Skip to content

Braam 0.6

Choose a tag to compare

@sergev sergev released this 24 Aug 07:33
· 27 commits to main since this release

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, dirname and truncate. Four programs a script has
    always been entitled to assume. The copy behind cp was already written three
    times over in the tree and now lives once, in src/proc/io.h.
  • A descriptor can be told where to be. Sys::Seek, and an optional length
    on Sys::Read. The position had always existed below the process; nothing
    could name it.
  • A read is a span, not half a kilobyte. SYS_READ_MAX is 65,532 where the
    old chunk was 512.
  • Sys::Truncate, the operation /bin/truncate calls. It takes GNU's whole
    SIZE operand: +, -, <, >, /, %, and K/M/G/T against KB/MB/GB/TB.
  • pkg install and pkg upgrade take operands. install now moves what
    you name instead of reporting unchanged; upgrade accepts the names to
    upgrade, and an operand takes the pin off. install moves what you name,
    upgrade moves the lot.
  • ScreenClear checks 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.