Candelabra#
These are the supplementary materials for my thesis, Candelabra.
src/is a Rust workspace containing the actual source codeanalysis/contains the benchmark results, and the Elixir livebook notebook used to process and visualise the data.thesis/contains the LaTeX code used to build the actual thesis, as well as VegaLite JSON files for graphs
Check the README in each directory for more information.
Getting dependencies#
The easiest way to install the required dependencies is using Nix. After installing it, simply run one of the two commands below:
nix develop .#fullfor a full environment with everything required to build the project, visualisations, and thesis. (approx 3.4G disk space)nix develop .#minimalfor a smaller environment, with only enough to build the project and run tests (approx 1.9G disk space).
You can also build the program itself with nix build .#default, or see below to run a test VM.
Alternatively, manually set up the following programs:
- Rust nightly toolchain 2024-01-22
- Racket v8.10, with the
rosettepackage installed -raco pkg install rosette. You may also need to manually installz3. - Just 1.24.0
- To generate visualisations:
- Livebook 0.11.3
- [vega-cli](https://www.npmjs.com/package/vega-cli 5.26.0
- To build the thesis:
- Texlive, with the packages listed in
nix/tex-env.nix latexmk
- Texlive, with the packages listed in
Once you have dependencies installed, check the README in each directory for details on how to reproduce our results.
Building a testing VM#
The VM which we used for testing can be fully rebuilt by running nix build .#vm. This requires around 3.1G on disk.
After building, run ./result/bin/run-candelabra-vm to start it.
The credentials are root / candelabra, and you can use SSH if desired.
The VM has candelabra prebuilt as candelabra-cli, but no tools for visualisation or building the thesis.