lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame] | 1 | Version Numbers and Releases |
| 2 | ============================ |
| 3 | |
| 4 | Curl is not only curl. Curl is also libcurl. They're actually individually |
| 5 | versioned, but they mostly follow each other rather closely. |
| 6 | |
| 7 | The version numbering is always built up using the same system: |
| 8 | |
| 9 | X.Y.Z |
| 10 | |
| 11 | - X is main version number |
| 12 | - Y is release number |
| 13 | - Z is patch number |
| 14 | |
| 15 | ## Bumping numbers |
| 16 | |
| 17 | One of these numbers will get bumped in each new release. The numbers to the |
| 18 | right of a bumped number will be reset to zero. If Z is zero, it may not be |
| 19 | included in the version number. |
| 20 | |
| 21 | The main version number will get bumped when *really* big, world colliding |
| 22 | changes are made. The release number is bumped when changes are performed or |
| 23 | things/features are added. The patch number is bumped when the changes are |
| 24 | mere bugfixes. |
| 25 | |
| 26 | It means that after release 1.2.3, we can release 2.0 if something really big |
| 27 | has been made, 1.3 if not that big changes were made or 1.2.4 if mostly bugs |
| 28 | were fixed. |
| 29 | |
| 30 | Bumping, as in increasing the number with 1, is unconditionally only |
| 31 | affecting one of the numbers (except the ones to the right of it, that may be |
| 32 | set to zero). 1 becomes 2, 3 becomes 4, 9 becomes 10, 88 becomes 89 and 99 |
| 33 | becomes 100. So, after 1.2.9 comes 1.2.10. After 3.99.3, 3.100 might come. |
| 34 | |
| 35 | All original curl source release archives are named according to the libcurl |
| 36 | version (not according to the curl client version that, as said before, might |
| 37 | differ). |
| 38 | |
| 39 | As a service to any application that might want to support new libcurl |
| 40 | features while still being able to build with older versions, all releases |
| 41 | have the libcurl version stored in the curl/curlver.h file using a static |
| 42 | numbering scheme that can be used for comparison. The version number is |
| 43 | defined as: |
| 44 | |
| 45 | #define LIBCURL_VERSION_NUM 0xXXYYZZ |
| 46 | |
| 47 | Where XX, YY and ZZ are the main version, release and patch numbers in |
| 48 | hexadecimal. All three number fields are always represented using two digits |
| 49 | (eight bits each). 1.2 would appear as "0x010200" while version 9.11.7 |
| 50 | appears as "0x090b07". |
| 51 | |
| 52 | This 6-digit hexadecimal number is always a greater number in a more recent |
| 53 | release. It makes comparisons with greater than and less than work. |
| 54 | |
| 55 | This number is also available as three separate defines: |
| 56 | `LIBCURL_VERSION_MAJOR`, `LIBCURL_VERSION_MINOR` and `LIBCURL_VERSION_PATCH`. |