- Experimental APIs are distinguished in code by:
- double-underscore namespace (names starting with "svn_ _" or "svn_LIB_ _") 2
- Doxygen annotation "@warning EXPERIMENTAL"
- Function annotation "SVN_EXPERIMENTAL" (where applicable – that is, for C functions)
- being in a separate header 1
- New experimental APIs MAY be introduced in the .0 patch release of any minor release series (regular or LTS)
- and MUST NOT be introduced in a patch release other than .0
- Compatibility: throughout a minor release series, an experimental API:
- MUST be backward- and forward-compatible at the ABI level, so that a caller will not crash;
- MAY change its functionality in any way, up to and including doing nothing or returning an error indication such as "unsupported feature".
- In any minor release, an experimental API MAY be incompatible in any way with experimental APIs in the previous minor release, or MAY be removed.
- When an experimental API is considered stable enough, :
- it SHOULD be promoted to a stable API in the next minor release.
- We SHOULD continue to provide the last experimental version of this API as well, for one minor release, if we can make it compatible. (Compatible means the same as when a stable API is changed.)
1 see 'Packaging and Linking' and 'Distinguishing Experimental APIs' below