This commit is contained in:
2026-09-13 10:20:16 +02:00
parent 019c8ad335
commit b72193d656
38 changed files with 1523 additions and 837 deletions

View File

@@ -66,11 +66,51 @@ unsafe field
Le caractère dangereux est porté par le type/opération.
## 27.4 Raw pointers — V1 REQUIS — À FINALISER
## 27.4 Pointeurs et accès mémoire bas niveau — V1 REQUIS — À FINALISER CRITIQUE
Les pointeurs bruts existent explicitement et leurs opérations de dereference/arithmétique autorisées doivent être précisément définies.
Le modèle mémoire contient un sous-ensemble dédié aux pointeurs ; il ne doit pas être confondu avec les références de classe ou `Slice<T>`.
Les noms des types (`Ptr<T>`, `PtrMut<T>` ou autre) restent à figer.
La spécification devra distinguer au minimum :
```text
référence de classe
accès sûr ordinaire vers un objet
Slice<T>
vue sûre, bornée et contiguë sur un stockage existant
pointeur Saselang
adresse explicite avec contrat de type/mutabilité à définir
pointeur brut / FFI
accès mémoire bas niveau potentiellement unsafe
function pointer
représentation ABI d'une cible callable, distincte des callables/closures ordinaires
```
Les noms exacts des types (`Ptr<T>`, `PtrMut<T>` ou autre) restent à figer.
Doivent être définis explicitement :
```text
nullabilité et non-null par défaut éventuel
const T pointé et constness du pointeur lui-même
dereference
address-of
arithmétique de pointeurs
alignement
allocation/libération manuelles
casts entre pointeurs
conversion pointeur <-> entier si elle existe
pointeur opaque / équivalent éventuel de void*
function pointers
FFI C
ownership ou absence d'ownership attaché au pointeur
interaction avec allocator, lifetime interne et thread safety
```
Le code ordinaire ne doit pas avoir besoin de pointeurs explicites lorsque les références de classe, arrays, slices ou autres abstractions sûres suffisent. Les opérations dangereuses doivent rester dans l'inventaire fermé `unsafe`.
## 27.5 Allocator — V1 REQUIS — À FINALISER CRITIQUE