WebAssembly is a low-level language for a portable virtual machine. Wasm is designed to be a compilation target for a variety of programming languages and its design is hardware independent and relatively simple, making its support ubiquitous in modern browsers. Its simple design made it a perfect first candidate for a first emulator of an conventional computational system on a novel functional computer: Urbit. In this paper I discuss the current state of urwasm project and some technical details, as well as describe the strategy to jet the interpreter of a state machine in a functional environment.
The target audience is people who are familiar with Urbit's architecture, though not necessarily much of its code.
As some of you already know, i recently left my job as a core dev for the Urbit Foundation to work on a similar system called Plunder. Plunder was created in 2020 by two former Tlon employees, after their proposal for a new version of Nock was rejected. They have since reworked that significantly and built a reference implementation of their own system. You can follow its continued development on its mailing list.
I've known about Plunder for quite some time now, but their recently released demo -- in which the system is used to serve a 70 GB dataset, complete with metadata and searchable -- made me feel the need to explore it again and in greater detail. Doing this with my personal server doesn't feel like a big ask, but there is currentl
| with import <nixpkgs> {}; | |
| stdenv.mkDerivation { | |
| name = "postgresql-inside-nixshell"; | |
| buildInputs = [ | |
| glibcLocales | |
| (pkgs.postgresql.withPackages (p: [ p.postgis ])) | |
| sqitchPg | |
| pgcli |
| |= dim=@ud ^- (list @t) | |
| =/ dx (div:rs .1 (sun:rs dim)) | |
| =/ white [.1 .1 .1] | |
| =< (genppm dim) | |
| |% | |
| ++ min | |
| |= [x=@rs y=@rs] ^- @rs | |
| ?: (lth:rs x y) x y | |
| ++ max | |
| |= [x=@rs y=@rs] ^- @rs |
| with import <nixpkgs> {}; | |
| stdenv.mkDerivation { | |
| name = "postgresql-inside-nixshell"; | |
| buildInputs = [ | |
| postgresql | |
| ]; | |
| shellHook = '' |