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

@@ -1,8 +1,8 @@
# Exemples / DO-DON'T — Chapitre 1 — Trajectoire d'implémentation
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
@@ -15,7 +15,7 @@ analyse sémantique
HIR
Sase IR
interpréteur
a backend LLVM
backend LLVM
Core V1
SDK initial
manifests et workspaces
@@ -44,6 +44,17 @@ Core/SDK lorsque pertinent
### Exemple 4
```text
source
Core
tooling
packages
artifacts
et, lorsque défini, ABI/binaire
```
### Exemple 5
```text
browser runtime / extension
browser chunks/bundling
@@ -60,4 +71,4 @@ cibles spécialisées
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,8 +1,8 @@
# Exemples / DO-DON'T — Chapitre 5 — Types primitifs
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
@@ -144,6 +144,12 @@ f16 f32 f64 f128
bitcast<float16>(value)
```
### Exemple 18
```text
where T implements Numeric
```
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,8 +1,8 @@
# Exemples / DO-DON'T — Chapitre 7 — Types nominaux et fichiers `.saseltype`
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
@@ -14,6 +14,87 @@ enum
union
```
### Exemple 2
```text
class Foo;
struct Bar;
```
### Exemple 3
```text
nominalement connu
identité du type, kind et paramètres génériques connus
sémantiquement complet
déclaration, héritage, interfaces et contrats résolus
layout-complet
représentation by-value, taille et alignement calculables lorsque nécessaires
```
### Exemple 4
```text
struct A {
A value;
}
```
### Exemple 5
```text
struct A {
B b;
}
struct B {
A a;
}
```
### Exemple 6
```text
struct A {
StaticArray<A, 0> values;
}
```
### Exemple 7
```text
class A {
B b;
}
class B {
A a;
}
```
### Exemple 8
```text
class A extends B
class B extends A
```
### Exemple 9
```text
interface A extends B
interface B extends A
```
### Exemple 10
```text
cyclic inheritance
recursive by-value layout
```
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,8 +1,8 @@
# Exemples / DO-DON'T — Chapitre 14 — Generics
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
@@ -15,18 +15,424 @@ OpAdd<Lhs,Rhs,Out>
### Exemple 2
```text
syntaxe des contraintes
variance ou absence de variance
contraintes multiples
specialization éventuelle
monomorphisation vs représentation partagée
contraintes sur types primitifs
const generics pour StaticArray<T,N>
generic methods
inférence éventuelle des arguments génériques à l'appel
wildcards/existentials éventuels
class Box<T> {
...
}
struct Pair<A, B> {
...
}
interface Comparable<T> {
...
}
func identity<T>(T value) -> T {
return value;
}
```
### Exemple 3
```text
Box<int32>
Pair<String, uint64>
Result<Data, ParseError>
```
### Exemple 4
```text
Box
Result
```
### Exemple 5
```text
Box<int32> box = Box<int32>(42);
```
### Exemple 6
```text
func first<T>(T left, T right) -> T;
int32 a = ...;
int32 b = ...;
int32 c = first(a, b);
```
### Exemple 7
```text
func create<T>() -> T;
String value = create(); // ERROR
```
### Exemple 8
```text
String value = create<String>();
```
### Exemple 9
```text
func same<T>(T a, T b) -> bool;
int16 a = ...;
int32 b = ...;
same(a, b); // ERROR
same<int32>(a::toInt32(), b); // OK
```
### Exemple 10
```text
where T extends SomeClass
where T implements SomeInterface
```
### Exemple 11
```text
func process<T>(T value) -> Void
where T extends Entity
where T implements Serializable
where T implements Comparable<T>
{
...
}
```
### Exemple 12
```text
func compare<A, B>(A left, B right) -> Ordering
where A implements Comparable<B>
{
...
}
```
### Exemple 13
```text
where T implements Comparable<T>
```
### Exemple 14
```text
where T is numeric
where T is primitive
where T is struct
where T is class
```
### Exemple 15
```text
where T implements Numeric
```
### Exemple 16
```text
interface B extends A {
}
```
### Exemple 17
```text
where T implements B
where T implements A
```
### Exemple 18
```text
open class Base<T>
where T implements Serializable
{
}
class Child<T> extends Base<T>
where T implements Serializable
{
}
```
### Exemple 19
```text
class Box<T> implements Iterable<T> {
...
}
class StringList implements Iterable<String> {
...
}
class StringContainer extends Container<String> {
...
}
```
### Exemple 20
```text
class PairBox<T> implements Container<Pair<T, T>> {
...
}
```
### Exemple 21
```text
Consumer<String>
Consumer<Array<uint8>>
```
### Exemple 22
```text
même nombre de paramètres génériques
même nature type/const de chaque paramètre
mêmes relations de contraintes
même contrat callable après substitution
```
### Exemple 23
```text
Dog extends Animal
```
### Exemple 24
```text
Container<Dog> -> Container<Animal>
```
### Exemple 25
```text
in T
out T
+T
-T
wildcards Java
```
### Exemple 26
```text
monomorphisation
code partagé avec metadata
stratégie hybride
```
### Exemple 27
```text
struct StaticArray<T, const uint64 N> {
...
}
struct Matrix<T, const uint64 Rows, const uint64 Columns> {
...
}
```
### Exemple 28
```text
bool
char
uint8
uint16
uint32
uint64
uint128
uint256
enum simple sans payload
```
### Exemple 29
```text
int8..int256
float16..float128
String
class
struct arbitraire
tuple
enum avec payload
```
### Exemple 30
```text
littéraux
const nommées déjà résolues
paramètres const generic
parenthèses
opérateurs primitifs purs autorisés sur ces valeurs
```
### Exemple 31
```text
StaticArray<uint8, 32>
StaticArray<uint8, PAGE_SIZE>
StaticArray<uint8, PAGE_SIZE * 2>
StaticArray<uint8, 1u64 << 12>
```
### Exemple 32
```text
StaticArray<uint8, computeSize()> // ERROR
StaticArray<uint8, value::toUint64()> // ERROR
```
### Exemple 33
```text
fonction
méthode
constructeur
allocation
I/O
état runtime
exception
appel d'intrinsic exposé comme callable
```
### Exemple 34
```text
const uint64 SIZE = ...;
StaticArray<uint8, SIZE>
```
### Exemple 35
```text
StaticArray<T, 2 + 2>
StaticArray<T, 4>
```
### Exemple 36
```text
func length<T, const uint64 N>(StaticArray<T, N> array) -> uint64
```
### Exemple 37
```text
func strange<const uint64 N>(StaticArray<int32, N * 2> value)
```
### Exemple 38
```text
where N > 0
where N <= 1024
```
### Exemple 39
```text
class Node<T> {
Nullable<Node<T>> next;
}
```
### Exemple 40
```text
class BufferNode<T, const uint64 N> {
Nullable<BufferNode<T, N>> next;
}
```
### Exemple 41
```text
class Node<T> {
Nullable<Node<Array<T>>> next; // ERROR
}
```
### Exemple 42
```text
class BufferNode<T, const uint64 N> {
Nullable<BufferNode<T, N + 1>> next; // ERROR
}
```
### Exemple 43
```text
class A<T> {
Nullable<B<T>> b;
}
class B<T> {
Nullable<A<T>> a;
}
```
### Exemple 44
```text
class A<T> {
Nullable<B<Array<T>>> b;
}
class B<T> {
Nullable<A<T>> a;
}
```
### Exemple 45
```text
func recurse<T>(T value) -> Void {
recurse<T>(value); // OK
}
```
### Exemple 46
```text
func recurse<T>(T value) -> Void {
recurse<Array<T>>(...); // ERROR
}
```
### Exemple 47
```text
<T...>
<const uint64... N>
generic parameter packs
wildcards
specialization
variance déclarative
contraintes négatives
```
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,8 +1,8 @@
# Exemples / DO-DON'T — Chapitre 24 — Casts et conversions
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
@@ -66,19 +66,112 @@ wrapToTarget()
### Exemple 6
```text
tryExactToInt32()
tryFloorToInt32()
tryCeilToInt32()
tryRoundToInt32()
tryTruncateToInt32()
tryToIntXX()
tryToUintXX()
```
### Exemple 7
```text
floor()
ceil()
round()
truncate()
```
### Exemple 8
```text
value::floor()::tryToInt32()
value::ceil()::tryToInt32()
value::round()::tryToInt32()
value::truncate()::tryToInt32()
```
### Exemple 9
```text
value::floor()::trySaturateToInt32()
value::round()::tryWrapToInt32()
```
### Exemple 10
```text
NaN -> NaN
+Infinity -> +Infinity
-Infinity -> -Infinity
+0 -> +0
-0 -> -0
```
### Exemple 11
```text
payload NaN
quiet/signaling bit
signe du NaN
représentation binaire exacte
```
### Exemple 12
```text
tryToFloatXX()
exige une représentation exacte
tryRoundToFloatXX()
accepte l'arrondi canonique
refuse une valeur finie hors domaine fini destination
saturatingRoundToFloatXX()
accepte l'arrondi canonique
sature une valeur finie hors domaine vers +/-Target::Max
```
### Exemple 13
```text
NotFinite
NotIntegral
OutOfRange
Inexact
```
### Exemple 14
```text
NotFinite
NaN ou +/-Infinity lorsqu'une valeur finie est requise
NotIntegral
float -> integer alors que la valeur n'est pas mathématiquement entière
OutOfRange
valeur mathématique hors du domaine de la destination
Inexact
valeur dans le domaine destination mais non représentable exactement
alors que l'opération exige l'exactitude
```
### Exemple 15
```text
sourceType
targetType
sourceValue
timestamp
backend
roundingMode
```
### Exemple 16
```text
annexes/A-numeric-conversions.md
```
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,8 +1,8 @@
# Exemples / DO-DON'T — Chapitre 33 — Imports et résolution des noms
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
@@ -38,10 +38,62 @@ import type foo.Token as FooToken;
### Exemple 5
```text
saselang.compiler.lexer.Token
saselang.compiler.lexer::tokenize(...)
src/foo/A.saseltype
src/foo/B.saseltype
```
### Exemple 6
```text
import type foo.A;
```
### Exemple 7
```text
namespace foo;
```
### Exemple 8
```text
charger le fichier immédiatement
exécuter le fichier
initialiser le fichier
compiler ce fichier avant le fichier courant
```
### Exemple 9
```text
A imports B
B imports A
```
### Exemple 10
```text
A imports B
B imports C
C imports A
```
### Exemple 11
```text
cycle de références de classes
autorisé
cycle d'appels
autorisé
cycle d'héritage
ERROR
cycle de layout by-value
ERROR
```
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,8 +1,8 @@
# Exemples / DO-DON'T — Chapitre 40 — Targets, plateformes, architectures, ABI, distributions et capabilities
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
@@ -143,6 +143,53 @@ StandardError
### Exemple 13
```text
language.*
core.*
target.*
platform.*
sdk.*
```
### Exemple 14
```text
language.exceptions
core.numeric.float128
core.collections.array
target.atomic.int64
target.simd.float32
platform.filesystem
platform.network
sdk.logging
```
### Exemple 15
```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 16
```text
instruction native disponible
lowering/backend direct ou optimisé
instruction native absente
implémentation logicielle conforme
```
### Exemple 17
```text
TargetFamily
Platform
@@ -153,4 +200,4 @@ Distribution
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,11 +1,11 @@
# Exemples / DO-DON'T — Chapitre 48 — Inventaire des points V1 encore OUVERTS
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
Aucun bloc d'exemple explicite n'est encore psent dans ce chapitre.
Aucun bloc d'exemple explicite dans cette révision.
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,8 +1,8 @@
# Exemples / DO-DON'T — Chapitre 49 — Éléments V1 RÉSERVÉS mais non obligatoires à implémenter immédiatement
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
@@ -23,4 +23,4 @@ noms nécessaires pour éviter collisions futures
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,11 +1,11 @@
# Exemples / DO-DON'T — Chapitre 51 — Invariants de conception
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
Aucun bloc d'exemple explicite n'est encore psent dans ce chapitre.
Aucun bloc d'exemple explicite dans cette révision.
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,24 +1,24 @@
# Exemples / DO-DON'T — Chapitre 52 — Priorité de spécification après 0.2.9
# Exemples / DO-DON'T — Chapitre 52 — Priorité de spécification après 0.2.14
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
```text
1. terminer casts/conversions numériques + matrice Core
2. generics + contraintes + const generics
3. String/Unicode + collections + Range
4. lambdas/closures + callable model
5. async/concurrency décision V1
6. modèle mémoire + allocator + pointers + unsafe
7. fautes runtime + construction/destruction cleanup
8. Core V1 exact et capacités target
9. SDK V1 initial et frontières Core/SDK
10. FFI C exacte
11. reflection/metadata/tests/tooling
12. grammaire syntaxique complète et audit lexical final
1. String/Unicode + collections + Range
2. lambdas/closures + callable model
3. async/concurrency décision V1
4. modèle mémoire + allocator + pointers + unsafe
5. fautes runtime + construction/destruction cleanup
6. Core V1 exact : Numeric, collections, erreurs, TypeInfo et autres contrats
7. capacités target et registre canonique des capability identifiers
8. SDK V1 initial et frontières Core/SDK
9. FFI C exacte
10. reflection/metadata/tests/tooling
11. grammaire syntaxique complète et audit lexical final
12. audit mécanique des generics/const generics/récursivité et conversions
13. audit complet de toutes les sections V1 REQUIS — À FINALISER
14. consolidation examples / DO-DON'T / conformance tests
15. plan d'implémentation du compilateur/interpréteur V1
@@ -26,4 +26,4 @@
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.