Your ad here would be seen by 100,000 unique vistors every month Haxx ad

Shopping cart software, Online file storage, Online photo storage, Hosted shopping cart, Contact management software, Email marketing software, Project management software, Issue tracking software, Online notepad, Web publishing software

curl's project page on


VERSIONS -- the version numbering scheme in curl

                                  _   _ ____  _
                              ___| | | |  _ \| |
                             / __| | | | |_) | |
                            | (__| |_| |  _ <| |___
                             \___|\___/|_| \_\_____|

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 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:

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.

donate! Page updated April 20, 2009.
web site info

File upload with ASP.NET