Hi Ray,

> +DPDK ABI/API policy
> +===================
> +
> +Description
> +-----------
> +
> +This document details some methods for handling ABI management in the
> DPDK.
> +
> +General Guidelines
> +------------------
> +
> +#. Whenever possible, ABI should be preserved #. ABI/API may be changed
> +with a deprecation process #. The modification of symbols can generally
> +be managed with versioning #. Libraries or APIs marked in
> +``experimental`` state may change without constraint #. New APIs will
> +be marked as ``experimental`` for at least one release to allow
> +   any issues found by users of the new API to be fixed quickly #. The
> +addition of symbols is generally not problematic #. The removal of
> +symbols generally is an ABI break and requires bumping of the
> +   LIBABIVER macro
> +#. Updates to the minimum hardware requirements, which drop support
> for hardware which
> +   was previously supported, should be treated as an ABI change.

[Hemant] You mean the specific HW pmds? 
1. Why dropping HW PMD is a ABI change? 
2. Even if they are supported across releases, there is no guarantee that they 
are not broken.

> +
> +What is an ABI
> +~~~~~~~~~~~~~~
> +
> +An ABI (Application Binary Interface) is the set of runtime interfaces
> +exposed by a library. It is similar to an API (Application Programming
> +Interface) but is the result of compilation.  It is also effectively
> +cloned when applications link to dynamic libraries.  That is to say
> +when an application is compiled to link against dynamic libraries, it
> +is assumed that the ABI remains constant between the time the application
> is compiled/linked, and the time that it runs.
> +Therefore, in the case of dynamic linking, it is critical that an ABI
> +is preserved, or (when modified), done in such a way that the
> +application is unable to behave improperly or in an unexpected fashion.
> +
> +
> +ABI/API Deprecation
> +-------------------
> +
> +The DPDK ABI policy
> +~~~~~~~~~~~~~~~~~~~
> +
> +ABI versions are set at the time of major release labeling, and the ABI
> +may change multiple times, without warning, between the last release
> +label and the HEAD label of the git tree.
> +
> +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 shipped and then a decision is made to modify it during the
> +development of DPDK 2.1. The decision will be recorded in the Release
> +Notes for the DPDK 2.1 release and the modification will be made available
> in the DPDK 2.2 release.
> +
[Hemant]  Is it possible to update the DPDK numbering to current versioning, 
instead of using old 2.x numbering?

> +ABI versions may be deprecated in whole or in part as needed by a given
> +update.
> +
> +Some ABI changes may be too significant to reasonably maintain multiple
> +versions. In those cases ABI's may be updated without backward
> +compatibility being provided. The requirements for doing so are:
> +
> +#. At least 3 acknowledgments of the need to do so must be made on the
> +   dpdk.org mailing list.
> +
> +   - The acknowledgment of the maintainer of the component is mandatory,
> or if
> +     no maintainer is available for the component, the tree/sub-tree
> maintainer
> +     for that component must acknowledge the ABI change instead.
> +
> +   - It is also recommended that acknowledgments from different "areas of
> +     interest" be sought for each deprecation, for example: from NIC
> vendors,
> +     CPU vendors, end-users, etc.
> +
> +#. The changes (including an alternative map file) can be included with
> +   deprecation notice, in wrapped way by the ``RTE_NEXT_ABI`` option,
> +   to provide more details about oncoming changes.
> +   ``RTE_NEXT_ABI`` wrapper will be removed when it become the default
> ABI.

[Hemant]  The older implementation will or can be removed at this point of 
time? 

Reply via email to