Hello,
You are concerned if: you contribute to Mbed TLS, or you maintain local patches to Mbed TLS. You are not concerned if: you just use Mbed TLS.
As of today, we have changed the code style in Mbed TLS (the coding standardshttps://mbed-tls.readthedocs.io/en/latest/kb/development/mbedtls-coding-standards/ have been updated accordingly). The new style is mostly what you'd find in The C Programming Language, 2nd edition, by Brian Kernighan and Dennis Ritchie (K&R2), except that:
* case is indented one level further than switch. * The body of if, for or while must be on a separate line and surrounded with braces, even if it’s a single statement.
The main changes are that we now use “normal” spacing around parentheses (if (f(x))), and opening braces are not on a separate line except for function definitions.
Among the things that haven't changed, line lengths are not strictly enforced, but please stick to 80 columns generally. Indentation uses 4 spaces (no tabs).
The new style is enforced by a continuous integration test. Contributions will not be accepted if this test fails. All pending pull requests will need to be restyled. If a pull request is under active review, please communicate with the reviewers to decide when is a good time for restyling, as it can detach comments from their target.
You can restyle your code using the script scripts/code_style.pyhttps://github.com/Mbed-TLS/mbedtls/blob/development/scripts/code_style.py that was added recently to the development and mbedtls-2.28 branches. This requires uncrustifyhttps://github.com/uncrustify/uncrustify 0.75.1 (please note that different versions will produce different results that will fail in the CI).
If you have work in progress with multiple commits, we provide a script to rebase and restyle a branch, preserving the commit history: mbedtls-rewrite-branch-stylehttps://github.com/Mbed-TLS/mbedtls-docs/raw/main/tools/bin/mbedtls-rewrite-branch-style.
For more information, please refer to the guide on adapting to the new code style: https://mbed-tls.readthedocs.io/en/latest/kb/how-to/rewrite-branch-for-codin...
Best regards,
-- Gilles Peskine Mbed TLS developer
On 15/12/2022 19:07, Gilles Peskine via Mbed-tls-announce wrote: Hello,
You are concerned if: you contribute to Mbed TLS, or you maintain local patches to Mbed TLS. You are not concerned if: you just use Mbed TLS.
We are going to change the C coding style in Mbed TLS. The new style is mostly what you'd find in The C Programming Language, 2nd edition, by Brian Kernighan and Dennis Ritchie (K&R2). The main changes compared to the current style are:
* Spaces outside parentheses, not inside. No space in f(x). * Opening braces on the same line as if(), for(), etc., but on a separate line for functions.
Indentation remains 4 spaces. The recommended maximum line length remains 80 columns. There are a few deviations from K&R2, documentation will be available shortly.
The new code style will be enforced by the CI testing. This means that style that's rejected by the tool will not be merged, full stop. This also means that sometimes we'll have code that looks a bit less good to humans because the tool insists on it. We're doing this to avoid wasting reviewers' and contributors' time with style violations in code review.
The tool we're using is uncrustifyhttps://github.com/uncrustify/uncrustifyhttps://github.com/uncrustify/uncrustify. You can see how your code will look like by installing uncrustify 0.75.1 and running scripts/code_style.py from mbedtls-3.3.0 or mbedtls-2.28.2. There are previews of the rewritten branches at https://github.com/Mbed-TLS/mbedtls/tree/features/new-code-style/development and https://github.com/Mbed-TLS/mbedtls/tree/features/new-code-style/mbedtls-2.2... (updated every few days until the real branches are rewritten). If you're now starting work on a new feature or bugfix, it will probably be easier to start from those branches, and do an easy rebase once they become official.
If you've been working on a branch, we will provide a script to rebase the branch and rewrite it to the new style commit by commit. You'll need to have uncrustify 0.75.1.
Concretely, when we change the code style:
* If you've started to work on a branch but review has not started yet, we'll ask you to adapt your branch to the new code style. * If your work is under review, you'll need to adapt your branch to the new code style before it can be merged. Rebasing a branch is disruptive for reviews, so please synchronize with the reviewers to decide on a good time.
We plan to do the switch during the first week of January 2023.
Best regards,
-- Gilles Peskine Mbed TLS developer
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.