Update docs/contributing/binary-compatibility.md

Attempt to update the document, some parts of it are still
quite outdated (references to Sun/Solaris, ancient GCC and
wxWidgets version...).
This commit is contained in:
PB
2019-09-17 19:07:22 +02:00
parent e26d90028b
commit 698c0c09ae

View File

@@ -10,8 +10,8 @@ wxWidgets.
Releases Releases
-------- --------
General overview of releases can be found in tn0012.txt, but for General overview of releases can be found in [wxWidgets naming conventions](about-platform-toolkit-and-library-names.md),
completeness the wxWidgets release version number is as follows: but for completeness the wxWidgets release version number is as follows:
2.6.2 2.6.2
@@ -20,9 +20,9 @@ Where
2 6 2 2 6 2
Major Minor Release Major Minor Release
(I.E. Major.Minor.Release). (i.e. Major.Minor.Release).
All versions with EVEN minor version component (e.g. 2.4.x, 2.6.x etc.) All versions with EVEN minor version component (e.g. 2.8.x, 3.0.x etc.)
are expected to be binary compatible (ODD minors are development versions are expected to be binary compatible (ODD minors are development versions
and the compatibility constraints don't apply to them). Note that by and the compatibility constraints don't apply to them). Note that by
preserving binary compatibility we mean BACKWARDS compatibility only, preserving binary compatibility we mean BACKWARDS compatibility only,
@@ -37,8 +37,7 @@ also the section about `wxABI_VERSION`.
What kind of changes are NOT binary compatible What kind of changes are NOT binary compatible
---------------------------------------------- ----------------------------------------------
If it's still up, the [The KDE guide](https://community.kde.org/Policies/Binary_Compatibility_Issues_With_C%2B%2B)
[KDE guide](http://techbase.kde.org/Policies/Binary_Compatibility_Issues_With_C++)
is a good reference. is a good reference.
@@ -68,8 +67,8 @@ Changes which are compatible
- Adding a new non-virtual method to an existing class - Adding a new non-virtual method to an existing class
- Adding a new constructor to an existing class - Adding a new constructor to an existing class
- Overriding the implementation of an existing virtual function - Overriding the implementation of an existing virtual function
(this is considered to be backwards binary compatible until we find a (this is considered to be backwards binary compatible until we find a
counter example; currently it's known to work with Apple gcc at least) counter example; currently it's known to work with Apple gcc at least)
- Anything which doesn't result in ABI change at all, e.g. adding new - Anything which doesn't result in ABI change at all, e.g. adding new
macros, constants and, of course, private changes in the implementation macros, constants and, of course, private changes in the implementation
@@ -99,7 +98,7 @@ where
2 06 02 2 06 02
Major Minor Release Major Minor Release
I.E. it corresponds to the wxWidgets release in (1). I.e. it corresponds to the wxWidgets release in section Releases.
An example of using `wxABI_VERSION` is as follows for symbols An example of using `wxABI_VERSION` is as follows for symbols
only in a 2.6.2 release: only in a 2.6.2 release:
@@ -178,11 +177,11 @@ anything which fits the conditions of being `#if`'ed via `wxABI_VERSION`
needs to go here also. needs to go here also.
See 'info ld scripts version' on a GNU system, it's online here: See 'info ld scripts version' on a GNU system, it's online here:
http://www.gnu.org/software/binutils/manual/ld-2.9.1/html_node/ld_25.html https://ftp.gnu.org/old-gnu/Manuals/ld-2.9.1/html_node/ld_25.html
Or see chapter 5 of the 'Linker and Libraries Guide' for Solaris, available Or see chapter 5 of the 'Linker and Libraries Guide' for Solaris, available
online here: online here:
http://docsun.cites.uiuc.edu/sun_docs/C/solaris_9/SUNWdev/LLM/p1.html https://docs.oracle.com/cd/E19120-01/open.solaris/819-0690/chapter5-84101/index.html
The file has the layout as follows: The file has the layout as follows: