blob: 7fb706d6921a37767719beeb08a9e975fedfa1e1 [file] [log] [blame] [view]
Manuel Pégourié-Gonnarde6997392021-02-25 11:40:08 +01001# Maintained branches
2
3At any point in time, we have a number of maintained branches consisting of:
4
Dave Rodgman52af7692022-03-31 14:27:24 +01005- The [`master`](https://github.com/Mbed-TLS/mbedtls/tree/master) branch:
Gilles Peskine991bbe72021-03-16 12:05:16 +01006 this always contains the latest release, including all publicly available
7 security fixes.
Dave Rodgman52af7692022-03-31 14:27:24 +01008- The [`development`](https://github.com/Mbed-TLS/mbedtls/tree/development) branch:
Gilles Peskinea23df132021-03-16 12:04:44 +01009 this is where new features land,
10 as well as bug fixes and security fixes.
11- One or more long-time support (LTS) branches:
12 these only get bug fixes and security fixes.
Manuel Pégourié-Gonnarde6997392021-02-25 11:40:08 +010013
14We use [Semantic Versioning](https://semver.org/). In particular, we maintain
Gilles Peskine991bbe72021-03-16 12:05:16 +010015API compatibility in the `master` branch between major version changes. We
Manuel Pégourié-Gonnarde6997392021-02-25 11:40:08 +010016also maintain ABI compatibility within LTS branches; see the next section for
17details.
18
Gilles Peskine6140d2e2022-06-20 18:48:52 +020019## Backwards Compatibility for application code
Manuel Pégourié-Gonnarde6997392021-02-25 11:40:08 +010020
Gilles Peskinea23df132021-03-16 12:04:44 +010021We maintain API compatibility in released versions of Mbed TLS. If you have
22code that's working and secure with Mbed TLS x.y.z and does not rely on
23undocumented features, then you should be able to re-compile it without
24modification with any later release x.y'.z' with the same major version
25number, and your code will still build, be secure, and work.
26
Gilles Peskine6bfc19a2022-06-20 18:48:06 +020027Note that this guarantee only applies if you either use the default
28compile-time configuration (`mbedtls/config.h`) or the same modified
29compile-time configuration. Changing compile-time configuration options can
Gilles Peskinea6e71bf2022-06-27 23:02:58 +020030result in an incompatible API or ABI, although features will generally not
Gilles Peskinefe84f382022-06-29 14:29:52 +020031affect unrelated features (for example, enabling or disabling a
Gilles Peskine6bfc19a2022-06-20 18:48:06 +020032cryptographic algorithm does not break code that does not use that
33algorithm).
34
Gilles Peskinea23df132021-03-16 12:04:44 +010035There are rare exceptions: code that was relying on something that became
36insecure in the meantime (for example, crypto that was found to be weak) may
37need to be changed. In case security comes in conflict with backwards
38compatibility, we will put security first, but always attempt to provide a
39compatibility option.
Manuel Pégourié-Gonnarde6997392021-02-25 11:40:08 +010040
41For the LTS branches, additionally we try very hard to also maintain ABI
42compatibility (same definition as API except with re-linking instead of
43re-compiling) and to avoid any increase in code size or RAM usage, or in the
44minimum version of tools needed to build the code. The only exception, as
45before, is in case those goals would conflict with fixing a security issue, we
46will put security first but provide a compatibility option. (So far we never
47had to break ABI compatibility in an LTS branch, but we occasionally had to
48increase code size for a security fix.)
49
Manuel Pégourié-Gonnard80c02af2021-02-25 12:34:58 +010050For contributors, see the [Backwards Compatibility section of
Dave Rodgman52af7692022-03-31 14:27:24 +010051CONTRIBUTING](CONTRIBUTING.md#backwards-compatibility).
Manuel Pégourié-Gonnard80c02af2021-02-25 12:34:58 +010052
Gilles Peskine6140d2e2022-06-20 18:48:52 +020053## Backward compatibility for the key store
54
Gilles Peskinefe84f382022-06-29 14:29:52 +020055We maintain backward compatibility with previous versions of the
Gilles Peskine6140d2e2022-06-20 18:48:52 +020056PSA Crypto persistent storage since Mbed TLS 2.25.0, provided that the
57storage backend (PSA ITS implementation) is configured in a compatible way.
Gilles Peskinea6e71bf2022-06-27 23:02:58 +020058We intend to maintain this backward compatibility throughout a major version
Gilles Peskine6140d2e2022-06-20 18:48:52 +020059of Mbed TLS (for example, all Mbed TLS 3.y versions will be able to read
Gilles Peskinefe84f382022-06-29 14:29:52 +020060keys written under any Mbed TLS 3.x with x <= y).
Gilles Peskine6140d2e2022-06-20 18:48:52 +020061
62Mbed TLS 3.x can also read keys written by Mbed TLS 2.25.0 through 2.28.x
63LTS, but future major version upgrades (for example from 2.28.x/3.x to 4.y)
64may require the use of an upgrade tool.
65
Manuel Pégourié-Gonnard80c02af2021-02-25 12:34:58 +010066## Current Branches
Manuel Pégourié-Gonnarde6997392021-02-25 11:40:08 +010067
68The following branches are currently maintained:
69
Dave Rodgman52af7692022-03-31 14:27:24 +010070- [master](https://github.com/Mbed-TLS/mbedtls/tree/master)
71- [`development`](https://github.com/Mbed-TLS/mbedtls/)
72- [`mbedtls-2.28`](https://github.com/Mbed-TLS/mbedtls/tree/mbedtls-2.28)
Dave Rodgman29c3aee2021-12-13 18:47:16 +000073 maintained until at least the end of 2024.
Manuel Pégourié-Gonnarde6997392021-02-25 11:40:08 +010074
75Users are urged to always use the latest version of a maintained branch.