# Changelog documentaire — 0.2.15 ## 0.2.15 - mutabilité ordinaire confirmée par défaut ; aucun `mut` requis pour les variables/objets ordinaires ; - `const` défini comme restriction d'accès locale : pas de réaffectation ni mutation via cet accès, sans immutabilité globale ; - alias mutable -> alias const autorisé ; augmentation const -> mutable interdite pour les accès référence ; - propagation `const` à travers les membres accédés depuis un receiver const ; - introduction de `const method`, distincte de la pureté, et règles pour paramètres/retours const ; - qualification `const` intégrée au contrat d'override/implémentation ; - rejet explicite d'un modèle visible Rust-like basé sur immutabilité par défaut, `mut`, borrow/lifetimes ordinaires ; - `String` mutable via API contrôlée ; `const String` bloque les mutations via cet accès ; - intégration Core de `Utf8Char`, `Utf16Char`, `Utf32Char`, `Utf8String`, `Utf16String`, `Utf32String` ; - `String` sans `[]`; `UtfXString[index]` lit une code unit brute et `OpIndexMut` reste absent ; - aucune conversion/transcodage textuel implicite : conversion explicite avant `append`, concaténation ou autre opération ; - ajout de l'annexe B pour les conversions Unicode/encodages. ## 0.2.14 - fermeture du socle generics V1 : syntaxe, inférence d'appel, contraintes nominales, invariance, absence de CTAD/wildcards/spécialisation ; - `Numeric` retenu comme vraie abstraction Core utilisable dans les contraintes génériques ; - const generics V1 limités aux types de paramètres `bool`, `char`, `uint8..uint256` et enums simples sans payload ; - arguments const generic volontairement boring : aucune callable directement dans `<...>` ; calcul complexe matérialisé d'abord dans une `const` ; - inférence const generic structurelle uniquement, sans solveur algébrique ; - récursivité générique régulière autorisée ; auto-référence transformante et polymorphic recursion interdites V1 ; - toute récursivité by-value interdite, y compris via une instanciation de taille théoriquement nulle ; - cycles d'héritage interdits, diamants non cycliques autorisés ; - classes récursives autorisées via leurs références d'objet ; - distinction nominalement connu / sémantiquement complet / layout-complet et suppression du besoin de forward declarations utilisateur ; - imports explicites requis même entre deux types du même namespace ; les imports sont déclaratifs, non exécutables, et leurs cycles sont autorisés ; - `NaN`, infinities et zéros signés stabilisés pour `float -> float` ; - `NumericConversionError` stabilisé conceptuellement autour de `NotFinite`, `NotIntegral`, `OutOfRange`, `Inexact` ; - matrice `float -> integer` réduite par paire selon la règle anti-doublon ; - conversions fondamentales Core obligatoires pour toute paire de types supportés, avec émulation logicielle lorsque raisonnable ; - nomenclature de capabilities organisée par propriétaires `language.*`, `core.*`, `target.*`, `platform.*`, `sdk.*` ; - V1/V2 explicitement positionnées comme bases/POC, V3 comme première baseline publique de stabilité. ## 0.2.13 - règle générale de composition Core figée : aucune méthode combinée lorsqu'une chaîne d'opérations existantes exprime exactement la même sémantique ; - suppression conceptuelle des alias `tryFloorTo...`, `tryCeilTo...`, `tryRoundTo...` et `tryTruncateTo...` ; - `float -> integer` réduit aux familles `tryTo...`, `trySaturateTo...` et `tryWrapTo...`, composables avec `floor()`, `ceil()`, `round()` et `truncate()` ; - maintien des méthodes combinées uniquement lorsqu'une composition changerait le contrat ou perdrait l'information nécessaire ; - `saturatingRoundToFloatXX()` reste justifié pour les conversions flottantes où arrondi et saturation ne peuvent pas être séparés sans changer la sémantique. ## 0.2.12 - migration de la Bible monolithique vers une distribution multifichier ; - ajout d'un fichier compagnon examples / DO-DON'T par chapitre ; - ajout des vues Language/Compiler, Language+Core et Platform ; - ajout de l'annexe exhaustive des conversions numériques ; - `is` figé comme test d'appartenance à une hiérarchie polymorphe ; - `instanceof` figé comme test de classe runtime exacte, limité aux classes concrètes non abstraites ; - upcast par assignabilité ; downcast canonique par `is` + refinement ; - conversions numériques exposées par le Core plutôt que multipliées comme syntaxe compiler-specific ; - `NumericConversionError` retenu comme nom de travail ; - règle de non-redondance des variantes de conversion ; - nom `saturatingRoundToFloatXX()` retenu lorsqu'arrondi et saturation doivent tous deux être annoncés ; - modèle de livraison documentaire `full` + deltas SemVer.