Skip to content

Commit 4289024

Browse files
committed
docs: Semantic versioning
1 parent 13d9202 commit 4289024

File tree

2 files changed

+49
-0
lines changed

2 files changed

+49
-0
lines changed

docs/en/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,5 @@ More Information
5050
Advanced Topics <advanced-topics/index>
5151
Troubleshooting <troubleshooting>
5252
Contribute <contributing>
53+
Versions <versions>
5354
About <about>

docs/en/versions.rst

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
.. _versions:
2+
3+
Versions
4+
========
5+
6+
Starting from ``v4.0.0``, ``esptool.py`` adopts the `semantic versioning specification <https://semver.org/>`_, following the ``MAJOR.MINOR.PATCH`` version number.
7+
8+
Major release ``v4`` is under active development, receiving new features and bugfixes, while ``v3`` only keeps receiving important bugfixes.
9+
10+
There are no support periods defined and bugfixes are not planned, therefore it is strongly recommended to install the latest version possible.
11+
12+
.. note::
13+
14+
The following information is directed mainly towards package maintainers. Regular users should always use the most recent version of ``esptool.py`` to benefit from the latest features and bugfixes.
15+
16+
Use the latest esptool (recommended)
17+
------------------------------------
18+
19+
If your use case doesn't impose any constraints on ``esptool.py``, the latest release should be always used.
20+
To see the latest available version and its release notes, visit the `release page on GitHub <https://github.com/espressif/esptool/releases>`_.
21+
22+
To get the latest possible version, simply define your dependency as ``esptool`` (without any release operator and a version identifier).
23+
24+
Use the latest bugfix release of a minor esptool release
25+
--------------------------------------------------------
26+
27+
Some use cases might require a specific ``esptool.py`` version without getting new features, but with automatic bugfixes.
28+
29+
This can be achieved by defining your dependency as ``esptool~=4.0.1`` (explicitly stating the ``MAJOR``, ``MINOR``, and ``PATCH`` numbers).
30+
This notation selects the latest version of ``esptool.py``, greater than or equal to ``v4.0.1``, but still in the ``v4.0.*`` version (this compatible release clause is approximately equivalent to the pair of comparison clauses ``>= 4.0.1``, ``== 4.0.*``).
31+
So, for example, ``v4.1.0`` won't be downloaded. More information about compatible release clauses `can be found here <https://peps.python.org/pep-0440/#compatible-release>`_.
32+
33+
Use the latest esptool without any future breaking change
34+
---------------------------------------------------------
35+
36+
If you also want to get new features (instead of just bugfixes), define your version requirement as ``esptool~=4.0`` (explicitly stating only the ``MAJOR`` and ``MINOR`` numbers). This way the latest minor versions (``>= 4.0``, ``== 4.*``) are automatically installed.
37+
Backward-compatibility is still ensured, because ``esptool.py`` respects the semantic versioning specification (which states that breaking changes should occur only in ``MAJOR`` versions).
38+
39+
Use the previous major esptool release (only if you cannot upgrade)
40+
-------------------------------------------------------------------
41+
42+
If your use case is not compatible with the latest ``MAJOR`` release of ``esptool.py``, a previous compatible version has to be specified.
43+
This can be achieved by defining your dependency as ``esptool~=3.0`` (explicitly stating your desired ``MAJOR`` number and at least also the ``MINOR`` number, ``PATCH`` can also be specified).
44+
45+
Use a specific esptool release
46+
------------------------------
47+
48+
If a very specific release is required, define your dependency as ``esptool==4.1.2``. This specific version will be used and no new features or bugfixes will be automatically installed.

0 commit comments

Comments
 (0)