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

                          libcurl's binary interface

ABI - Application Binary Interface

  First, allow me to define the word for this context: ABI describes the
  low-level interface between an application program and a library. Calling
  conventions, function arguments, return values, struct sizes/defines and
  more.

  For a longer description, see
  http://en.wikipedia.org/wiki/Application_binary_interface

Upgrades

  In the vast majority of all cases, a typical libcurl upgrade does not break
  the ABI at all. Your application can remain using libcurl just as before,
  only with less bugs and possibly with added new features. You need to read
  the release notes, and if they mention an ABI break/soname bump, you may
  have to verify that your application still builds fine and uses libcurl as
  it now is defined to work.

Version Numbers

  In libcurl land, you really can't tell by the libcurl version number if that
  libcurl is binary compatible or not with another libcurl version.

Soname Bumps

  Whenever there are changes done to the library that will cause an ABI
  breakage, that may require your application to get attention or possibly be
  changed to adhere to new things, we will bump the soname. Then the library
  will get a different output name and thus can in fact be installed in
  parallel with an older installed lib (on most systems). Thus, old
  applications built against the previous ABI version will remain working and
  using the older lib, while newer applications build and use the newer one.

  During the first seven years of libcurl releases, there have only been four
  ABI breakages.

Downgrades

  Going to an older libcurl version from one you're currently using can be a
  tricky thing. Mostly we add features and options to newer libcurls as that
  won't break ABI or hamper existing applications. This has the implication
  that going backwards may get you in a situation where you pick a libcurl
  that doesn't support the options your application needs. Or possibly you
  even downgrade so far so you cross an ABI break border and thus a different
  soname, and then your application may need to adapt to the modified ABI.

History

  The previous major library soname number bumps (breaking backwards
  compatibility) have happened the following times:

  0 - libcurl 7.1,   August 2000

  1 - libcurl 7.5    December 2000

  2 - libcurl 7.7    March 2001

  3 - libcurl 7.12.0 June 2004

  4 - libcurl 7.16.0 October 2006
