Annotation of embedaddon/curl/docs/libcurl/ABI, revision 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>