AtomVM is open to any contribution.
Pull requests, bug reports and feature requests are welcome.
However before contributing, please read carefully our Code of Conduct and the following contribution guidelines.
Please, also make sure to understand the Apache 2.0 license and the Developer Certificate of Origin.
Last but not least, do not use GitHub issues for vulnerability reports, read instead the security policy for instructions.
- Commit messages should have a
- summary and a description
- Avoid trailing white spaces
- Always
git pull --rebase
- Clean up your branch history with
git rebase -i
- All your intermediate commits should build
Style is enforced with clang-format-13. To automatically fix a file, run:
clang-format-13 --style=file -i file.c
- K&R identation and braces style
- Mandatory braces
- 4 spaces identation
Good:
void f(int reverse)
{
if (reverse) {
puts("!dlroW olleH");
} else {
puts("Hello world");
}
}
Bad:
void f(int reverse) {
if (reverse)
puts ("!dlroW olleH");
else
puts ("Hello world");
}
- Struct names are PascalCase (e.g. Context)
- Scalar types are lower case (e.g. term)
- All other names (e.g. functions and variables) are snake_case (e.g. term_is_integer)
- Always prefix function names (e.g. term_is_nil, term_is_integer, context_new, context_destroy)
- Pointer * should be with the variable name rather than with the type (e.g.
char *name
, notchar* name
) - Avoid long lines, use intermediate variables with meaningful names.
Just use Elixir formatter enforced style.