We welcome contributors who can help us build mlkem-native. If you are interested, please contact us via e-mail or discord, so we can introduce each other and understand your background and interest. We do not accept contributions from people we don't know.
We specify the development environment for mlkem-native using nix. If you want to help develop mlkem-native, please
use nix. We recommend using the latest Nix version provided by the nix installer
script, but we currently support all Nix versions >= 2.18.
All the development and build dependencies are specified in flake.nix. To execute a bash shell, run
nix develop --experimental-features 'nix-command flakes'To confirm that everything worked, try lint or tests cbmc.
We use auto-formatting using clang-format as specified in .clang-format. Use the ./scripts/format
script (in your PATH when usingnix) to re-format the files accordingly.
We namespace all entities of global scope, including statics and structures. This is to facilitate monolithic builds of mlkem-native in a single compilation unit, potentially including multiple copies for different security levels. See examples/monolithic_build for an example.