(original) (raw)

diff --git a/docs/DeveloperPolicy.rst b/docs/DeveloperPolicy.rst index f090c6d..361cdc5 100644 --- a/docs/DeveloperPolicy.rst +++ b/docs/DeveloperPolicy.rst @@ -518,6 +518,30 @@ for llvm users and not imposing a big burden on llvm developers: it is to drop it. That is not very user friendly and a bit more effort is expected, but no promises are made. +LLVM C-API Backwards Compatibility +----------------------------- +The LLVM C-API started out as a small and stable set of core APIs, but over time +the API has grown to serve the different needs of more and more clients. To +accommodate the two separate types of clients and to ease the burden for +developers, the C-API has been separated into a stable API and a unstable +bindings API. + +The stable API is meant to be API and ABI compatible across LLVM releases. The +scope of the stable API is limited and focused on a subset of LLVM. + +The bindings API on the other hand doesn't make any such guarantee and is +therefore more volatile, but also more up-to-date and complete. + +Consider the following before making changes to the stable C-API: +* Changes to existing API needs to be ABI compatible. + +* Unreleased C-API does not have this limitation. + +* C-API cannot be removed until it has been marked as deprecated and mentioned + in the release notes as deprecated for one release cycle. + +* Existing API implementations might be turned into a NOOP (limitations?). + .. _copyright-license-patents: Copyright, License, and Patents