| _ _ ____ _ | |
| ___| | | | _ \| | | |
| / __| | | | |_) | | | |
| | (__| |_| | _ <| |___ | |
| \___|\___/|_| \_\_____| | |
| Version Numbers and Releases | |
| Curl is not only curl. Curl is also libcurl. They're actually individually | |
| versioned, but they mostly follow each other rather closely. | |
| The version numbering is always built up using the same system: | |
| X.Y[.Z][-preN] | |
| Where | |
| X is main version number | |
| Y is release number | |
| Z is patch number | |
| N is pre-release number | |
| One of these numbers will get bumped in each new release. The numbers to the | |
| right of a bumped number will be reset to zero. If Z is zero, it may not be | |
| included in the version number. The pre release number is only included in | |
| pre releases (they're never used in public, official, releases). | |
| The main version number will get bumped when *really* big, world colliding | |
| changes are made. The release number is bumped when big changes are | |
| performed. The patch number is bumped when the changes are mere bugfixes and | |
| only minor feature changes. The pre-release is a counter, to identify which | |
| pre-release a certain release is. | |
| When reaching the end of a pre-release period, the version without the | |
| pre-release part will be released as a public release. | |
| It means that after release 1.2.3, we can release 2.0 if something really big | |
| has been made, 1.3 if not that big changes were made or 1.2.4 if mostly bugs | |
| were fixed. Before 1.2.4 is released, we might release a 1.2.4-pre1 release | |
| for the brave people to try before the actual release. | |
| Bumping, as in increasing the number with 1, is unconditionally only | |
| affecting one of the numbers (except the ones to the right of it, that may be | |
| set to zero). 1 becomes 2, 3 becomes 4, 9 becomes 10, 88 becomes 89 and 99 | |
| becomes 100. So, after 1.2.9 comes 1.2.10. After 3.99.3, 3.100 might come. | |
| All original curl source release archives are named according to the libcurl | |
| version (not according to the curl client version that, as said before, might | |
| differ). | |
| As a service to any application that might want to support new libcurl | |
| features while still being able to build with older versions, all releases | |
| have the libcurl version stored in the curl/curlver.h file using a static | |
| numbering scheme that can be used for comparison. The version number is | |
| defined as: | |
| #define LIBCURL_VERSION_NUM 0xXXYYZZ | |
| Where XX, YY and ZZ are the main version, release and patch numbers in | |
| hexadecimal. All three numbers are always represented using two digits. 1.2 | |
| would appear as "0x010200" while version 9.11.7 appears as "0x090b07". | |
| This 6-digit hexadecimal number does not show pre-release number, and it is | |
| always a greater number in a more recent release. It makes comparisons with | |
| greater than and less than work. | |
| This number is also available as three separate defines: | |
| LIBCURL_VERSION_MAJOR, LIBCURL_VERSION_MINOR and LIBCURL_VERSION_PATCH. |