v0.2.18
This commit is contained in:
@@ -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 l’identité 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 d’ité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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user