PORT-ABI requirements

Requirement: No EmbCC-specific extension in the public API PORT-ABI-001
status: Accepted
evidence: not evaluated
design_source: requirements/PORT.md

The public kernel API shall not require an EmbCC-specific language extension.

Rationale: GCC and Clang builds are first-class (ADR-023).

Status: Accepted 2026-10-07

Verification: Build matrix: public headers compile with -std=c11 -pedantic on GCC and Clang.

Trace: SPEC-011 §15; SPEC-001 §10; v0.1 §21.5

Normative source.

Requirement: Portability layer for attributes and builtins PORT-ABI-002
status: Accepted
evidence: not evaluated
design_source: requirements/PORT.md
links incoming: API-029

Compiler-specific attributes and builtins shall be isolated behind portability interfaces.

Rationale: No compiler conditionals scattered through generic code (v0.1 §21.2).

Status: Accepted 2026-10-07

Verification: Analysis: CI grep rejects __attribute__ and __builtin_ outside include/emb/compiler/ and arch/.

Trace: SPEC-011 §15; SPEC-001 §10

Normative source.

Requirement: Documented and tested compiler matrix PORT-ABI-003
status: Accepted
evidence: not evaluated
design_source: requirements/PORT.md

Supported compiler and version combinations shall be documented and continuously tested where infrastructure permits.

Rationale: Support is stated per architecture and version, not claimed globally (v0.1 §21.3).

Status: Accepted 2026-10-07

Verification: Analysis: the matrix of 09 §11 is generated from CI results each release.

Trace: 09 §11; 05 §2

Normative source.

Requirement: Early detection of incompatible combinations PORT-ABI-004
status: Accepted
evidence: not evaluated
design_source: requirements/PORT.md

The build shall detect incompatible architecture, ABI, and configuration combinations as early as practical.

Rationale: A refused configuration beats a wrong image.

Status: Accepted 2026-10-07

Verification: Build tests: hard-float and soft-float mix, a kernel feature the port manifest lacks, a profile the port cannot support, each fails at configuration.

Trace: SPEC-011 §2; BLD-007

Normative source.

Requirement: Optimizations never change semantics PORT-ABI-005
status: Accepted
evidence: not evaluated
design_source: requirements/PORT.md

Toolchain-specific optimizations may improve performance but shall not change documented kernel semantics.

Rationale: One conformance suite across compilers and optimization levels.

Status: Accepted 2026-10-07

Verification: The conformance suite runs at -O0, -Os, and -O2 on every compiler of the matrix.

Trace: 05 §4; 09 §7

Normative source.