113498266Sopenharmony_ciVersion Numbers and Releases
213498266Sopenharmony_ci============================
313498266Sopenharmony_ci
413498266Sopenharmony_ci Curl is not only curl. Curl is also libcurl. They are actually individually
513498266Sopenharmony_ci versioned, but they usually follow each other closely.
613498266Sopenharmony_ci
713498266Sopenharmony_ci The version numbering is always built up using the same system:
813498266Sopenharmony_ci
913498266Sopenharmony_ci        X.Y.Z
1013498266Sopenharmony_ci
1113498266Sopenharmony_ci  - X is main version number
1213498266Sopenharmony_ci  - Y is release number
1313498266Sopenharmony_ci  - Z is patch number
1413498266Sopenharmony_ci
1513498266Sopenharmony_ci## Bumping numbers
1613498266Sopenharmony_ci
1713498266Sopenharmony_ci One of these numbers will get bumped in each new release. The numbers to the
1813498266Sopenharmony_ci right of a bumped number will be reset to zero.
1913498266Sopenharmony_ci
2013498266Sopenharmony_ci The main version number will get bumped when *really* big, world colliding
2113498266Sopenharmony_ci changes are made. The release number is bumped when changes are performed or
2213498266Sopenharmony_ci things/features are added. The patch number is bumped when the changes are
2313498266Sopenharmony_ci mere bugfixes.
2413498266Sopenharmony_ci
2513498266Sopenharmony_ci It means that after release 1.2.3, we can release 2.0.0 if something really
2613498266Sopenharmony_ci big has been made, 1.3.0 if not that big changes were made or 1.2.4 if only
2713498266Sopenharmony_ci bugs were fixed.
2813498266Sopenharmony_ci
2913498266Sopenharmony_ci Bumping, as in increasing the number with 1, is unconditionally only
3013498266Sopenharmony_ci affecting one of the numbers (except the ones to the right of it, that may be
3113498266Sopenharmony_ci set to zero). 1 becomes 2, 3 becomes 4, 9 becomes 10, 88 becomes 89 and 99
3213498266Sopenharmony_ci becomes 100. So, after 1.2.9 comes 1.2.10. After 3.99.3, 3.100.0 might come.
3313498266Sopenharmony_ci
3413498266Sopenharmony_ci All original curl source release archives are named according to the libcurl
3513498266Sopenharmony_ci version (not according to the curl client version that, as said before, might
3613498266Sopenharmony_ci differ).
3713498266Sopenharmony_ci
3813498266Sopenharmony_ci As a service to any application that might want to support new libcurl
3913498266Sopenharmony_ci features while still being able to build with older versions, all releases
4013498266Sopenharmony_ci have the libcurl version stored in the `curl/curlver.h` file using a static
4113498266Sopenharmony_ci numbering scheme that can be used for comparison. The version number is
4213498266Sopenharmony_ci defined as:
4313498266Sopenharmony_ci
4413498266Sopenharmony_ci```c
4513498266Sopenharmony_ci#define LIBCURL_VERSION_NUM 0xXXYYZZ
4613498266Sopenharmony_ci```
4713498266Sopenharmony_ci
4813498266Sopenharmony_ci Where `XX`, `YY` and `ZZ` are the main version, release and patch numbers in
4913498266Sopenharmony_ci hexadecimal. All three number fields are always represented using two digits
5013498266Sopenharmony_ci (eight bits each). 1.2 would appear as "0x010200" while version 9.11.7
5113498266Sopenharmony_ci appears as `0x090b07`.
5213498266Sopenharmony_ci
5313498266Sopenharmony_ci This 6-digit hexadecimal number is always a greater number in a more recent
5413498266Sopenharmony_ci release. It makes comparisons with greater than and less than work.
5513498266Sopenharmony_ci
5613498266Sopenharmony_ci This number is also available as three separate defines:
5713498266Sopenharmony_ci `LIBCURL_VERSION_MAJOR`, `LIBCURL_VERSION_MINOR` and `LIBCURL_VERSION_PATCH`.
58