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
|
# Contributing
YASL is a small desktop surface/input library for application-owned loops and
renderers. Read [the guide](docs/guide.md) and [API policy](docs/api-policy.md).
Keep public C APIs direct: opaque surface pointers, plain IDs/numeric arguments,
and one tagged event. Avoid new descriptor/geometry/string/handle helper structs,
application runners, graphics engines, or hidden presentation policy.
Portable lifetime, event ownership, validation, and rendering bridges live in
src/common. Native implementations live in src/platform/wayland, x11, and cocoa.
Private backend geometry/frame/loop types are implementation details, not installed
API. Linux desktop services live in src/platform/freedesktop; POSIX synchronization
and waiting live in src/platform/posix. Keep native handles typed in extension headers.
Document public units, ownership, errors, thread requirements, callback timing,
and unsupported behavior. Add useful behavior coverage and examples. Run:
```sh
meson compile -C build
meson test -C build --print-errorlogs
```
Changes to portable/native behavior need both Linux backends and installed shared/
static consumers checked. Use the isolated GPU suite described in [testing](docs/testing.md).
Cocoa changes require a native macOS build/test; disclose platforms not exercised.
Do not edit generated protocol files for unrelated changes. Check exact exports and
public C/C++ compilation. Contributions use the project's MIT license.
|