This commit is contained in:
2026-09-13 21:59:15 +02:00
parent b72193d656
commit 6e0a4a91d9
19 changed files with 434 additions and 151 deletions

View File

@@ -1,4 +1,27 @@
# Changelog documentaire — 0.2.17
# Changelog documentaire — 0.2.18
## 0.2.18
- `Vector<T>` fermé comme `ResizableList<T>` contigu à longueur runtime dynamique, avec `append`, `insert`, `removeAt`, `clear`, `capacity`, `reserve` et `slice` ;
- `Vector::append(T) -> Void` figé ; `insert(index,value)` accepte `0 <= index <= length()` et produit `IndexOutOfBoundsFault` au-delà ;
- `Vector::removeAt(index) -> T` figé avec `IndexOutOfBoundsFault` pour un index invalide ;
- garanties de complexité de `Vector` figées : indexation O(1), cardinalité O(1), append O(1) amorti, insert/removeAt O(n), slice O(1), capacity O(1), reserve O(n) au pire ;
- aucun `reserveExact`, `resize` implicite ni opération générale de shrink dans le contrat standard de `Vector` ;
- construction dynamique explicite par class methods/factories et `VectorBuilder<T>` ; le littéral `[...]` reste réservé aux arrays contextualisés ;
- backing storage stable retenu dès V1 pour `Vector`/`Slice` : une relocalisation physique, `reserve`, un remplacement délément ou `append` ne rendent pas les slices existantes invalides ;
- en V1, `insert`, `removeAt` et un `clear` effectif invalident toutes les slices dérivées du vector ; un accès ultérieur produit `SliceInvalidatedFault` ;
- `Equatable<T>` introduit comme capacité Core réutilisant le contrat opérateur canonique `OpEqual<T>` sans seconde implémentation de légalité ;
- `Object::sameInstance(...)` renommé en `Object::sameIdentity(...)` pour distinguer explicitement identité de référence et égalité logique ;
- `Hashable` fixé dans le Core avec stabilité normative de lidentité hashable pendant toute la durée de vie de la valeur ;
- `Hasher` fixé dans le Core ; ses implémentations concrètes restent des implémentations SDK/runtime ;
- contrat minimal `Hasher::writeBytes(const Slice<uint8>)` + `finish() -> uint64`, avec framing canonique Core des valeurs fondamentales et `finish()` non mutateur ;
- `HashSet<T>` et `HashMap<K,V>` fermés comme implémentations SDK non ordonnées exigeant respectivement `T` ou `K` `Equatable + Hashable` ;
- collisions de hash définies comme normales et résolues par légalité ; aucune `HashCollisionFault` ;
- hasher/seed internes des collections hashées non contractuels et potentiellement différents entre instances ; ordre ditération non stable/non garanti ;
- `ResizableMap::remove(key)` retourne désormais `V` et reste strict avec `KeyNotFoundFault` ;
- builders `Vector`, `HashSet` et `HashMap` mutables, chaînables, non consommés par `build()` et produisant des résultats sémantiquement indépendants ;
- un doublon dans `HashSetBuilder` suit la sémantique idempotente du set ; une clé dupliquée dans `HashMapBuilder` produit `DuplicateKeyFault` ;
- la sémantique flottante de cette révision référence explicitement IEEE 754-2019, standard actif au moment de la révision ; une future norme finale devra être adoptée explicitement par une révision de Saselang.
## 0.2.17