# Contributing If you're looking to contribute to IsoAlloc then you will want to start with this guide. It contains some steps you will want to follow before making a pull request, and a basic style guide. ## Testing Your Changes Contributing to IsoAlloc is a pretty standard process of forking the repo, making a pull request, and optionally linking it to an existing issue. Before you make your pull request please run the following commands on both Linux and MacOS: `make tests` - Make sure all tests still pass `make malloc_cmp_test` - Check for major performance regressions `make cpp_tests` - Make sure all C++ tests still pass `make library` - Build a release version of the library `make cpp_library` - Build a release version of the library with C++ support Repeat the steps above using gcc/g++ as your compiler. e.g. `make tests CC=gcc CXX=g++` Compile a debug version of the library with `make cpp_library_debug` and then run a basic test using `LD_PRELOAD` and another binary. If you're making changes that are handled differently between Clang and GCC then please run the tests above but also set the `CC` and `CXX` environment variables approriately. ## Style Guide Before you make a PR please run the following: `make format` - Run the clang formatter to ensure your changes conform to the rest of the project style The clang-format Makefile target should cleanup a lot of your commit but please ensure you conform to the following style guide: - Open braces on same line as if/function start - No space between if conditional and parantheses - Use a define for any int or string constants - Comments should be C style unless its a .cpp file - Declare counter local types within for loop declarations if possible ``` /* Check the value of some flag */ if(flag == SOME_VALUE) { ... } for(uint64_t i = 0; i < canary_count; i++) { ... } ```