From 1483fe4c217786f530fda73931738a9a75d5d8a9 Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 1 Jun 2021 22:29:06 +0200 Subject: [PATCH] Document what we mean by backward compatibility Signed-off-by: Gilles Peskine --- BRANCHES.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/BRANCHES.md b/BRANCHES.md index 8486ef063..dbdc1738e 100644 --- a/BRANCHES.md +++ b/BRANCHES.md @@ -28,6 +28,15 @@ undocumented features, then you should be able to re-compile it without modification with any later release x.y'.z' with the same major version number, and your code will still build, be secure, and work. +Note that new releases of Mbed TLS may extend the API. Here are some example of changes that are common in minor releases of Mbed TLS, and are not considered compatibility breaks: + +* Adding or reordering fields in a structure or union. +* Removing a field from a structure, unless the field is documented as public. +* Adding items to an enum. +* Returning an error code that was not previously documented for a function when a new error condition arises. +* Changing which error code is returned in a case where multiple error conditions apply. +* Changing the behavior of a function from failing to succeeding, when the change is a reasonable extension of the current behavior, i.e. the addition of a new feature. + There are rare exceptions: code that was relying on something that became insecure in the meantime (for example, crypto that was found to be weak) may need to be changed. In case security comes in conflict with backwards