Coding Style

Syntax Recommendations

The Unikraft project uses the Linux kernel coding style which is mostly true for the Unikraft base libraries, new source files, and KConfig files. Please note that ported libraries from existing sources may use different style definitions (e.g., lib/fdt). Please follow the appropriate style depending on where you want to modify or introduce new code.

You can also use .clang-format to check your patches. Most code closely follows an automatically-formatted style defined by the .clang-format file in the repository’s root directory. However, since this is an automated formatting tool, it’s not perfect, and the Unikraft code can deviate from the clang-format’s programmatically created output (especially in the aesthetics of assignment alignments). Use clang-format as a helpful tool, but with a grain of salt. Again, note that some parts of the code (e.g. lib/fdt) follow different coding styles that you should follow if you change this code. In the future, we might provide .clang-format files appropriate for those libraries. We would also be very happy to accept .clang-format definitions for those.

Code Documentation

Internal Unikraft code follows mostly the code comments style of the Linux kernel and the Doxygen style. Try to keep comments uniform across the file you are editing.