This commit is contained in:
2026-09-12 18:12:13 +02:00
parent 18306bdc8c
commit 57ae671f88
27 changed files with 2060 additions and 623 deletions

View File

@@ -189,7 +189,76 @@ Le modèle doit aussi permettre de décrire les capacités atomiques pertinentes
Une capability statique signifie que l'environnement fournit la capacité ; elle ne garantit pas qu'une opération runtime particulière réussira.
## 40.9 Compatibilité target/dépendance — V1 REQUIS — FIGÉE EN PRINCIPE
## 40.9 Propriétaires et identifiants de capabilities — V1 REQUIS — DIRECTION FIGÉE
Les capabilities utilisent une nomenclature hiérarchique commune, ASCII, en minuscules, séparée par `.`.
Le premier segment identifie le propriétaire sémantique :
```text
language.*
core.*
target.*
platform.*
sdk.*
```
Exemples conceptuels :
```text
language.exceptions
core.numeric.float128
core.collections.array
target.atomic.int64
target.simd.float32
platform.filesystem
platform.network
sdk.logging
```
Cette organisation permet de regrouper les capacités par propriétaire et d'éviter un registre global plat.
Les noms exacts et le registre exhaustif seront stabilisés avec le Core/SDK, mais un même concept ne doit pas recevoir des conventions concurrentes telles que `hasFloat128`, `supports_float128` et `numeric-f128`.
Les packages utilisateurs ne doivent pas usurper les espaces de noms de capabilities réservés à la toolchain/Core/SDK.
## 40.10 Niveaux de capacité — V1 REQUIS — FIGÉ EN PRINCIPE
Trois niveaux conceptuels sont distingués :
```text
Language-required
sémantique nécessaire à tout compilateur Saselang conforme
Core-required-for-supported-type
contrat Core obligatoire dès que le type/capacité fondamentale existe
sur le target
Core/target optional capability
fonctionnalité réellement optionnelle ou spécifique d'un environnement
```
Exemple : si un target supporte `float128`, les conversions Core fondamentales définies par la matrice numérique pour `float128` doivent être disponibles.
Le target ne peut pas exposer `float128` tout en supprimant arbitrairement certaines conversions fondamentales simplement parce que le matériel n'offre pas une instruction native correspondante.
## 40.11 Émulation logicielle — V1 REQUIS — FIGÉ
Lorsqu'une fonctionnalité fondamentale peut raisonnablement être émulée de façon conforme, l'absence d'un support matériel natif ne la rend pas indisponible.
```text
instruction native disponible
lowering/backend direct ou optimisé
instruction native absente
implémentation logicielle conforme
```
La différence doit porter sur les performances, pas sur la sémantique visible.
Un target réellement contraint peut ne pas fournir un type/capacité fondamentale entière. Dans ce cas, le diagnostic doit porter sur cette capacité ou ce type, plutôt que sur l'absence aléatoire d'une méthode secondaire.
## 40.12 Compatibilité target/dépendance — V1 REQUIS — FIGÉE EN PRINCIPE
Un package ou une dépendance peut déclarer des contraintes de target/platform/ABI/capabilities.