v0.2.12
This commit is contained in:
11
examples/000-statuts-normatifs-examples.md
Normal file
11
examples/000-statuts-normatifs-examples.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Exemples / DO-DON'T — Chapitre 0 — Statuts normatifs
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
Aucun bloc d'exemple explicite n'est encore présent dans ce chapitre.
|
||||
|
||||
## 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.
|
||||
63
examples/001-trajectoire-dimplementation-examples.md
Normal file
63
examples/001-trajectoire-dimplementation-examples.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# 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.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
frontend complet
|
||||
lexer
|
||||
parser
|
||||
AST
|
||||
analyse sémantique
|
||||
HIR
|
||||
Sase IR
|
||||
interpréteur
|
||||
a backend LLVM
|
||||
Core V1
|
||||
SDK initial
|
||||
manifests et workspaces
|
||||
gestion des dépendances
|
||||
outils initiaux
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
représentable par le backend
|
||||
mais non officiellement supportée par la toolchain Saselang
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
compiler frontend
|
||||
semantic analysis
|
||||
Sase IR
|
||||
interpreter
|
||||
tooling
|
||||
package/build tooling
|
||||
Core/SDK lorsque pertinent
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
browser runtime / extension
|
||||
browser chunks/bundling
|
||||
WebAssembly
|
||||
JVM
|
||||
JavaScript
|
||||
TypeScript
|
||||
Android packaging
|
||||
iOS packaging
|
||||
backends/ABI supplémentaires
|
||||
outillage avancé
|
||||
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.
|
||||
116
examples/002-principes-generaux-du-langage-examples.md
Normal file
116
examples/002-principes-generaux-du-langage-examples.md
Normal file
@@ -0,0 +1,116 @@
|
||||
# Exemples / DO-DON'T — Chapitre 2 — Principes généraux du langage
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
and comme alias de &&
|
||||
or comme alias de ||
|
||||
=== en plus de l'identité explicite
|
||||
++ et --
|
||||
ternaire ?: si les formes productrices de `match`/`if` avec `emit` couvrent le besoin
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
&& / || short-circuit
|
||||
& / | / ^ logique eager sur bool
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
keywords
|
||||
identifiers
|
||||
numeric literals
|
||||
operators
|
||||
punctuation
|
||||
syntactic whitespace
|
||||
namespace syntax
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
String literals
|
||||
char literals
|
||||
ordinary comments
|
||||
Saseldoc comments
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
U+0020 SPACE
|
||||
U+0009 TAB
|
||||
U+000A LF
|
||||
U+000D CR
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```regex
|
||||
[A-Za-z_][A-Za-z0-9_]*
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
_value // utilisateur autorisé
|
||||
__value // réservé interne
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
( ) grouping, calls, control headers, parameters
|
||||
[ ] indexing et constructions définies par leur grammaire
|
||||
{ } blocks et constructions à accolades
|
||||
; fin d'un statement ou d'une déclaration sans corps
|
||||
, séparation de deux éléments ; séparateur de listes init/update dans for
|
||||
. qualification de namespace
|
||||
:: qualification de membre/symbole
|
||||
=> séparateur grammatical pattern -> bloc dans match
|
||||
= assignment
|
||||
+ - * / % arithmetic
|
||||
& | ^ ~ bitwise/logical selon type ; | sépare aussi les alternatives d'un pattern
|
||||
! logical negation / !=
|
||||
< > comparaison, shifts et syntaxe générique selon contexte
|
||||
.. famille de délimiteurs de Range, avec >.., ..< et >..<
|
||||
' char delimiter
|
||||
" String delimiter
|
||||
_ identifiant / séparateur numérique / wildcard de pattern selon contexte
|
||||
```
|
||||
|
||||
### Exemple 9
|
||||
|
||||
```text
|
||||
# raw-string delimiter et shebang autorisé seulement selon sa règle dédiée
|
||||
@ réservé hors commentaires/Saseldoc
|
||||
$ réservé, notamment pendant la finalisation de l'interpolation
|
||||
? réservé sans sémantique V1 encore attribuée
|
||||
` réservé/interdit à l'utilisateur
|
||||
\ uniquement selon les règles d'escape des littéraux
|
||||
```
|
||||
|
||||
### Exemple 10
|
||||
|
||||
```text
|
||||
Map<String,List<int32>>
|
||||
```
|
||||
|
||||
### Exemple 11
|
||||
|
||||
```text
|
||||
{
|
||||
int32 myvar = 42;
|
||||
}
|
||||
```
|
||||
|
||||
## 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.
|
||||
41
examples/003-architecture-de-compilation-examples.md
Normal file
41
examples/003-architecture-de-compilation-examples.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# Exemples / DO-DON'T — Chapitre 3 — Architecture de compilation
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
Source
|
||||
-> lexer
|
||||
-> parser
|
||||
-> AST
|
||||
-> modèle sémantique
|
||||
-> HIR
|
||||
-> Sase IR
|
||||
-> backend / interpréteur
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
HIR
|
||||
Sase IR
|
||||
bytecode dérivé de Sase IR
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
machine code
|
||||
object file
|
||||
native executable
|
||||
static library
|
||||
dynamic/shared library
|
||||
textual assembly
|
||||
```
|
||||
|
||||
## 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.
|
||||
77
examples/004-couches-de-lecosysteme-v1-examples.md
Normal file
77
examples/004-couches-de-lecosysteme-v1-examples.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# Exemples / DO-DON'T — Chapitre 4 — Couches de l'écosystème V1
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
grammaire
|
||||
types primitifs
|
||||
types nominaux
|
||||
fonctions/méthodes
|
||||
classes
|
||||
structs
|
||||
interfaces
|
||||
enums
|
||||
unions
|
||||
tuples
|
||||
generics
|
||||
contrôle de flux
|
||||
erreurs/exceptions
|
||||
opérateurs
|
||||
unsafe
|
||||
scope
|
||||
visibilité
|
||||
imports
|
||||
compilation conditionnelle structurelle
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
Object
|
||||
String
|
||||
Result<T>
|
||||
Result<T,E>
|
||||
Error
|
||||
ResultError
|
||||
Exception
|
||||
Option<T>
|
||||
Nullable<T>
|
||||
Range<T>
|
||||
RangeIterable<T>
|
||||
RangeStep<T,Step>
|
||||
RangeReverse<T>
|
||||
RangeReverseStep<T,Step>
|
||||
RangeProgression<T,Step>
|
||||
Ordering
|
||||
Op...
|
||||
Iterable<T>
|
||||
Iterator<T>
|
||||
Array<T>
|
||||
StaticArray<T,N>
|
||||
TypeInfo
|
||||
ExitCode
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
collections
|
||||
encodages explicites
|
||||
regex
|
||||
filesystem
|
||||
networking
|
||||
process
|
||||
concurrence
|
||||
math
|
||||
algèbre
|
||||
FFI helpers
|
||||
plateforme
|
||||
```
|
||||
|
||||
## 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.
|
||||
149
examples/005-types-primitifs-examples.md
Normal file
149
examples/005-types-primitifs-examples.md
Normal file
@@ -0,0 +1,149 @@
|
||||
# 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.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
int8 int16 int32 int64 int128 int256
|
||||
uint8 uint16 uint32 uint64 uint128 uint256
|
||||
float16 float32 float64 float128
|
||||
bool
|
||||
char
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
-> Void
|
||||
Result<Void,E>
|
||||
Result<Void>
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
func save() -> Result<Void> {
|
||||
...
|
||||
return Result::Ok(Void);
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
Void value;
|
||||
field Void
|
||||
Option<Void>
|
||||
Nullable<Void>
|
||||
Array<Void>
|
||||
Range<Void>
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
value::toString()
|
||||
float16::fromInt32(value)
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
overflow statiquement prouvable -> erreur de compilation
|
||||
overflow dynamique -> faute runtime déterministe
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
wrapping
|
||||
saturating
|
||||
checked
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
statique -> erreur compilation
|
||||
dynamique -> faute runtime
|
||||
```
|
||||
|
||||
### Exemple 9
|
||||
|
||||
```text
|
||||
a == (a / b) * b + (a % b)
|
||||
```
|
||||
|
||||
### Exemple 10
|
||||
|
||||
```text
|
||||
42 decimal
|
||||
0b101010 binary
|
||||
0o52 octal
|
||||
0x2a hexadecimal
|
||||
```
|
||||
|
||||
### Exemple 11
|
||||
|
||||
```text
|
||||
1_000_000
|
||||
0b1010_1100
|
||||
0xffff_ffff
|
||||
1.234_567
|
||||
1.0e1_000
|
||||
```
|
||||
|
||||
### Exemple 12
|
||||
|
||||
```text
|
||||
1.0
|
||||
0.5
|
||||
42.25
|
||||
1e6
|
||||
1.5e-3
|
||||
```
|
||||
|
||||
### Exemple 13
|
||||
|
||||
```text
|
||||
i8 i16 i32 i64 i128 i256
|
||||
u8 u16 u32 u64 u128 u256
|
||||
f16 f32 f64 f128
|
||||
```
|
||||
|
||||
### Exemple 14
|
||||
|
||||
```text
|
||||
42i32
|
||||
42u64
|
||||
1.5f16
|
||||
```
|
||||
|
||||
### Exemple 15
|
||||
|
||||
```text
|
||||
0x1.0p0
|
||||
0x1.8p1
|
||||
0x1.ffp10
|
||||
0x1.0p-20
|
||||
```
|
||||
|
||||
### Exemple 16
|
||||
|
||||
```text
|
||||
1f16
|
||||
1::toFloat16()
|
||||
```
|
||||
|
||||
### Exemple 17
|
||||
|
||||
```text
|
||||
bitcast<float16>(value)
|
||||
```
|
||||
|
||||
## 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.
|
||||
@@ -0,0 +1,26 @@
|
||||
# Exemples / DO-DON'T — Chapitre 6 — Types, variables, constantes et scopes
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
{
|
||||
int32 value = 1;
|
||||
}
|
||||
{
|
||||
int32 value = 2;
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
foo(a(), b(), c())
|
||||
```
|
||||
|
||||
## 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.
|
||||
@@ -0,0 +1,19 @@
|
||||
# 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.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
class
|
||||
struct
|
||||
interface
|
||||
enum
|
||||
union
|
||||
```
|
||||
|
||||
## 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.
|
||||
54
examples/008-classes-et-object-examples.md
Normal file
54
examples/008-classes-et-object-examples.md
Normal file
@@ -0,0 +1,54 @@
|
||||
# Exemples / DO-DON'T — Chapitre 8 — Classes et `Object`
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
open
|
||||
ou
|
||||
final
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
abstract
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
this instance courante
|
||||
super instance de la classe parente immédiate
|
||||
cls classe courante dans une clsmethod
|
||||
parent classe parente immédiate dans une clsmethod
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
super::super
|
||||
parent::parent
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
this::field
|
||||
token::kind()
|
||||
Type::member
|
||||
super::method()
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
Object::sameInstance(Object other) -> bool
|
||||
```
|
||||
|
||||
## 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.
|
||||
18
examples/009-structs-examples.md
Normal file
18
examples/009-structs-examples.md
Normal file
@@ -0,0 +1,18 @@
|
||||
# Exemples / DO-DON'T — Chapitre 9 — Structs
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
private
|
||||
module
|
||||
package
|
||||
public
|
||||
```
|
||||
|
||||
## 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.
|
||||
11
examples/010-enums-algebriques-examples.md
Normal file
11
examples/010-enums-algebriques-examples.md
Normal file
@@ -0,0 +1,11 @@
|
||||
# Exemples / DO-DON'T — Chapitre 10 — Enums algébriques
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
Aucun bloc d'exemple explicite n'est encore présent dans ce chapitre.
|
||||
|
||||
## 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.
|
||||
28
examples/011-tuples-examples.md
Normal file
28
examples/011-tuples-examples.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Exemples / DO-DON'T — Chapitre 11 — Tuples
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
(int32, String)
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
(int32 id, String name) = value;
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
tuple[0]
|
||||
tuple[1]
|
||||
```
|
||||
|
||||
## 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.
|
||||
40
examples/012-unions-examples.md
Normal file
40
examples/012-unions-examples.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# Exemples / DO-DON'T — Chapitre 12 — Unions
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
int*
|
||||
uint*
|
||||
float*
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
public unsafe union RawValue
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
bool
|
||||
char
|
||||
raw pointers
|
||||
fixed compatible arrays
|
||||
FFI-safe trivial structs
|
||||
compatible unsafe unions
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
public unsafe extern "C" union NativeValue
|
||||
```
|
||||
|
||||
## 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.
|
||||
45
examples/013-interfaces-examples.md
Normal file
45
examples/013-interfaces-examples.md
Normal file
@@ -0,0 +1,45 @@
|
||||
# Exemples / DO-DON'T — Chapitre 13 — Interfaces
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
nom
|
||||
+ ordre des paramètres
|
||||
+ type de chaque paramètre
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
type de retour
|
||||
visibilité
|
||||
fallibilité / Result
|
||||
throws
|
||||
contraintes génériques pertinentes
|
||||
modificateurs contractuels pertinents
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
module
|
||||
package
|
||||
public
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
public interface Ring<T> {
|
||||
public const T Zero;
|
||||
public const T One;
|
||||
}
|
||||
```
|
||||
|
||||
## 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.
|
||||
32
examples/014-generics-examples.md
Normal file
32
examples/014-generics-examples.md
Normal file
@@ -0,0 +1,32 @@
|
||||
# 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.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
Array<T>
|
||||
Result<T,E>
|
||||
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
|
||||
```
|
||||
|
||||
## 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.
|
||||
53
examples/015-fonctions-methodes-et-clsmethod-examples.md
Normal file
53
examples/015-fonctions-methodes-et-clsmethod-examples.md
Normal file
@@ -0,0 +1,53 @@
|
||||
# Exemples / DO-DON'T — Chapitre 15 — Fonctions, méthodes et `clsmethod`
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
func fonction libre
|
||||
method méthode d'instance
|
||||
clsmethod méthode de classe
|
||||
operator implémentation d'un contrat opérateur
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
opération infaillible
|
||||
-> retourne directement T
|
||||
|
||||
opération pouvant produire une erreur récupérable
|
||||
-> retourne Result<T>
|
||||
ou Result<T,E>
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
method length() -> uint64
|
||||
method containsKey(K key) -> bool
|
||||
Object::sameInstance(Object other) -> bool
|
||||
func min(int32 a, int32 b) -> int32
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
func readFile(String path) -> Result<String, IoError>
|
||||
method parse(String input) -> Result<Value, ParseError>
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
return value;
|
||||
return Result::Ok(value);
|
||||
return Result::Ok(Void);
|
||||
```
|
||||
|
||||
## 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.
|
||||
64
examples/016-dispatch-override-et-modificateurs-examples.md
Normal file
64
examples/016-dispatch-override-et-modificateurs-examples.md
Normal file
@@ -0,0 +1,64 @@
|
||||
# Exemples / DO-DON'T — Chapitre 16 — Dispatch, override et modificateurs
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
visibility
|
||||
-> safety
|
||||
-> linkage / ABI
|
||||
-> type / dispatch modifiers
|
||||
-> override
|
||||
-> declaration kind
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
Name<...>
|
||||
-> extends ...
|
||||
-> implements ...
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
public final class User
|
||||
public open class Service
|
||||
public abstract class Base
|
||||
public unsafe extern "C" union NativeValue
|
||||
protected open method calculate(...)
|
||||
protected override method calculate(...)
|
||||
protected final override method calculate(...)
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
open method
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
abstract method
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
override method
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
final override method
|
||||
```
|
||||
|
||||
## 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.
|
||||
51
examples/017-construction-et-destruction-examples.md
Normal file
51
examples/017-construction-et-destruction-examples.md
Normal file
@@ -0,0 +1,51 @@
|
||||
# Exemples / DO-DON'T — Chapitre 17 — Construction et destruction
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
private
|
||||
protected
|
||||
module
|
||||
package
|
||||
public
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
private
|
||||
module
|
||||
package
|
||||
public
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
C -> B -> A
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
this::field
|
||||
this::method()
|
||||
super::method()
|
||||
escape/capture/pass de this
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
destruct() {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
## 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.
|
||||
259
examples/018-result-erreurs-et-exceptions-examples.md
Normal file
259
examples/018-result-erreurs-et-exceptions-examples.md
Normal file
@@ -0,0 +1,259 @@
|
||||
# Exemples / DO-DON'T — Chapitre 18 — `Result`, erreurs et exceptions
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
Object
|
||||
└── Error
|
||||
├── ResultError
|
||||
└── Exception
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
public final class ParseError extends ResultError {
|
||||
}
|
||||
|
||||
public final class FileNotFoundException extends Exception {
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
message: String
|
||||
cause: Option<Error>
|
||||
i18nMessage: Option<I18nMessage>
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
message
|
||||
message humain canonique / fallback
|
||||
|
||||
cause
|
||||
erreur causale purement informative
|
||||
peut contenir un ResultError ou une Exception
|
||||
n'est pas automatiquement propagée
|
||||
|
||||
i18nMessage
|
||||
clé et paramètres de localisation
|
||||
ne contient pas un tableau de traductions
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
code: ResultErrorCode
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
code -> stable, machine-readable, non localisé
|
||||
message -> humain, canonique / fallback
|
||||
i18nMessage -> localisation externe
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
throw exception;
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
Result::Ok(T)
|
||||
Result::Err(E)
|
||||
```
|
||||
|
||||
### Exemple 9
|
||||
|
||||
```text
|
||||
E doit être ResultError ou un descendant de ResultError
|
||||
```
|
||||
|
||||
### Exemple 10
|
||||
|
||||
```text
|
||||
Result<Data,ResultError>
|
||||
Result<Data,ParseError>
|
||||
Result<Void,ResultError>
|
||||
```
|
||||
|
||||
### Exemple 11
|
||||
|
||||
```text
|
||||
Result<Data,Error>
|
||||
Result<Data,Exception>
|
||||
Result<Data,FileNotFoundException>
|
||||
```
|
||||
|
||||
### Exemple 12
|
||||
|
||||
```text
|
||||
Result<T>
|
||||
```
|
||||
|
||||
### Exemple 13
|
||||
|
||||
```text
|
||||
Result<T,ResultError>
|
||||
```
|
||||
|
||||
### Exemple 14
|
||||
|
||||
```text
|
||||
return Result::Ok(value);
|
||||
return Result::Err(error);
|
||||
```
|
||||
|
||||
### Exemple 15
|
||||
|
||||
```text
|
||||
result::expectOk(...)
|
||||
result::expectErr(...)
|
||||
```
|
||||
|
||||
### Exemple 16
|
||||
|
||||
```text
|
||||
ResultError -> Exception
|
||||
Exception -> ResultError
|
||||
```
|
||||
|
||||
### Exemple 17
|
||||
|
||||
```text
|
||||
throw ParseException(..., Option::Some(parseError));
|
||||
```
|
||||
|
||||
### Exemple 18
|
||||
|
||||
```text
|
||||
catch (FileNotFoundException error) {
|
||||
return Result::Err(FileResultError(..., Option::Some(error)));
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 19
|
||||
|
||||
```text
|
||||
T + throws -> interdit
|
||||
Result<T,E> -> valide sans throws
|
||||
Result<T,E> + throws -> valide
|
||||
```
|
||||
|
||||
### Exemple 20
|
||||
|
||||
```text
|
||||
throws IOException
|
||||
```
|
||||
|
||||
### Exemple 21
|
||||
|
||||
```text
|
||||
supprimer entièrement des exceptions déclarées
|
||||
restreindre une famille à une ou plusieurs sous-familles compatibles
|
||||
gérer localement tout ou partie des exceptions du contrat parent
|
||||
```
|
||||
|
||||
### Exemple 22
|
||||
|
||||
```text
|
||||
throw FileNotFoundException(...); // valide
|
||||
throw ParseError(...); // erreur
|
||||
throw Error(...); // erreur
|
||||
```
|
||||
|
||||
### Exemple 23
|
||||
|
||||
```text
|
||||
catch (IOException error) {
|
||||
throw error;
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 24
|
||||
|
||||
```text
|
||||
try { ... }
|
||||
try { ... } finally { ... }
|
||||
finally { ... }
|
||||
```
|
||||
|
||||
### Exemple 25
|
||||
|
||||
```text
|
||||
try {
|
||||
...
|
||||
} catch (SpecificException error) {
|
||||
...
|
||||
} catch (ParentException error) {
|
||||
...
|
||||
} finally {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 26
|
||||
|
||||
```text
|
||||
catch (FileNotFoundException error) {
|
||||
...
|
||||
} catch (IOException error) {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 27
|
||||
|
||||
```text
|
||||
catch (IOException error) {
|
||||
...
|
||||
} catch (FileNotFoundException error) {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 28
|
||||
|
||||
```text
|
||||
fin normale du try
|
||||
fin normale d'un catch
|
||||
return traversant la construction
|
||||
throw propagé
|
||||
break / continue traversant la construction
|
||||
Exception non capturée par les catch
|
||||
```
|
||||
|
||||
### Exemple 29
|
||||
|
||||
```text
|
||||
return
|
||||
throw
|
||||
break
|
||||
continue
|
||||
emit
|
||||
```
|
||||
|
||||
### Exemple 30
|
||||
|
||||
```text
|
||||
index hors limites
|
||||
division entière par zéro
|
||||
overflow checked
|
||||
représentation mémoire invalide
|
||||
borne dynamique invalide lors d'une construction directe lorsque la règle du type le définit
|
||||
```
|
||||
|
||||
## 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.
|
||||
287
examples/019-controle-de-flux-examples.md
Normal file
287
examples/019-controle-de-flux-examples.md
Normal file
@@ -0,0 +1,287 @@
|
||||
# Exemples / DO-DON'T — Chapitre 19 — Contrôle de flux
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
if (condition) {
|
||||
action();
|
||||
} elseif (otherCondition) {
|
||||
otherAction();
|
||||
} else {
|
||||
fallback();
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
int32 result = if (x > 10) {
|
||||
emit 1;
|
||||
} elseif (x > 5) {
|
||||
emit 2;
|
||||
} else {
|
||||
emit 3;
|
||||
};
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
Option<uint32> result = if (condition) {
|
||||
emit Option::Some(42);
|
||||
} else {
|
||||
emit Option::None;
|
||||
};
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
match (value) {
|
||||
pattern1 => {
|
||||
statements;
|
||||
}
|
||||
|
||||
pattern2 => {
|
||||
statements;
|
||||
}
|
||||
|
||||
_ => {
|
||||
statements;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
literal pattern
|
||||
enum variant pattern
|
||||
tuple pattern
|
||||
struct pattern
|
||||
typed binding pattern
|
||||
wildcard _
|
||||
alternative pattern avec |
|
||||
nested pattern
|
||||
Range pattern si et seulement si le Range est valide selon les règles de Range
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
1 | 2 | 3 => {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
A(uint32 value) | B(uint32 value) => {
|
||||
use(value);
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
Color::Red => {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 9
|
||||
|
||||
```text
|
||||
Result::Ok(uint32 value) => {
|
||||
use(value);
|
||||
}
|
||||
|
||||
Result::Err(Error error) => {
|
||||
handle(error);
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 10
|
||||
|
||||
```text
|
||||
Result::Ok(_) => {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 11
|
||||
|
||||
```text
|
||||
(0, 0) => {
|
||||
origin();
|
||||
}
|
||||
|
||||
(int32 x, 0) => {
|
||||
horizontal(x);
|
||||
}
|
||||
|
||||
(int32 x, int32 y) => {
|
||||
other(x, y);
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 12
|
||||
|
||||
```text
|
||||
Point {
|
||||
x: 0,
|
||||
y: int32 vertical
|
||||
} => {
|
||||
use(vertical);
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 13
|
||||
|
||||
```text
|
||||
Point {
|
||||
x: 0,
|
||||
y: _
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 14
|
||||
|
||||
```text
|
||||
SomeEnum::PointValue(
|
||||
Point {
|
||||
x: 0,
|
||||
y: int32 y
|
||||
}
|
||||
) => {
|
||||
use(y);
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 15
|
||||
|
||||
```text
|
||||
int32 result = match (value) {
|
||||
0 => {
|
||||
emit 10;
|
||||
}
|
||||
|
||||
_ => {
|
||||
emit 20;
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
### Exemple 16
|
||||
|
||||
```text
|
||||
int32 result;
|
||||
|
||||
result = if (condition) {
|
||||
emit 1;
|
||||
} else {
|
||||
emit 2;
|
||||
};
|
||||
```
|
||||
|
||||
### Exemple 17
|
||||
|
||||
```text
|
||||
return V1 requis
|
||||
break V1 requis
|
||||
continue V1 requis
|
||||
yield réservé pour generators/coroutines si non finalisé en V1
|
||||
```
|
||||
|
||||
### Exemple 18
|
||||
|
||||
```text
|
||||
while (condition) {
|
||||
...
|
||||
}
|
||||
|
||||
dowhile (condition) {
|
||||
...
|
||||
}
|
||||
|
||||
for (initialization; condition; update) {
|
||||
...
|
||||
}
|
||||
|
||||
foreach (Type item in iterable) {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 19
|
||||
|
||||
```text
|
||||
dowhile (condition) {
|
||||
statements;
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 20
|
||||
|
||||
```text
|
||||
for (;;) {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 21
|
||||
|
||||
```text
|
||||
while (true) {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 22
|
||||
|
||||
```text
|
||||
for (i = 0, j = 5; i < x || j < y; i += 1, j += 1) {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 23
|
||||
|
||||
```text
|
||||
foreach (Type item in iterable) {
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 24
|
||||
|
||||
```text
|
||||
until (...) -> utiliser while (!...)
|
||||
repeat ... until -> utiliser dowhile (!...)
|
||||
unless (...) -> utiliser if (!...)
|
||||
loop { ... } -> utiliser while (true) { ... }
|
||||
```
|
||||
|
||||
### Exemple 25
|
||||
|
||||
```text
|
||||
;
|
||||
;;
|
||||
foo();;
|
||||
```
|
||||
|
||||
### Exemple 26
|
||||
|
||||
```text
|
||||
foo(first, second, third); // valide
|
||||
foo(first, second, third,); // invalide
|
||||
```
|
||||
|
||||
## 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.
|
||||
234
examples/020-operateurs-examples.md
Normal file
234
examples/020-operateurs-examples.md
Normal file
@@ -0,0 +1,234 @@
|
||||
# Exemples / DO-DON'T — Chapitre 20 — Opérateurs
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
OpPositive<T>
|
||||
OpNegate<T>
|
||||
|
||||
OpAdd<Lhs,Rhs,Out>
|
||||
OpSubtract<Lhs,Rhs,Out>
|
||||
OpMultiply<Lhs,Rhs,Out>
|
||||
OpDivide<Lhs,Rhs,Out>
|
||||
OpRemainder<Lhs,Rhs,Out>
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
Vector3 * float64 -> Vector3
|
||||
Matrix * Vector3 -> Vector3
|
||||
Timestamp + Duration -> Timestamp
|
||||
Timestamp - Timestamp -> Duration
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
OpBitNot<T>
|
||||
OpBitAnd<Lhs,Rhs,Out>
|
||||
OpBitOr<Lhs,Rhs,Out>
|
||||
OpBitXor<Lhs,Rhs,Out>
|
||||
OpShiftLeft<T,Out>
|
||||
OpShiftRight<T,Out>
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
statique -> erreur compilation
|
||||
dynamique -> faute runtime
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
unsigned -> logical zero-fill
|
||||
signed -> arithmetic sign extension
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
!a
|
||||
a && b
|
||||
a || b
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
a & b
|
||||
a | b
|
||||
a ^ b
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
OpPartialEqual<Lhs,Rhs>
|
||||
OpEqual<T>
|
||||
```
|
||||
|
||||
### Exemple 9
|
||||
|
||||
```text
|
||||
OpPartialEqual<T,T>
|
||||
```
|
||||
|
||||
### Exemple 10
|
||||
|
||||
```text
|
||||
réflexive
|
||||
symétrique
|
||||
transitive
|
||||
```
|
||||
|
||||
### Exemple 11
|
||||
|
||||
```text
|
||||
public enum Ordering {
|
||||
Less,
|
||||
Equal,
|
||||
Greater,
|
||||
Unordered
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 12
|
||||
|
||||
```text
|
||||
OpPartialCompare<Lhs,Rhs>
|
||||
OpCompare<T>
|
||||
```
|
||||
|
||||
### Exemple 13
|
||||
|
||||
```text
|
||||
OpIndex<Index,Read>
|
||||
OpIndexMut<Index,Write>
|
||||
```
|
||||
|
||||
### Exemple 14
|
||||
|
||||
```text
|
||||
container[index]
|
||||
container[index] = value
|
||||
```
|
||||
|
||||
### Exemple 15
|
||||
|
||||
```text
|
||||
Map<K,V>
|
||||
OpIndex<K,Option<V>>
|
||||
OpIndexMut<K,V>
|
||||
```
|
||||
|
||||
### Exemple 16
|
||||
|
||||
```text
|
||||
if (a = b) { ... }
|
||||
x = (a = b);
|
||||
a = b = c;
|
||||
```
|
||||
|
||||
### Exemple 17
|
||||
|
||||
```text
|
||||
+= -= *= /= %=
|
||||
&= |= ^=
|
||||
<<= >>=
|
||||
```
|
||||
|
||||
### Exemple 18
|
||||
|
||||
```text
|
||||
lecture
|
||||
+ opérateur fondamental surchargeable
|
||||
+ réaffectation
|
||||
```
|
||||
|
||||
### Exemple 19
|
||||
|
||||
```text
|
||||
value is Type
|
||||
```
|
||||
|
||||
### Exemple 20
|
||||
|
||||
```text
|
||||
value is Animal // true
|
||||
value is Dog // true
|
||||
value is Labrador // true
|
||||
```
|
||||
|
||||
### Exemple 21
|
||||
|
||||
```text
|
||||
!(value is Type)
|
||||
```
|
||||
|
||||
### Exemple 22
|
||||
|
||||
```text
|
||||
value instanceof ConcreteClass
|
||||
```
|
||||
|
||||
### Exemple 23
|
||||
|
||||
```text
|
||||
value instanceof Animal // false
|
||||
value instanceof Dog // false
|
||||
value instanceof Labrador // true
|
||||
```
|
||||
|
||||
### Exemple 24
|
||||
|
||||
```text
|
||||
!(value instanceof ConcreteClass)
|
||||
```
|
||||
|
||||
### Exemple 25
|
||||
|
||||
```text
|
||||
bitcast<T>(value)
|
||||
```
|
||||
|
||||
### Exemple 26
|
||||
|
||||
```text
|
||||
1. qualification / membre . ::
|
||||
2. appel / indexation () []
|
||||
3. préfixes +x -x !x ~x
|
||||
4. multiplicatifs * / %
|
||||
5. additifs + -
|
||||
6. shifts << >>
|
||||
7. relation / type < <= > >= is instanceof
|
||||
8. égalité == !=
|
||||
9. bitwise AND &
|
||||
10. bitwise XOR ^
|
||||
11. bitwise OR |
|
||||
12. logique short-circuit AND &&
|
||||
13. logique short-circuit OR ||
|
||||
```
|
||||
|
||||
### Exemple 27
|
||||
|
||||
```text
|
||||
a < b < c -> interdit
|
||||
a == b == c -> interdit
|
||||
```
|
||||
|
||||
### Exemple 28
|
||||
|
||||
```text
|
||||
a < b && b < c
|
||||
```
|
||||
|
||||
## 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.
|
||||
110
examples/021-strings-unicode-et-encodages-examples.md
Normal file
110
examples/021-strings-unicode-et-encodages-examples.md
Normal file
@@ -0,0 +1,110 @@
|
||||
# Exemples / DO-DON'T — Chapitre 21 — Strings, Unicode et encodages
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
Utf8String
|
||||
Utf16String
|
||||
Utf32String
|
||||
AsciiString éventuel
|
||||
Bytes
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
byte
|
||||
code unit
|
||||
Unicode scalar
|
||||
code point
|
||||
grapheme cluster
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
'A'
|
||||
'é'
|
||||
'中'
|
||||
'😀'
|
||||
'\n'
|
||||
'\u{1F600}'
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
"..." String normale, escapes actifs
|
||||
"""...""" String normale multiligne
|
||||
r"..." String brute
|
||||
r"""...""" String brute multiligne
|
||||
i"..." String interpolée
|
||||
i"""...""" String interpolée multiligne
|
||||
ir"..." interpolation + contenu brut, réservé
|
||||
b"..." bytes, réservé
|
||||
br"..." bytes bruts, réservé
|
||||
u8"..." texte encodé UTF-8 explicitement, réservé
|
||||
u16"..." texte encodé UTF-16 explicitement, réservé
|
||||
u32"..." texte encodé UTF-32 explicitement, réservé
|
||||
c"..." chaîne compatible C, réservé
|
||||
cr"..." chaîne C brute, réservé
|
||||
t"..." template structuré, réservé
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
i"Hello {name}"
|
||||
i"Hello ${name}"
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
"""
|
||||
first
|
||||
second
|
||||
"""
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
r"simple"
|
||||
r#"He said "hello"."#
|
||||
r##"contains "# inside"##
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
r"""..."""
|
||||
r#"""..."""#
|
||||
```
|
||||
|
||||
### Exemple 9
|
||||
|
||||
```text
|
||||
\\ backslash
|
||||
\" double quote
|
||||
\' single quote
|
||||
\n newline
|
||||
\r carriage return
|
||||
\t horizontal tab
|
||||
\0 NUL
|
||||
\u{...} Unicode scalar
|
||||
```
|
||||
|
||||
### Exemple 10
|
||||
|
||||
```text
|
||||
b"\x00\x7f\x80\xff"
|
||||
```
|
||||
|
||||
## 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.
|
||||
124
examples/022-collections-et-iteration-examples.md
Normal file
124
examples/022-collections-et-iteration-examples.md
Normal file
@@ -0,0 +1,124 @@
|
||||
# Exemples / DO-DON'T — Chapitre 22 — Collections et itération
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
Vector<T>
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
a..b [a, b] bornes basse et haute incluses
|
||||
a>..b (a, b] borne basse exclue, borne haute incluse
|
||||
a..<b [a, b) borne basse incluse, borne haute exclue
|
||||
a>..<b (a, b) bornes basse et haute exclues
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
Range<uint64> ids = 1..100;
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
NaN interdit comme borne
|
||||
+Infinity interdit comme borne
|
||||
-Infinity interdit comme borne
|
||||
valeur finie autorisée
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
a..a contient exactement a
|
||||
a>..a vide
|
||||
a..<a vide
|
||||
a>..<a vide
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
range::lower()
|
||||
range::upper()
|
||||
range::includesLower()
|
||||
range::includesUpper()
|
||||
range::isEmpty()
|
||||
range::contains(value)
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
Range<T> intervalle ordonné
|
||||
RangeIterable<T> parcours canonique vers l'avant
|
||||
RangeStep<T,Step> parcours avant avec pas explicite
|
||||
RangeReverse<T> parcours canonique vers l'arrière
|
||||
RangeReverseStep<T,Step> parcours arrière avec pas explicite
|
||||
RangeProgression<T,Step> valeur de progression produite
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
(range)::step(step)
|
||||
```
|
||||
|
||||
### Exemple 9
|
||||
|
||||
```text
|
||||
RangeStep<int32,int32>
|
||||
RangeStep<int32,uint32>
|
||||
RangeStep<char,uint32>
|
||||
RangeStep<Date,Duration>
|
||||
```
|
||||
|
||||
### Exemple 10
|
||||
|
||||
```text
|
||||
(range)::reverse()
|
||||
(range)::reverse()::step(step)
|
||||
```
|
||||
|
||||
### Exemple 11
|
||||
|
||||
```text
|
||||
range
|
||||
[::reverse()]
|
||||
[::step(step)]
|
||||
```
|
||||
|
||||
### Exemple 12
|
||||
|
||||
```text
|
||||
(250u8..255u8)::step(2u8)
|
||||
```
|
||||
|
||||
### Exemple 13
|
||||
|
||||
```text
|
||||
250 252 254
|
||||
```
|
||||
|
||||
### Exemple 14
|
||||
|
||||
```text
|
||||
(1..10)::step(4)
|
||||
```
|
||||
|
||||
### Exemple 15
|
||||
|
||||
```text
|
||||
1 5 9
|
||||
```
|
||||
|
||||
## 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.
|
||||
73
examples/023-optiont-et-nullablet-examples.md
Normal file
73
examples/023-optiont-et-nullablet-examples.md
Normal file
@@ -0,0 +1,73 @@
|
||||
# Exemples / DO-DON'T — Chapitre 23 — `Option<T>` et `Nullable<T>`
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
Option<int32>
|
||||
Option<String>
|
||||
Option<MyStruct>
|
||||
Option<MyClass>
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
Option<MyClass>::None
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
Nullable<MyClass>::Null
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
T?
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
Option<Nullable<MyClass>> autorisé
|
||||
Nullable<Option<MyClass>> interdit
|
||||
Nullable<Nullable<MyClass>> interdit
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
Option::None
|
||||
Option::Some(Nullable<MyClass>::Null)
|
||||
Option::Some(instance non nulle)
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
Option<T> absence sémantique
|
||||
Nullable<T> nullabilité représentationnelle
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
match (value) {
|
||||
Option::Some(uint32 number) => {
|
||||
...
|
||||
}
|
||||
|
||||
Option::None => {
|
||||
...
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 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.
|
||||
84
examples/024-casts-et-conversions-examples.md
Normal file
84
examples/024-casts-et-conversions-examples.md
Normal file
@@ -0,0 +1,84 @@
|
||||
# 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.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
conversion de valeur
|
||||
cast de hiérarchie nominale
|
||||
bitcast de représentation binaire
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
int8 small = ...;
|
||||
int32 large = small; // ERROR
|
||||
int32 explicitLarge = small::toInt32(); // OK
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
Dog dog = ...;
|
||||
Animal animal = dog;
|
||||
Serializable serializable = dog;
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
Animal animal = ...;
|
||||
|
||||
if (animal is Dog) {
|
||||
// animal est raffiné en Dog ici.
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
toTarget()
|
||||
conversion exacte et totale
|
||||
|
||||
tryToTarget()
|
||||
conversion exacte pour la valeur courante, récupérable si impossible
|
||||
|
||||
roundToTarget()
|
||||
perte de précision explicitement acceptée, conversion totale
|
||||
|
||||
tryRoundToTarget()
|
||||
perte de précision explicitement acceptée, mais conversion pouvant échouer
|
||||
|
||||
saturateToTarget()
|
||||
saturation explicite lorsqu'aucun arrondi supplémentaire n'est nécessaire
|
||||
|
||||
saturatingRoundToTarget()
|
||||
arrondi + saturation explicitement annoncés
|
||||
|
||||
wrapToTarget()
|
||||
wrapping entier explicite
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
tryExactToInt32()
|
||||
tryFloorToInt32()
|
||||
tryCeilToInt32()
|
||||
tryRoundToInt32()
|
||||
tryTruncateToInt32()
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```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.
|
||||
@@ -0,0 +1,11 @@
|
||||
# Exemples / DO-DON'T — Chapitre 25 — Lambdas, closures, callables et generators
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
Aucun bloc d'exemple explicite n'est encore présent dans ce chapitre.
|
||||
|
||||
## 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.
|
||||
23
examples/026-async-et-concurrence-examples.md
Normal file
23
examples/026-async-et-concurrence-examples.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Exemples / DO-DON'T — Chapitre 26 — Async et concurrence
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
async/await ou autre modèle
|
||||
Future/Promise Core ou SDK
|
||||
threads natifs
|
||||
structured concurrency éventuelle
|
||||
cancellation
|
||||
synchronisation
|
||||
interaction avec Result/throws
|
||||
interaction avec destruction déterministe
|
||||
runtime minimal
|
||||
```
|
||||
|
||||
## 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.
|
||||
44
examples/027-memoire-references-et-unsafe-examples.md
Normal file
44
examples/027-memoire-references-et-unsafe-examples.md
Normal file
@@ -0,0 +1,44 @@
|
||||
# Exemples / DO-DON'T — Chapitre 27 — Mémoire, références et `unsafe`
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
value vs reference semantics
|
||||
object allocation
|
||||
moves/copies/clones
|
||||
borrow/reference semantics si nécessaire
|
||||
escape analysis
|
||||
lifetimes internes
|
||||
partial construction
|
||||
partial destruction
|
||||
cycles éventuels
|
||||
resource ownership
|
||||
thread-safety implications
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
unsafe { ... }
|
||||
unsafe func
|
||||
unsafe method
|
||||
unsafe clsmethod
|
||||
unsafe construct
|
||||
unsafe union
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
unsafe variable
|
||||
unsafe constant
|
||||
unsafe field
|
||||
```
|
||||
|
||||
## 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.
|
||||
67
examples/028-defer-et-nettoyage-examples.md
Normal file
67
examples/028-defer-et-nettoyage-examples.md
Normal file
@@ -0,0 +1,67 @@
|
||||
# Exemples / DO-DON'T — Chapitre 28 — `defer` et nettoyage
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
{
|
||||
acquireA();
|
||||
defer {
|
||||
releaseA();
|
||||
}
|
||||
|
||||
acquireB();
|
||||
defer {
|
||||
releaseB();
|
||||
}
|
||||
|
||||
work();
|
||||
}
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
releaseB();
|
||||
releaseA();
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
fin normale
|
||||
return
|
||||
throw
|
||||
break
|
||||
continue
|
||||
emit quittant le scope concerné
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
throw
|
||||
-> unwind des scopes quittés
|
||||
-> defer de ces scopes, LIFO
|
||||
-> catch correspondant éventuel
|
||||
-> defer du scope catch, LIFO
|
||||
-> finally éventuel
|
||||
-> continuation normale ou propagation
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
return
|
||||
throw
|
||||
break
|
||||
continue
|
||||
emit
|
||||
```
|
||||
|
||||
## 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.
|
||||
40
examples/029-ffi-et-abi-examples.md
Normal file
40
examples/029-ffi-et-abi-examples.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# Exemples / DO-DON'T — Chapitre 29 — FFI et ABI
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
extern "C"
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
extern "C" func
|
||||
unsafe extern "C" func
|
||||
extern "C" union
|
||||
unsafe extern "C" union
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
C struct layout
|
||||
C enum mapping
|
||||
raw pointers
|
||||
strings C
|
||||
callbacks
|
||||
function pointers
|
||||
calling conventions
|
||||
variadic C
|
||||
alignment/packing
|
||||
ownership across FFI
|
||||
error propagation across ABI
|
||||
```
|
||||
|
||||
## 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.
|
||||
25
examples/030-reflexion-metadonnees-et-tests-examples.md
Normal file
25
examples/030-reflexion-metadonnees-et-tests-examples.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Exemples / DO-DON'T — Chapitre 30 — Réflexion, métadonnées et tests
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
informations compiler-known
|
||||
métadonnées conservées dans le binaire
|
||||
réflexion runtime optionnelle
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
compiler
|
||||
test
|
||||
documentation/tooling
|
||||
```
|
||||
|
||||
## 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.
|
||||
39
examples/031-fichiers-source-v1-examples.md
Normal file
39
examples/031-fichiers-source-v1-examples.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Exemples / DO-DON'T — Chapitre 31 — Fichiers source V1
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
src/compiler/lexer/Token.saseltype
|
||||
namespace compiler.lexer;
|
||||
public final class Token { ... }
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
<source_root>/main.saselrun
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
module.saselmod
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
doc module-wide
|
||||
deprecated module-wide
|
||||
policies module-wide (ex: forbid unsafe)
|
||||
requirements de feature
|
||||
target/capability requirements lorsque pertinent
|
||||
```
|
||||
|
||||
## 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.
|
||||
33
examples/032-source-root-modules-et-namespaces-examples.md
Normal file
33
examples/032-source-root-modules-et-namespaces-examples.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# Exemples / DO-DON'T — Chapitre 32 — Source root, modules et namespaces
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
src
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
src/saselang/compiler/lexer/Token.saseltype
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
namespace saselang.compiler.lexer;
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```regex
|
||||
[a-z][a-z0-9_]*
|
||||
```
|
||||
|
||||
## 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.
|
||||
47
examples/033-imports-et-resolution-des-noms-examples.md
Normal file
47
examples/033-imports-et-resolution-des-noms-examples.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# 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.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
import type saselang.compiler.lexer.Token;
|
||||
import func saselang.compiler.lexer.tokenize;
|
||||
import const saselang.compiler.config.MaxDepth;
|
||||
import var saselang.runtime.state.CurrentMode;
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
class
|
||||
struct
|
||||
enum
|
||||
interface
|
||||
union
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
import type foo.Token;
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
import type foo.Token as FooToken;
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
saselang.compiler.lexer.Token
|
||||
saselang.compiler.lexer::tokenize(...)
|
||||
```
|
||||
|
||||
## 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.
|
||||
@@ -0,0 +1,112 @@
|
||||
# Exemples / DO-DON'T — Chapitre 34 — Packages, identité et collisions de namespaces
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
vendor/package
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
vendor/package@version
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
vendor/package@requirement
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
saselang/core@1.4.0
|
||||
saselang/compiler-core@^0.8
|
||||
acme/http-client@>=2.5,<3.0
|
||||
sdl/sdl@3.1.*
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```regex
|
||||
[a-z][a-z0-9]*(?:-[a-z0-9]+)*
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
namespace parser.ast;
|
||||
public class Node
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
instance de package résolue
|
||||
+ namespace
|
||||
+ symbole
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
acme/parser@2.4.1 :: parser.ast.Node
|
||||
other/parser@5.0.0 :: parser.ast.Node
|
||||
```
|
||||
|
||||
### Exemple 9
|
||||
|
||||
```text
|
||||
from "vendor/package@requirement"
|
||||
```
|
||||
|
||||
### Exemple 10
|
||||
|
||||
```text
|
||||
import func some.namespace::function from "sdl/sdl@2.1.*" as sdlfun1;
|
||||
import type some.namespace.Type from "acme/parser@^3.0" as ParserType;
|
||||
```
|
||||
|
||||
### Exemple 11
|
||||
|
||||
```text
|
||||
sdl/sdl@2.1.*
|
||||
sdl/sdl@^3.0
|
||||
```
|
||||
|
||||
### Exemple 12
|
||||
|
||||
```text
|
||||
import func ... from "sdl/sdl@2.1.*" as sdlfun1;
|
||||
import func ... from "sdl/sdl@^3.0" as sdlfun2;
|
||||
```
|
||||
|
||||
### Exemple 13
|
||||
|
||||
```text
|
||||
sdl/sdl@2.1.*
|
||||
sdl/sdl@^3.0
|
||||
```
|
||||
|
||||
### Exemple 14
|
||||
|
||||
```text
|
||||
sdl/sdl@>=1.0
|
||||
sdl/sdl@^4.5
|
||||
```
|
||||
|
||||
### Exemple 15
|
||||
|
||||
```text
|
||||
sdl/sdl@^3.0
|
||||
sdl/sdl@3.1.*
|
||||
```
|
||||
|
||||
## 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.
|
||||
233
examples/035-manifests-et-workspaces-examples.md
Normal file
233
examples/035-manifests-et-workspaces-examples.md
Normal file
@@ -0,0 +1,233 @@
|
||||
# Exemples / DO-DON'T — Chapitre 35 — Manifests et workspaces
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
workspace.manifest.toml
|
||||
project.manifest.toml
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```toml
|
||||
manifest-version = 1
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```toml
|
||||
manifest-version = 1
|
||||
|
||||
[workspace]
|
||||
projects-root = "projects"
|
||||
members = [
|
||||
"core",
|
||||
"compiler",
|
||||
"sdk",
|
||||
]
|
||||
|
||||
[workspace.output]
|
||||
build-root = "build"
|
||||
temp-build-root = ".saselang/tmp"
|
||||
|
||||
[workspace.defaults.project]
|
||||
vendor = "saselang"
|
||||
version = "0.1.0"
|
||||
license = "..."
|
||||
authors = ["..."]
|
||||
repository = "..."
|
||||
|
||||
[workspace.defaults.source]
|
||||
root = "src"
|
||||
|
||||
[workspace.defaults.build]
|
||||
profile = "dev"
|
||||
target = "host"
|
||||
|
||||
[workspace.defaults.paths]
|
||||
dependencies = ["vendor"]
|
||||
native-libraries = ["native/lib"]
|
||||
native-includes = ["native/include"]
|
||||
|
||||
[workspace.dependencies."saselang/core@^1.0"]
|
||||
source = "registry"
|
||||
|
||||
[workspace.dependencies."acme/math@^2.4"]
|
||||
source = "git"
|
||||
url = "https://example.invalid/acme/math.git"
|
||||
|
||||
[workspace.dependencies."local/tools@^1.0"]
|
||||
source = "local"
|
||||
path = "../shared/tools"
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
build-root
|
||||
racine des sorties de build persistantes
|
||||
|
||||
temp-build-root
|
||||
racine des fichiers temporaires/intermédiaires de build
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
workspace.defaults.project
|
||||
workspace.defaults.source
|
||||
workspace.defaults.build
|
||||
workspace.defaults.paths
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
scalaire absent dans le projet
|
||||
-> valeur workspace héritée
|
||||
|
||||
scalaire présent dans le projet
|
||||
-> remplacement
|
||||
|
||||
liste absente dans le projet
|
||||
-> liste workspace héritée
|
||||
|
||||
liste présente dans le projet
|
||||
-> remplacement complet de la liste
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
vendor/package@requirement
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
workspace
|
||||
local
|
||||
git
|
||||
registry
|
||||
native
|
||||
system
|
||||
```
|
||||
|
||||
### Exemple 9
|
||||
|
||||
```toml
|
||||
manifest-version = 1
|
||||
|
||||
[project]
|
||||
vendor = "acme"
|
||||
name = "my-application"
|
||||
version = "1.2.0"
|
||||
type = "bin"
|
||||
description = "..."
|
||||
license = "..."
|
||||
authors = ["..."]
|
||||
repository = "..."
|
||||
|
||||
[source]
|
||||
root = "src"
|
||||
|
||||
[build]
|
||||
profile = "dev"
|
||||
target = "host"
|
||||
|
||||
[paths]
|
||||
dependencies = ["vendor"]
|
||||
native-libraries = ["native/lib"]
|
||||
native-includes = ["native/include"]
|
||||
|
||||
[dependencies]
|
||||
"saselang/core@^1.0" = { workspace = true }
|
||||
|
||||
[build.dependencies]
|
||||
|
||||
[dev.dependencies]
|
||||
|
||||
[dev.unit.dependencies]
|
||||
|
||||
[dev.integration.dependencies]
|
||||
|
||||
[dev.environment.dependencies]
|
||||
```
|
||||
|
||||
### Exemple 10
|
||||
|
||||
```text
|
||||
vendor
|
||||
name
|
||||
version
|
||||
type
|
||||
```
|
||||
|
||||
### Exemple 11
|
||||
|
||||
```text
|
||||
description
|
||||
license
|
||||
authors
|
||||
repository
|
||||
```
|
||||
|
||||
### Exemple 12
|
||||
|
||||
```text
|
||||
src
|
||||
```
|
||||
|
||||
### Exemple 13
|
||||
|
||||
```text
|
||||
profile
|
||||
target
|
||||
```
|
||||
|
||||
### Exemple 14
|
||||
|
||||
```text
|
||||
dependencies
|
||||
native-libraries
|
||||
native-includes
|
||||
```
|
||||
|
||||
### Exemple 15
|
||||
|
||||
```toml
|
||||
[dependencies]
|
||||
"saselang/core@^1.0" = { workspace = true }
|
||||
```
|
||||
|
||||
### Exemple 16
|
||||
|
||||
```toml
|
||||
[dependencies."acme/math@^2.4"]
|
||||
source = "git"
|
||||
url = "https://example.invalid/acme/math.git"
|
||||
```
|
||||
|
||||
### Exemple 17
|
||||
|
||||
```text
|
||||
valeurs intrinsèques/defaults du langage/toolchain
|
||||
< workspace.defaults.*
|
||||
< project.manifest.toml
|
||||
< options explicites de la commande de build lorsque l'option est conçue pour être overridable
|
||||
```
|
||||
|
||||
### Exemple 18
|
||||
|
||||
```text
|
||||
lib
|
||||
bin
|
||||
```
|
||||
|
||||
## 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.
|
||||
95
examples/036-semver-et-politique-de-releases-examples.md
Normal file
95
examples/036-semver-et-politique-de-releases-examples.md
Normal file
@@ -0,0 +1,95 @@
|
||||
# Exemples / DO-DON'T — Chapitre 36 — SemVer et politique de releases
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
MAJOR.MINOR.PATCH
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
MAJOR -> rupture de compatibilité publique
|
||||
MINOR -> ajout rétrocompatible
|
||||
PATCH -> correction rétrocompatible
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
pre -> alpha -> beta -> rc -> stable
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
pre développement/intégration active ; fonctionnalités incomplètes possibles
|
||||
alpha ensemble cohérent et testable ; API encore susceptible d'évoluer
|
||||
beta fonctionnalités prévues essentiellement complètes ; stabilisation
|
||||
rc candidat à la release ; changements limités aux corrections nécessaires
|
||||
stable aucun identifiant de prerelease
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
X.Y.Z-0.pre.N
|
||||
X.Y.Z-1.alpha.N
|
||||
X.Y.Z-2.beta.N
|
||||
X.Y.Z-3.rc.N
|
||||
X.Y.Z
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
1.4.0-0.pre.3
|
||||
1.4.0-1.alpha.1
|
||||
1.4.0-2.beta.2
|
||||
1.4.0-3.rc.1
|
||||
1.4.0
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
X.Y.Z-0.pre.N.fix.M
|
||||
X.Y.Z-1.alpha.N.fix.M
|
||||
X.Y.Z-2.beta.N.fix.M
|
||||
X.Y.Z-3.rc.N.fix.M
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
1.4.0-3.rc.2
|
||||
1.4.0-3.rc.2.fix.1
|
||||
1.4.0-3.rc.3
|
||||
```
|
||||
|
||||
### Exemple 9
|
||||
|
||||
```text
|
||||
1.4.0
|
||||
```
|
||||
|
||||
### Exemple 10
|
||||
|
||||
```text
|
||||
1.4.1
|
||||
```
|
||||
|
||||
### Exemple 11
|
||||
|
||||
```text
|
||||
X.Y.Z+build.N
|
||||
X.Y.Z+doc.N
|
||||
```
|
||||
|
||||
## 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.
|
||||
260
examples/037-dependances-et-scopes-examples.md
Normal file
260
examples/037-dependances-et-scopes-examples.md
Normal file
@@ -0,0 +1,260 @@
|
||||
# Exemples / DO-DON'T — Chapitre 37 — Dépendances et scopes
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
kind = nature logique de la dépendance
|
||||
source = moyen utilisé pour la localiser/résoudre
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
saselang
|
||||
native
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
workspace
|
||||
registry
|
||||
local
|
||||
git
|
||||
artifact
|
||||
system
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```toml
|
||||
[dependencies."vendor/package@requirement"]
|
||||
kind = "saselang"
|
||||
source = "registry"
|
||||
locator = "saselang"
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```toml
|
||||
foo = "^1.2"
|
||||
foo = "../foo"
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
vendor/package@requirement
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```toml
|
||||
[dependencies."acme/math@^2.4"]
|
||||
kind = "saselang"
|
||||
source = "git"
|
||||
locator = "https://example.org/acme/math.git"
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```toml
|
||||
[dependencies."acme/local-tools@^1.0"]
|
||||
kind = "saselang"
|
||||
source = "local"
|
||||
locator = "../local-tools"
|
||||
```
|
||||
|
||||
### Exemple 9
|
||||
|
||||
```toml
|
||||
[dependencies."acme/parser@=1.4.2"]
|
||||
kind = "saselang"
|
||||
source = "artifact"
|
||||
locator = "../libs/parser.saselib"
|
||||
```
|
||||
|
||||
### Exemple 10
|
||||
|
||||
```toml
|
||||
[dependencies."sdl/sdl@^3.0"]
|
||||
kind = "native"
|
||||
source = "system"
|
||||
locator = "SDL3"
|
||||
```
|
||||
|
||||
### Exemple 11
|
||||
|
||||
```toml
|
||||
[workspace.dependencies."sdl/sdl@^3.0"]
|
||||
kind = "native"
|
||||
source = "system"
|
||||
locator = "SDL3"
|
||||
```
|
||||
|
||||
### Exemple 12
|
||||
|
||||
```toml
|
||||
[dependencies."sdl/sdl@^3.0"]
|
||||
kind = "native"
|
||||
source = "workspace"
|
||||
```
|
||||
|
||||
### Exemple 13
|
||||
|
||||
```text
|
||||
dependencies
|
||||
build.dependencies
|
||||
|
||||
dev.dependencies
|
||||
dev.unit.dependencies
|
||||
dev.integration.dependencies
|
||||
dev.environment.dependencies
|
||||
```
|
||||
|
||||
### Exemple 14
|
||||
|
||||
```text
|
||||
dev.benchmark.dependencies
|
||||
dev.documentation.dependencies
|
||||
dev.example.dependencies
|
||||
```
|
||||
|
||||
### Exemple 15
|
||||
|
||||
```text
|
||||
dev.unit effective =
|
||||
dependencies
|
||||
+ dev.dependencies
|
||||
+ dev.unit.dependencies
|
||||
```
|
||||
|
||||
### Exemple 16
|
||||
|
||||
```text
|
||||
vendor/package
|
||||
```
|
||||
|
||||
### Exemple 17
|
||||
|
||||
```text
|
||||
sdl/sdl@2.1.*
|
||||
sdl/sdl@^3.0
|
||||
```
|
||||
|
||||
### Exemple 18
|
||||
|
||||
```text
|
||||
sdl/sdl@^3.0
|
||||
sdl/sdl@3.1.*
|
||||
```
|
||||
|
||||
### Exemple 19
|
||||
|
||||
```text
|
||||
vendor/package@requirement
|
||||
```
|
||||
|
||||
### Exemple 20
|
||||
|
||||
```text
|
||||
vendor/package@requirement
|
||||
```
|
||||
|
||||
### Exemple 21
|
||||
|
||||
```text
|
||||
sdl/sdl@^3.0
|
||||
```
|
||||
|
||||
### Exemple 22
|
||||
|
||||
```text
|
||||
Linux -> libSDL3.so / SONAME approprié
|
||||
Windows -> SDL3.dll + import library éventuelle
|
||||
macOS -> libSDL3.dylib ou framework approprié
|
||||
```
|
||||
|
||||
### Exemple 23
|
||||
|
||||
```toml
|
||||
[dependencies."sdl/sdl@^3.0"]
|
||||
kind = "native"
|
||||
source = "system"
|
||||
locator = "SDL3"
|
||||
|
||||
[[dependencies."sdl/sdl@^3.0".variants]]
|
||||
platform = "linux"
|
||||
library = "SDL3"
|
||||
|
||||
[[dependencies."sdl/sdl@^3.0".variants]]
|
||||
platform = "windows"
|
||||
library = "SDL3"
|
||||
```
|
||||
|
||||
### Exemple 24
|
||||
|
||||
```text
|
||||
target-family
|
||||
platform
|
||||
architecture
|
||||
abi
|
||||
distribution
|
||||
distribution-version
|
||||
capabilities
|
||||
```
|
||||
|
||||
### Exemple 25
|
||||
|
||||
```text
|
||||
variant A : platform=linux, architecture=x86_64
|
||||
variant B : platform=linux, abi=gnu
|
||||
```
|
||||
|
||||
### Exemple 26
|
||||
|
||||
```text
|
||||
library
|
||||
linkage = auto | static | shared
|
||||
deployment = auto | external | bundled
|
||||
search-paths
|
||||
include-paths
|
||||
```
|
||||
|
||||
### Exemple 27
|
||||
|
||||
```text
|
||||
runtime-files
|
||||
link-files/import-libraries
|
||||
frameworks
|
||||
system-packages
|
||||
resources
|
||||
plugins
|
||||
```
|
||||
|
||||
### Exemple 28
|
||||
|
||||
```text
|
||||
=1.4.7
|
||||
^4.5
|
||||
~1.4.2
|
||||
3.1.*
|
||||
>=1.0
|
||||
>=1.2,<2.0
|
||||
```
|
||||
|
||||
### Exemple 29
|
||||
|
||||
```text
|
||||
import type namespace.Type
|
||||
from "vendor/package@requirement"
|
||||
as LocalType;
|
||||
```
|
||||
|
||||
## 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.
|
||||
114
examples/038-resolver-et-lockfile-examples.md
Normal file
114
examples/038-resolver-et-lockfile-examples.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# Exemples / DO-DON'T — Chapitre 38 — Resolver et lockfile
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
identity vendor/package
|
||||
selector vendor/package@requirement
|
||||
resolved instance vendor/package@MAJOR.MINOR.PATCH
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
A -> foo/bar@^2.0
|
||||
B -> foo/bar@^2.5
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
A -> foo/bar@^2.0
|
||||
B -> foo/bar@^3.0
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
1. conservation des versions déjà verrouillées lorsqu'elles restent valides ;
|
||||
2. minimisation du nombre d'instances distinctes ;
|
||||
3. versions SemVer compatibles les plus élevées lorsqu'une nouvelle résolution est nécessaire.
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
vendor/package@1.2.3
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
saselang.lock
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
project.manifest.toml
|
||||
saselang.lock
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
workspace.manifest.toml
|
||||
saselang.lock
|
||||
projects/.../project.manifest.toml
|
||||
```
|
||||
|
||||
### Exemple 9
|
||||
|
||||
```text
|
||||
identité vendor/package
|
||||
selector/requirement d'origine
|
||||
version exacte résolue
|
||||
kind
|
||||
source exacte
|
||||
locator stable lorsque pertinent
|
||||
checksum/intégrité lorsque pertinent
|
||||
commit exact pour Git
|
||||
features résolues
|
||||
instances multi-version
|
||||
graphe de dépendances
|
||||
conditions target/features pertinentes
|
||||
```
|
||||
|
||||
### Exemple 10
|
||||
|
||||
```text
|
||||
normal
|
||||
utilise le lock ;
|
||||
le complète/corrige si nécessaire ;
|
||||
n'upgrade pas gratuitement
|
||||
|
||||
locked
|
||||
interdit toute modification du lock ;
|
||||
échoue si le graphe demandé n'est pas reproductible
|
||||
|
||||
update
|
||||
recherche volontairement de nouvelles versions compatibles
|
||||
```
|
||||
|
||||
### Exemple 11
|
||||
|
||||
```text
|
||||
resolved-package-instance
|
||||
+ namespace
|
||||
+ symbol
|
||||
```
|
||||
|
||||
### Exemple 12
|
||||
|
||||
```text
|
||||
acme/foo@1.0.0 :: data.Node
|
||||
acme/foo@2.0.0 :: data.Node
|
||||
```
|
||||
|
||||
## 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.
|
||||
@@ -0,0 +1,88 @@
|
||||
# Exemples / DO-DON'T — Chapitre 39 — Features, `module.saselmod` et compilation conditionnelle
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
activer une dépendance optionnelle
|
||||
activer un module
|
||||
sélectionner une capacité/backend fonctionnel de library
|
||||
contraindre d'autres features
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
requires
|
||||
conflicts
|
||||
one-of
|
||||
at-least-one
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
namespace ...;
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
doc ...
|
||||
deprecated ...
|
||||
forbid unsafe
|
||||
requires feature ...
|
||||
requires capability ...
|
||||
requires target ...
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
forbid unsafe
|
||||
requires feature
|
||||
requires capability
|
||||
requires target
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
ne produit jamais de valeur ;
|
||||
ne peut jamais être utilisé comme expression ;
|
||||
ne peut dépendre que d'informations déterminables à la compilation.
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
des déclarations top-level complètes ;
|
||||
des blocs d'implémentation dans le corps d'une callable.
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
language version
|
||||
compiler version
|
||||
Core/SDK version
|
||||
package identity/version
|
||||
features actives
|
||||
dépendances résolues
|
||||
profile
|
||||
artifact
|
||||
target family
|
||||
platform
|
||||
architecture
|
||||
ABI
|
||||
endianness
|
||||
pointer width
|
||||
capabilities
|
||||
```
|
||||
|
||||
## 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.
|
||||
@@ -0,0 +1,156 @@
|
||||
# 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.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
TargetFamily
|
||||
Platform
|
||||
Architecture
|
||||
ABI
|
||||
Distribution
|
||||
Capability
|
||||
Feature
|
||||
ArtifactKind
|
||||
ExportFormat
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
Endianness
|
||||
PackageType
|
||||
Linkage
|
||||
Deployment
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
Platform
|
||||
Architecture
|
||||
ABI
|
||||
Distribution
|
||||
Capability
|
||||
ArtifactKind
|
||||
ExportFormat
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
Platform::Linux
|
||||
Platform::Windows
|
||||
Architecture::X86_64
|
||||
Architecture::AArch64
|
||||
ABI::Gnu
|
||||
Distribution::Debian
|
||||
Capability::FileSystem
|
||||
ArtifactKind::NativeExecutable
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
Native
|
||||
Embedded
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
Browser
|
||||
Wasm
|
||||
Jvm
|
||||
JavaScript
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
Linux
|
||||
Windows
|
||||
MacOS
|
||||
FreeBSD
|
||||
Android
|
||||
iOS
|
||||
None
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
X86
|
||||
X86_64
|
||||
Arm
|
||||
AArch64
|
||||
RiscV32
|
||||
RiscV64
|
||||
Wasm32
|
||||
```
|
||||
|
||||
### Exemple 9
|
||||
|
||||
```text
|
||||
Gnu
|
||||
Musl
|
||||
Msvc
|
||||
Darwin
|
||||
Eabi
|
||||
Eabihf
|
||||
None
|
||||
```
|
||||
|
||||
### Exemple 10
|
||||
|
||||
```text
|
||||
Debian
|
||||
Ubuntu
|
||||
Rhel
|
||||
Fedora
|
||||
Arch
|
||||
Alpine
|
||||
```
|
||||
|
||||
### Exemple 11
|
||||
|
||||
```text
|
||||
résoudre/découvrir des dépendances système ;
|
||||
exprimer des contraintes d'environnement de distribution ;
|
||||
produire des packages/export formats spécifiques.
|
||||
```
|
||||
|
||||
### Exemple 12
|
||||
|
||||
```text
|
||||
Heap
|
||||
FileSystem
|
||||
Environment
|
||||
Process
|
||||
Threads
|
||||
Network
|
||||
Sockets
|
||||
Clock
|
||||
DynamicLoading
|
||||
SharedMemory
|
||||
StandardInput
|
||||
StandardOutput
|
||||
StandardError
|
||||
```
|
||||
|
||||
### Exemple 13
|
||||
|
||||
```text
|
||||
TargetFamily
|
||||
Platform
|
||||
Architecture
|
||||
ABI
|
||||
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.
|
||||
@@ -0,0 +1,351 @@
|
||||
# Exemples / DO-DON'T — Chapitre 41 — Artifacts, exports, profils et réservation des formats futurs
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
lib
|
||||
bin
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
Saselib
|
||||
NativeStatic
|
||||
NativeShared
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
NativeExecutable
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
LLVM IR
|
||||
object
|
||||
assembly
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
identité vendor/package
|
||||
version exacte
|
||||
version de format saselib
|
||||
API publique
|
||||
métadonnées de types/generics nécessaires
|
||||
Sase IR ou représentation compilable équivalente
|
||||
dépendances requises
|
||||
features pertinentes
|
||||
contraintes de target/capability lorsque nécessaires
|
||||
intégrité/métadonnées
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
TAR POSIX/PAX
|
||||
compressé par Zstandard
|
||||
extension publique .saselib
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
META-INF/saselib.manifest.toml
|
||||
```
|
||||
|
||||
### Exemple 8
|
||||
|
||||
```text
|
||||
external
|
||||
standalone
|
||||
```
|
||||
|
||||
### Exemple 9
|
||||
|
||||
```text
|
||||
zip
|
||||
tar
|
||||
tar.gz
|
||||
tar.zst
|
||||
```
|
||||
|
||||
### Exemple 10
|
||||
|
||||
```text
|
||||
deb
|
||||
rpm
|
||||
apk
|
||||
AppImage
|
||||
.run
|
||||
msi
|
||||
pkg
|
||||
dmg
|
||||
jar
|
||||
browser chunks
|
||||
Android packages
|
||||
iOS packages
|
||||
```
|
||||
|
||||
### Exemple 11
|
||||
|
||||
```text
|
||||
package type = bin
|
||||
artifact = NativeExecutable
|
||||
target family = Native
|
||||
platform = Linux
|
||||
architecture = X86_64
|
||||
ABI = Gnu
|
||||
distribution = Debian (optionnel/réservé)
|
||||
export format = Deb (futur)
|
||||
```
|
||||
|
||||
### Exemple 12
|
||||
|
||||
```text
|
||||
dev
|
||||
release
|
||||
```
|
||||
|
||||
### Exemple 13
|
||||
|
||||
```text
|
||||
optimization
|
||||
debug-info
|
||||
incremental
|
||||
```
|
||||
|
||||
### Exemple 14
|
||||
|
||||
```text
|
||||
none
|
||||
low
|
||||
balanced
|
||||
speed
|
||||
size
|
||||
```
|
||||
|
||||
### Exemple 15
|
||||
|
||||
```text
|
||||
none
|
||||
line
|
||||
full
|
||||
```
|
||||
|
||||
### Exemple 16
|
||||
|
||||
```toml
|
||||
[profiles.dev]
|
||||
optimization = "none"
|
||||
debug-info = "full"
|
||||
incremental = true
|
||||
|
||||
[profiles.release]
|
||||
optimization = "speed"
|
||||
debug-info = "line"
|
||||
incremental = false
|
||||
```
|
||||
|
||||
### Exemple 17
|
||||
|
||||
```text
|
||||
désactiver les contrôles d'overflow définis par Saselang
|
||||
modifier la sémantique d'un index hors limites
|
||||
modifier l'ordre d'évaluation
|
||||
modifier la représentation sémantique des types
|
||||
changer les règles Result/throws
|
||||
désactiver les vérifications de sûreté du langage
|
||||
faire varier la validité d'un programme Saselang autrement que par une limite propre au backend/target
|
||||
```
|
||||
|
||||
### Exemple 18
|
||||
|
||||
```toml
|
||||
[profiles.release.backend.llvm]
|
||||
lto = "thin"
|
||||
```
|
||||
|
||||
### Exemple 19
|
||||
|
||||
```text
|
||||
profiles.<profile>.backend.<backend>
|
||||
```
|
||||
|
||||
### Exemple 20
|
||||
|
||||
```text
|
||||
off
|
||||
thin
|
||||
full
|
||||
```
|
||||
|
||||
### Exemple 21
|
||||
|
||||
```text
|
||||
--profile dev
|
||||
--profile release
|
||||
```
|
||||
|
||||
### Exemple 22
|
||||
|
||||
```text
|
||||
browser runtime définitif
|
||||
WASM/JVM/JS backends
|
||||
packaging Android/iOS
|
||||
.deb/.rpm/.apk/.msi/.dmg
|
||||
installation automatique de dépendances système sur toutes les distributions
|
||||
```
|
||||
|
||||
### Exemple 23
|
||||
|
||||
```text
|
||||
<name>.saselib
|
||||
```
|
||||
|
||||
### Exemple 24
|
||||
|
||||
```text
|
||||
archive TAR POSIX/PAX
|
||||
compressée par Zstandard
|
||||
```
|
||||
|
||||
### Exemple 25
|
||||
|
||||
```text
|
||||
META-INF/saselib.manifest.toml
|
||||
```
|
||||
|
||||
### Exemple 26
|
||||
|
||||
```text
|
||||
version du format saselib
|
||||
identité vendor/package
|
||||
version exacte SemVer du package
|
||||
compatibilité de version du langage Saselang
|
||||
nature/portabilité de la bibliothèque
|
||||
inventaire logique des contenus présents
|
||||
requirements de dépendances
|
||||
features pertinentes
|
||||
contraintes de target/capabilities
|
||||
métadonnées FFI/native nécessaires
|
||||
informations d'intégrité prévues par la version de format
|
||||
```
|
||||
|
||||
### Exemple 27
|
||||
|
||||
```text
|
||||
Sase IR
|
||||
métadonnées publiques/types/generics
|
||||
artifacts binaires spécifiques à certains targets
|
||||
ressources
|
||||
documentation
|
||||
autres données définies par une version future du format
|
||||
```
|
||||
|
||||
### Exemple 28
|
||||
|
||||
```text
|
||||
TAR POSIX/PAX
|
||||
Zstandard
|
||||
```
|
||||
|
||||
### Exemple 29
|
||||
|
||||
```text
|
||||
bon ratio de compression
|
||||
décompression rapide
|
||||
chargement séquentiel efficace par les outils
|
||||
```
|
||||
|
||||
### Exemple 30
|
||||
|
||||
```text
|
||||
saselc
|
||||
saseldoc
|
||||
```
|
||||
|
||||
### Exemple 31
|
||||
|
||||
```text
|
||||
saselc check
|
||||
saselc build
|
||||
saselc run
|
||||
saselc test
|
||||
saselc clean
|
||||
saselc fetch
|
||||
saselc update
|
||||
```
|
||||
|
||||
### Exemple 32
|
||||
|
||||
```text
|
||||
check
|
||||
résolution du projet et des dépendances nécessaires
|
||||
parsing, analyse sémantique et validations
|
||||
pas de génération de l'artifact final
|
||||
|
||||
build
|
||||
compilation et génération de l'artifact demandé
|
||||
|
||||
run
|
||||
réservé à un projet de type bin
|
||||
build si nécessaire puis exécution
|
||||
transmet explicitement les arguments du programme
|
||||
|
||||
test
|
||||
découverte/compilation/exécution des tests selon les règles V1
|
||||
utilise les scopes dev appropriés
|
||||
|
||||
clean
|
||||
supprime les sorties de build et temporary build de la racine concernée
|
||||
ne supprime ni manifest ni lockfile
|
||||
ne purge pas implicitement les caches globaux de dépendances
|
||||
|
||||
fetch
|
||||
résout et récupère les dépendances nécessaires sans construire l'artifact
|
||||
utilise le lock existant et le complète seulement si nécessaire
|
||||
|
||||
update
|
||||
demande explicitement une nouvelle résolution compatible avec les requirements
|
||||
met à jour le lockfile
|
||||
peut cibler tout le graphe ou un selector/une identité précise
|
||||
```
|
||||
|
||||
### Exemple 33
|
||||
|
||||
```text
|
||||
Sase IR
|
||||
LLVM IR
|
||||
object
|
||||
assembly
|
||||
```
|
||||
|
||||
### Exemple 34
|
||||
|
||||
```text
|
||||
project.manifest.toml
|
||||
saselang.lock.toml
|
||||
```
|
||||
|
||||
### Exemple 35
|
||||
|
||||
```text
|
||||
visibilités incluses
|
||||
format de sortie
|
||||
chemin de sortie
|
||||
base path / base URL lorsque le format le nécessite, notamment HTML
|
||||
projet/package/workspace ciblé
|
||||
```
|
||||
|
||||
## 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.
|
||||
15
examples/042-main-et-exitcode-examples.md
Normal file
15
examples/042-main-et-exitcode-examples.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# Exemples / DO-DON'T — Chapitre 42 — `main` et `ExitCode`
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
func main(Array<String> args) -> Result<ExitCode>
|
||||
```
|
||||
|
||||
## 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.
|
||||
@@ -0,0 +1,77 @@
|
||||
# Exemples / DO-DON'T — Chapitre 43 — Documentation et tests de conformité
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
README
|
||||
sommaire
|
||||
un fichier Markdown par chapitre
|
||||
un fichier compagnon examples + DO/DON'T par chapitre
|
||||
annexes référencées
|
||||
manifest de distribution
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
version cible
|
||||
version de base
|
||||
fichiers ajoutés
|
||||
fichiers modifiés
|
||||
fichiers supprimés
|
||||
hashes des fichiers livrés
|
||||
```
|
||||
|
||||
### Exemple 3
|
||||
|
||||
```text
|
||||
DO
|
||||
DON'T
|
||||
WHY
|
||||
compiler error
|
||||
edge cases
|
||||
```
|
||||
|
||||
### Exemple 4
|
||||
|
||||
```text
|
||||
// commentaire de ligne
|
||||
/* commentaire de bloc */
|
||||
```
|
||||
|
||||
### Exemple 5
|
||||
|
||||
```text
|
||||
/// documentation de ligne
|
||||
/** documentation de bloc */
|
||||
```
|
||||
|
||||
### Exemple 6
|
||||
|
||||
```text
|
||||
@file-path
|
||||
@package
|
||||
@author
|
||||
@created
|
||||
@updated
|
||||
@file-version
|
||||
```
|
||||
|
||||
### Exemple 7
|
||||
|
||||
```text
|
||||
@file-path chemin documentaire attendu, normalement relatif à la racine du package
|
||||
@package identité/coordonnée du package concerné
|
||||
@author auteur/contributeur associé
|
||||
@created date de création documentaire
|
||||
@updated date ou timestamp de dernière mise à jour documentaire
|
||||
@file-version version propre au fichier, distincte de la version package
|
||||
```
|
||||
|
||||
## 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.
|
||||
28
examples/044-browser-futur-v3-examples.md
Normal file
28
examples/044-browser-futur-v3-examples.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# Exemples / DO-DON'T — Chapitre 44 — Browser — FUTUR V3+
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
sources
|
||||
-> semantic compile
|
||||
-> résolution manifest/features/saselmod/compile if
|
||||
-> Browser IR / bytecode
|
||||
-> bundle/chunks
|
||||
-> browser runtime interpreter
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
source unit
|
||||
-> browser compilation unit
|
||||
-> chunk transportable
|
||||
```
|
||||
|
||||
## 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.
|
||||
23
examples/045-autres-backends-cibles-futur-v3-examples.md
Normal file
23
examples/045-autres-backends-cibles-futur-v3-examples.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Exemples / DO-DON'T — Chapitre 45 — Autres backends/cibles — FUTUR V3+
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
WebAssembly
|
||||
JVM bytecode
|
||||
JavaScript
|
||||
TypeScript
|
||||
Android
|
||||
iOS
|
||||
BSD supplémentaires
|
||||
embedded avancé
|
||||
interpréteurs spécialisés
|
||||
```
|
||||
|
||||
## 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.
|
||||
20
examples/046-quantique-futur-lointain-reserve-examples.md
Normal file
20
examples/046-quantique-futur-lointain-reserve-examples.md
Normal file
@@ -0,0 +1,20 @@
|
||||
# Exemples / DO-DON'T — Chapitre 46 — Quantique — FUTUR LOINTAIN / RÉSERVÉ
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
qoperation
|
||||
quantum
|
||||
measure
|
||||
adjoint
|
||||
controlled
|
||||
Qubit
|
||||
```
|
||||
|
||||
## 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.
|
||||
43
examples/047-concepts-rejetes-ou-deconseilles-examples.md
Normal file
43
examples/047-concepts-rejetes-ou-deconseilles-examples.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# Exemples / DO-DON'T — Chapitre 47 — Concepts rejetés ou déconseillés
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
traits séparés des interfaces en V1
|
||||
multiple class inheritance
|
||||
implicit returns
|
||||
global general type inference for variable identity
|
||||
variable shadowing while previous declaration visible
|
||||
operator aliases sans différence sémantique
|
||||
user-defined arbitrary operator symbols
|
||||
operator ++ / --
|
||||
operator === / !==
|
||||
operator >>>
|
||||
C preprocessor #ifdef/#define
|
||||
switch/case fallthrough
|
||||
errdefer
|
||||
general static keyword when clsmethod suffices
|
||||
match guards `when` / `if`
|
||||
loop/until/repeat/unless comme synonymes de structures existantes
|
||||
magic getters/setters
|
||||
mandatory native GC
|
||||
```
|
||||
|
||||
### Exemple 2
|
||||
|
||||
```text
|
||||
reflection runtime obligatoire
|
||||
metaprogramming transformant silencieusement le code
|
||||
features combinatoires non contraintes
|
||||
package hybride `lib+bin`
|
||||
exports/reexports dans module.saselmod
|
||||
transitive dependencies importables sans déclaration directe
|
||||
```
|
||||
|
||||
## 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.
|
||||
@@ -0,0 +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.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
Aucun bloc d'exemple explicite n'est encore présent dans ce chapitre.
|
||||
|
||||
## 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.
|
||||
@@ -0,0 +1,26 @@
|
||||
# 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.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
.saselscript
|
||||
yield si generators différés
|
||||
browser-binary
|
||||
Sasemark
|
||||
hexadecimal floating literals si différés de V1
|
||||
b/br byte-string literals
|
||||
u8/u16/u32 explicit-encoding literals
|
||||
c/cr C-string literals
|
||||
t structured-template literals
|
||||
certaines combinaisons de préfixes texte utiles
|
||||
certains backends/tooling hooks
|
||||
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.
|
||||
25
examples/050-elements-futurs-v3-identifies-examples.md
Normal file
25
examples/050-elements-futurs-v3-identifies-examples.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Exemples / DO-DON'T — Chapitre 50 — Éléments FUTURS V3+ identifiés
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
### Exemple 1
|
||||
|
||||
```text
|
||||
browser runtime/extension définitif
|
||||
browser chunks/bundler optimisé
|
||||
browser-binary définitif
|
||||
WebAssembly backend complet
|
||||
JVM backend
|
||||
JavaScript/TypeScript backends
|
||||
Android packaging
|
||||
iOS packaging
|
||||
packagers OS avancés
|
||||
runtime capability discovery avancée
|
||||
quantum/QPU
|
||||
```
|
||||
|
||||
## 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.
|
||||
11
examples/051-invariants-de-conception-examples.md
Normal file
11
examples/051-invariants-de-conception-examples.md
Normal file
@@ -0,0 +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.
|
||||
|
||||
## Exemples actuellement présents dans le chapitre
|
||||
|
||||
Aucun bloc d'exemple explicite n'est encore présent dans ce chapitre.
|
||||
|
||||
## 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.
|
||||
@@ -0,0 +1,29 @@
|
||||
# Exemples / DO-DON'T — Chapitre 52 — Priorité de spécification après 0.2.9
|
||||
|
||||
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
|
||||
|
||||
## Exemples actuellement présents dans le 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
|
||||
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
|
||||
```
|
||||
|
||||
## 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.
|
||||
Reference in New Issue
Block a user