aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: fee8ce5f949b37205ef30ba92b48a7139f4c6f31 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# Candelabra

These are the supplementary materials for my thesis, Candelabra.

  - `src/` is a Rust workspace containing the actual source code
  - `analysis/` 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](https://nixos.org/download/), simply run `nix develop`.
This environment includes everything necessary for building the program, visualisations, and thesis.

You can also build the program itself with `nix build .#default`.

Alternatively, manually set up the following programs:

  - Rust nightly toolchain 2024-01-22
  - Racket v8.10, with the `rosette` package installed - `raco pkg install rosette`. You may also need to manually install `z3`.
  - [Just](https://crates.io/crates/just) 1.24.0
  - To generate visualisations:
    - [Livebook](https://livebook.dev/) 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`