You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@stdcxx.apache.org by Martin Sebor <se...@roguewave.com> on 2007/10/20 22:59:07 UTC

binary compatibility rules (was: Re: svn commit: r586796 - /incubator/stdcxx/branches/4.2.x/include/rw/_config.h)

FYI: It was privately pointed out to me that the comments about
the source and binary compatibility in rw/_config.h were at odds
with the compatibility policy posted some time ago to the list
(and at http://incubator.apache.org/stdcxx/versions.html). This
changes reconciles the discrepancy by reflecting the rules set
out by the policy in the header.

Let me know if there are questions or comments regarding this
change or the policy itself.

Martin

sebor@apache.org wrote:
> Author: sebor
> Date: Sat Oct 20 13:47:09 2007
> New Revision: 586796
> 
> URL: http://svn.apache.org/viewvc?rev=586796&view=rev
> Log:
> 2007-10-20  Martin Sebor  <se...@roguewave.com>
> 
> 	* _config.h (_RWSTD_VER): Corrected comments explaining source
> 	and binary compatibility rules controlling changes to the library
> 	version number.
> 
> Modified:
>     incubator/stdcxx/branches/4.2.x/include/rw/_config.h
> 
> Modified: incubator/stdcxx/branches/4.2.x/include/rw/_config.h
> URL: http://svn.apache.org/viewvc/incubator/stdcxx/branches/4.2.x/include/rw/_config.h?rev=586796&r1=586795&r2=586796&view=diff
> ==============================================================================
> --- incubator/stdcxx/branches/4.2.x/include/rw/_config.h (original)
> +++ incubator/stdcxx/branches/4.2.x/include/rw/_config.h Sat Oct 20 13:47:09 2007
> @@ -41,10 +41,10 @@
>  //                    | | | |
>  //                   MMmmuupp
>  //                    | | | |
> -//                    | | | +--- pp = patch release number
> -//                    | | +----- uu = micro release number
> -//                    | +------- mm = minor release number
> -//                    +--------- MM = major release number
> +//                    | | | +--- pp = patch version number
> +//                    | | +----- uu = micro version number
> +//                    | +------- mm = minor version number
> +//                    +--------- MM = major version number
>  
>  // library version string (patch number included only if non-zero)
>  #define _RWSTD_VER_STR   "4.2.0"
> @@ -55,13 +55,22 @@
>  #define _RWSTD_VER_MICRO ((_RWSTD_VER >>  8) & 0xff)
>  #define _RWSTD_VER_PATCH (_RWSTD_VER & 0xff)
>  
> -// Two libraries are Source Compatible if they have the same major
> -// release number. Libraries whose major release numbers differ may
> -// or may not be source compatible.
> -// Two libraries are Binary Compatible (symbol-wise and functionally)
> -// if have the same major and minor release numbers. Libraries whose
> -// major and minor release numbers differ may or may not be binary
> -// compatible.
> +// a newer release of stdcxx is backward source and binary compatible
> +// with an older release if both releases share the same major version
> +// number; stdcxx releases whose major version numbers differ may or
> +// may not be source or binary compatible
> +
> +// two releases of stdcxx are forward (as well as backward) source and
> +// binary compatible if both releases share the same major and minor
> +// version numbers
> +
> +// backward compatibility means that a program linked with an older
> +// release of a library will not be adversely affected by upgrading
> +// to a more recent release of the same library
> +
> +// forward compatibility means that a program linked with a newer
> +// release of a library will not be adversely affected by downgrading
> +// to an older release of the same library
>  
>  /**************************************************************************
>   * OVERRIDES FOR CONFIGURATION MACROS                                     *
> 
>