Home | History | Annotate | Download | only in libcurl
      1                                   _   _ ____  _
      2                               ___| | | |  _ \| |
      3                              / __| | | | |_) | |
      4                             | (__| |_| |  _ <| |___
      5                              \___|\___/|_| \_\_____|
      6 
      7                           libcurl's binary interface
      8 
      9 ABI - Application Binary Interface
     10 ----------------------------------
     11 
     12   "ABI" describes the low-level interface between an application program and a
     13   library. Calling conventions, function arguments, return values, struct
     14   sizes/defines and more.
     15 
     16   [Wikipedia has a longer description](http://en.wikipedia.org/wiki/Application_binary_interface)
     17 
     18 Upgrades
     19 --------
     20 
     21   In the vast majority of all cases, a typical libcurl upgrade does not break
     22   the ABI at all. Your application can remain using libcurl just as before,
     23   only with less bugs and possibly with added new features. You need to read
     24   the release notes, and if they mention an ABI break/soname bump, you may
     25   have to verify that your application still builds fine and uses libcurl as
     26   it now is defined to work.
     27 
     28 Version Numbers
     29 ---------------
     30 
     31   In libcurl land, you really can't tell by the libcurl version number if that
     32   libcurl is binary compatible or not with another libcurl version.
     33 
     34 Soname Bumps
     35 ------------
     36 
     37   Whenever there are changes done to the library that will cause an ABI
     38   breakage, that may require your application to get attention or possibly be
     39   changed to adhere to new things, we will bump the soname. Then the library
     40   will get a different output name and thus can in fact be installed in
     41   parallel with an older installed lib (on most systems). Thus, old
     42   applications built against the previous ABI version will remain working and
     43   using the older lib, while newer applications build and use the newer one.
     44 
     45   During the first seven years of libcurl releases, there have only been four
     46   ABI breakages.
     47 
     48   We are determined to bump the SONAME as rarely as possible.  Ideally, we
     49   never do it again.
     50 
     51 Downgrades
     52 ----------
     53 
     54   Going to an older libcurl version from one you're currently using can be a
     55   tricky thing. Mostly we add features and options to newer libcurls as that
     56   won't break ABI or hamper existing applications. This has the implication
     57   that going backwards may get you in a situation where you pick a libcurl
     58   that doesn't support the options your application needs. Or possibly you
     59   even downgrade so far so you cross an ABI break border and thus a different
     60   soname, and then your application may need to adapt to the modified ABI.
     61 
     62 History
     63 -------
     64 
     65   The previous major library soname number bumps (breaking backwards
     66   compatibility) have happened the following times:
     67 
     68   0 - libcurl 7.1,   August 2000
     69 
     70   1 - libcurl 7.5    December 2000
     71 
     72   2 - libcurl 7.7    March 2001
     73 
     74   3 - libcurl 7.12.0 June 2004
     75 
     76   4 - libcurl 7.16.0 October 2006
     77