~plan/plunder

Plunder
PLAN.py: add optional tracing
PLAN_SPEC: fix `L` & `B` rules
viceroy: comment pq_vice to avoid breaking CI

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~plan/plunder
read/write
git@git.sr.ht:~plan/plunder

You can also use your local clone with git send-email.

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.

#Getting Connected

Matrix Chat:

Mailing Lists:

#Building Plunder

#Using Stack Without Nix

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.

#Using Nix to Setup a Dev Environment

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

#Building with Nix (Slow)

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