|
13.
|
|
|
API stability
|
|
|
(itstool) path: page/title
|
|
|
|
(no translation yet)
|
|
|
|
Located in
C/api-stability.page:20
|
|
14.
|
|
|
Summary
|
|
|
(itstool) path: synopsis/title
|
|
|
|
(no translation yet)
|
|
|
|
Located in
C/api-stability.page:23
C/async-programming.page:26
C/databases.page:24
C/documentation.page:32
C/file-system.page:24
C/introspection.page:23
C/logging.page:26
C/main-contexts.page:27
C/memory-management.page:65
C/namespacing.page:25
C/parallel-installability.page:33
C/threading.page:24
C/tooling.page:45
C/unit-testing.page:23
C/version-control.page:23
C/versioning.page:23
|
|
15.
|
|
|
Define API stability guarantees for your project. (<link xref="#stability"/>)
|
|
|
(itstool) path: item/p
|
|
|
|
(no translation yet)
|
|
|
|
Located in
C/api-stability.page:26
|
|
16.
|
|
|
Ensure version numbers are changed as appropriate when API changes. (<link xref="#versioning"/>)
|
|
|
(itstool) path: item/p
|
|
|
|
(no translation yet)
|
|
|
|
Located in
C/api-stability.page:30
|
|
17.
|
|
|
API and ABI
|
|
|
(itstool) path: section/title
|
|
|
|
(no translation yet)
|
|
|
|
Located in
C/api-stability.page:38
|
|
18.
|
|
|
At a high level, an API – <em>Application Programming Interface</em> – is the boundary between two components when developing against them. It is closely related to an ABI – <em>Application Binary Interface</em> – which is the boundary at runtime. It defines the possible ways in which other components can interact with a component. More concretely, this normally means the C headers of a library form its API, and compiled library symbols its ABI. The difference between an API and ABI is given by compilation of the code: there are certain things in a C header, such as <code>#define</code>s, which can cause a library’s API to change without changing its ABI. But these differences are mostly academic, and for all practical purposes, API and ABI can be treated interchangeably.
|
|
|
(itstool) path: section/p
|
|
|
|
(no translation yet)
|
|
|
|
Located in
C/api-stability.page:40
|
|
19.
|
|
|
Examples of API-incompatible changes to a C function would be to add a new parameter, change the function’s return type, or remove a parameter.
|
|
|
(itstool) path: section/p
|
|
|
|
(no translation yet)
|
|
|
|
Located in
C/api-stability.page:54
|
|
20.
|
|
|
However, many other parts of a project can form an API. If a daemon exposes itself on D-Bus, the interfaces exported there form an API. Similarly, if a C API is exposed in higher level languages by use of GIR, the GIR file forms another API — if it changes, any higher level code using it must also change.
|
|
|
(itstool) path: section/p
|
|
|
|
(no translation yet)
|
|
|
|
Located in
C/api-stability.page:59
|
|
21.
|
|
|
Other examples of more unusual APIs are configuration file locations and formats, and GSettings schemas. Any changes to these could require code using your library to change.
|
|
|
(itstool) path: section/p
|
|
|
|
(no translation yet)
|
|
|
|
Located in
C/api-stability.page:67
|
|
22.
|
|
|
Stability
|
|
|
(itstool) path: section/title
|
|
|
|
(no translation yet)
|
|
|
|
Located in
C/api-stability.page:75
|