Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ADR-002 — Modèle d’objet hybride asymétrique, C-ABI pour le périmètre CoreFoundation/AppKit

La couche 2 expose un modèle d’objet C-ABI pour tout ce qui est susceptible d’être observé, bindé depuis d’autres langages, ou inspecté par des outils : collections, strings Unicode, URLs, services, vues, contrôleurs, propriétés observables. Pour tout le reste — algorithmique interne, parseurs, structures de données privées — on reste en Rust pur.

Frontière explicite : un type qui dérive #[derive(AirObject)] ou équivalent rejoint le monde C-ABI et accepte ses contraintes (compteur de référence atomique, classe = vtable + métadonnées, propriétés observables, introspection runtime). Pont entre les deux mondes par conversion explicite quand nécessaire.

Conséquence stratégique : Air est conçu polyglotte dès le départ. Un binding Python générique appelle air_object_get_property pour tout, sans code spécifique par classe. Idem Swift via @dynamicMemberLookup. Modèle qui fait que PyObjC marche sans glue par classe sur macOS.


Licence du document : MPL 2.0 Statut : Document fondateur. Édition directe autorisée en phase de design pré-ouverture publique ; immuable après ouverture publique (toute évolution via RFC, cf. ADR-015).