Annotation of embedaddon/curl/docs/libcurl/ABI, revision 1.1.1.1

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>