Home | History | Annotate | Download | only in docs
      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`.
     57