Plunder is a new programming model where programs run forever.
Hardware restarts are invisible to the software, as is moving a running program from one physical machine to another.
Because of this, programs don't need to save their state into an external database, they can simply keep everything "in memory", and that state will be synchronized to disk transparently.
This is a prototype implementation of Plunder.
See doc/
for information about the individual technologies: Rex,
Sire, PLAN, Cogs, etc.
To run the sire tests, run sh/sire-load-all
.
To run the Haskell tests, run stack test
.
To run the fulltag
demo, see the instructions in
sh/full-tag-site-demo
.
Matrix Chat:
Mailing Lists:
If you have stack
(the Haskell build tool) installed, you can just run:
$ stack install
You may also need to install lmdb
and zlib
in the host os.
If you have a flakes-enabled nix
in your PATH, you can use nix develop
to automatically enter a development-shell that contains all of the
relevant tooling.
# in one terminal
$ nix develop
[<...>]$ stack build
[<...>]$ stack run localhost-router
# in another terminal
$ nix develop
[<...>]$ bash sh/mandelbrot-ui-demo
Similarly, if you have a flakes-enabled nix
in your PATH, you do a
fully-reproducible build of plunder like so:
$ nix build .#plunder
The current build dependencies are not in the normal nix caches, so this approach will take up a lot of time and space.
This requires building 1 or more GHCs, which can be rather
intensive. There is also risk that, once built, the GHCs may be
nix-GC-ed, thus requiring rebuilds. For this reason, we expose a
build target for haskell.nix
build environment. This can be
combined with nix profiles to ensure persistence:
$ nix build .#hnix-roots --profile ./hnix-roots