Re: [PATCHv4 5/5] doc: Add ABI __experimental tag documentation
From: Ferruh Yigit <hidden>
Date: 2018-01-11 20:06:51
On 12/13/2017 3:17 PM, Neil Horman wrote:
quoted hunk ↗ jump to hunk
Document the need to add the __experimental tag to appropriate functions Signed-off-by: Neil Horman <nhorman@tuxdriver.com> CC: Thomas Monjalon <redacted> CC: "Mcnamara, John" <redacted> CC: Bruce Richardson <redacted> --- doc/guides/contributing/versioning.rst | 9 +++++++++ 1 file changed, 9 insertions(+)diff --git a/doc/guides/contributing/versioning.rst b/doc/guides/contributing/versioning.rst index 400090628..53f56397e 100644 --- a/doc/guides/contributing/versioning.rst +++ b/doc/guides/contributing/versioning.rst@@ -50,6 +50,15 @@ those new APIs and start finding issues with them, new DPDK APIs will be automatically marked as ``experimental`` to allow for a period of stabilization before they become part of a tracked ABI. +Note that marking an API as experimental is a two step process. To mark an API +as experimental, the symbols which are desired to be exported must be placed in +an EXPERIMENTAL version block in the corresponding libraries' version map +script. Secondly, the corresponding definitions of those exported functions, and +their forward declarations (in the development header files), must be marked +with the __experimental tag (see rte_compat.h). The DPDK build makefiles +preform a check to ensure that the map file and the C code reflect the same +list of symbols.
There are more steps we historically do to mark an API as experimental: - Add to function header comment experimental for API documentation, preferably with a warning tag to highlight it: /** * @warning * @b EXPERIMENTAL: .... */ - If whole APIs in header file are experimental, add same experimental warning doxygen comment in file comment, again preferably with warning. - If whole library is experimental, put EXPERIMENTAL tag into maintainers file as well.
+ ABI versions, once released, are available until such time as their deprecation has been noted in the Release Notes for at least one major release cycle. For example consider the case where the ABI for DPDK 2.0 has been