Repository Overview
The hacl-packages repository is a mono repository for all HACL packages and bindings. The top level holds the HACL C library that is based on the output of HACL*.
Source Code
The C source code lives in the src directory for most platforms.
The source code for MSVC can be found in src/msvc.
The includes can be found in the corresponding include directories (include and include/msvc).
Vale is considered an external dependency and therefore lives in its own
directory vale --- sources in vale/src and headers in vale/include.
Tests
Tests are found in the tests folder and are written in modern C++ rather than
C.
Karamel
The KaRaMeL dependency is found in karamel and holds only headers that are
used by the HACL C source code.
CPU Features
A tool for basic CPU feature detection can be found in cpu-features.
This is only used for tests and will probably be removed from this repository
in future.
Tools
The build is driven by the mach script and the CMakeLists.txt.
They rely on the contents of the tools folder (general tools for managing the
repository and building in Python), as well as the config folder (platform
detection and build configuration helper).
Docker
Docker tools for extracting the source code from HACL* are found in docker.
Docs
The docs folder contains this book you're reading right now.
Bindings
The language bindings are in sub folders.
Rust
The Rust bindings can be found in the rust folder.
See the Rust chapter for more details on the build and structure.
OCaml
The OCaml bindings can be found in the ocaml folder.
See the OCaml chapter for more details on the build and structure.