110 lines
5.1 KiB
Markdown
110 lines
5.1 KiB
Markdown
# 48. Inventaire des points V1 encore OUVERTS
|
|
|
|
Cette section constitue la checklist principale avant de considérer la Bible V1 comme suffisamment normative pour une implémentation complète.
|
|
|
|
## 48.1 Lexical / grammaire
|
|
|
|
Points désormais largement figés : UTF-8 source, code ASCII hors contenu textuel, whitespace non sémantique, identifiants ASCII, commentaires, Saseldoc, littéraux numériques, `char`, String normales/raw/multilignes, escapes, séparateurs numériques, règles de fichiers source, statements/blocs/`;`, absence de trailing comma, `if`/`elseif`/`else`, boucles de base, `match`, `emit` et noyau des patterns structurels.
|
|
|
|
Restent à fermer :
|
|
|
|
- liste exhaustive finale des mots-clés actifs, futurs et `reserved-foreign` après audit de toute la Bible ;
|
|
- choix canonique `{expr}` vs `${expr}` à l'intérieur de `i"..."` ;
|
|
- matrice finale des préfixes de littéraux combinables (`i`, `r`, `b`, `c`, `u8/u16/u32`, `t`, etc.) et leur disponibilité V1/V2 ;
|
|
- limite normative éventuelle du nombre de `#` des raw strings ;
|
|
- grammaire syntaxique complète au-delà des blocs/statements déjà figés ;
|
|
- syntaxe exacte des annotations/métadonnées de code lorsqu'elles seront retenues.
|
|
|
|
## 48.2 Types
|
|
|
|
- domaine exact des types admissibles à `Nullable<T>` avec le modèle mémoire/FFI ;
|
|
- audit mécanique final de la surface Core des conversions numériques à partir de la matrice désormais largement figée ;
|
|
- règles de sous-typage interface/class au-delà des règles génériques déjà fixées ;
|
|
- callable/function types ;
|
|
- lambdas/closures ;
|
|
- variadiques (un seul variadique prévu) ;
|
|
- String/index Unicode ;
|
|
- exact float semantics hors conversions déjà figées (opérations arithmétiques IEEE restantes, `%`, division par zéro, etc.).
|
|
|
|
## 48.3 Mémoire
|
|
|
|
- value/reference model ;
|
|
- object allocation ;
|
|
- ownership/move/copy/clone ;
|
|
- references/borrowing visibles ou internes ;
|
|
- allocator ;
|
|
- cycles ;
|
|
- destruction partielle ;
|
|
- thread safety ;
|
|
- raw pointers ;
|
|
- unsafe operation inventory.
|
|
|
|
## 48.4 Erreurs
|
|
|
|
Points désormais largement figés : hiérarchie `Error` / `ResultError` / `Exception`, `Result::Ok` / `Result::Err`, contraintes de `Result<T,E>`, absence de `unwrap` et `?` V1, `throw` / `throws`, contrats d'override/interface, sélection ordonnée des `catch`, `finally` non-escaping, causes, i18n, code de `ResultError`, stack trace d'`Exception` liée au `throw`, et sémantique LIFO/non-escaping de `defer`.
|
|
|
|
Restent à fermer :
|
|
|
|
- faute runtime/panic/fatal error ;
|
|
- constructors faillibles et construction partielle ;
|
|
- interaction exacte cleanup/destruction pendant fault ;
|
|
- ordre exact `defer` / destructeurs automatiques avec le modèle mémoire ;
|
|
- représentation Core/runtime exacte de `I18nMessage`, `ResultErrorCode`, `StackTrace` et `StackFrame` ;
|
|
- éventuels helpers Core futurs `expectOk` / `expectErr` seulement si un besoin réel est démontré.
|
|
|
|
## 48.5 Contrôle de flux
|
|
|
|
- harmonisation finale des literal/named-constant patterns avec les règles générales des constantes et des types ;
|
|
- détails d'implémentation/Core des capacités Range et organisation de leurs namespaces ;
|
|
- generators/yield décision V1 ;
|
|
- lambdas ;
|
|
- async/concurrency.
|
|
|
|
## 48.6 Opérateurs
|
|
|
|
- signatures exactes des membres des interfaces `Op...` ;
|
|
- relation précise PartialEqual/Equal et PartialCompare/Compare ;
|
|
- règles de comparaison hétérogène et reverse implementation ;
|
|
- index assignability formelle ;
|
|
- bitcast safe/unsafe table ;
|
|
|
|
## 48.7 Object model
|
|
|
|
- `protected` via autres instances ;
|
|
- clsmethod inheritance exact ;
|
|
- associated constants interface ;
|
|
- conflict resolution syntax when choosing among defaults ;
|
|
- visibility/default visibility if omitted (préférence actuelle : explicite) ;
|
|
- precise constructor synthesis grammar.
|
|
|
|
## 48.8 Packages/tooling
|
|
|
|
- grammaire finale des imports `from "vendor/package@requirement"` ;
|
|
- format TOML sérialisé exact de `saselang.lock` ;
|
|
- détails FFI/linker des composants physiques des variants natifs, après fixation complète de la FFI ;
|
|
- syntaxe TOML finale des features et groupes de features ;
|
|
- syntaxe exacte des directives `module.saselmod` ;
|
|
- syntaxe exacte de `compile if` et de ses éventuels `else` ;
|
|
- API Core/compiler exacte de l'environnement de compilation ;
|
|
- choix final `enum` vs identifiant extensible pour quelques domaines Core lors de l'implémentation, sans changer le modèle conceptuel ;
|
|
- liste des targets LLVM officiellement validés par la première toolchain V1 ;
|
|
- ordre final des entrées `.saselib` après le manifest interne et niveau Zstandard canonique, après benchmark ;
|
|
- sémantique détaillée du mode `standalone` face aux bibliothèques non redistribuables/dynamiques ;
|
|
- grammaire CLI finale des options et sélecteurs de projet ;
|
|
- liste finale des options backend LLVM au-delà de `lto`, uniquement si elles sont nécessaires ;
|
|
- détails de `saseldoc` après fixation du format documentaire et des tests.
|
|
|
|
## 48.9 Core/SDK
|
|
|
|
- frontière Core/SDK définitive ;
|
|
- collections V1 ;
|
|
- String encodings ;
|
|
- regex ;
|
|
- filesystem/network/process ;
|
|
- math/algebra ;
|
|
- logging/tracing ;
|
|
- testing APIs ;
|
|
- reflection/TypeInfo.
|
|
|
|
---
|