blob: d5c71592ed7ccceda4aad403761ca0434e9c2207 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
# Public API policy
YASL 0.1 is pre-release. The installed headers are the public API; implementation
headers under `src/` are private even when their symbols appear in a static
archive. The shared library exports only declarations from installed headers.
Native backend headers and accessors are available only for built backends.
There is currently no stable ABI promise and no versioned shared-library SONAME.
Rebuild consumers against the exact headers/library pair they ship. Source and
binary compatibility can change before 1.0. Do not assume struct layout is stable
across releases, mix headers and binaries from different revisions, or persist
public structs as a file/network format. The package version is available through
`pkg-config --modversion yasl`.
See [migration notes](migrating.md) for the portable keyboard and fractional
scroll API changes.
API changes should keep ordinary CPU drawing usable with only `<yasl/yasl.h>`
and the C standard library. Prefer an explicit capability and an ordinary
unsupported result over backend names in portable application logic. Native
rendering and handles belong in the extension headers. Avoid adding engine,
widget, renderer, or application policy to the surface layer.
Every public addition or behavior change needs:
- A header contract describing arguments, result, units, lifetime, threading,
callback timing, and unsupported behavior where applicable.
- An update to the guide and its backend limits when observable behavior changes.
- A runnable example when the new workflow cannot be understood from an isolated
call, and meaningful regression coverage for ownership or behavior changes.
- A check that shared exports and installed-package consumers still work.
Functions documenting errno set it on failure. Other booleans report acceptance
or availability without a guaranteed errno; void setters are best effort.
Callbacks and successful returns do not imply confirmed screen presentation.
See `yasl_timing.source` for provenance. Future changes that strengthen error
reporting must preserve these distinctions in documentation.
|