KromScript 1.0.2 — correctifs de justesse et de sûreté
Six correctifs de justesse et de sûreté (#10 à #15). Le numéro est un correctif, mais plusieurs changements sont visibles depuis un script ou depuis l'hôte — lire la section Migration du CHANGELOG avant de monter de version.
Correctifs
- Résolution de propriété (#10, #11) — lire une propriété nulle ou absente rend
nullau lieu de lever.?.résout comme.et ne court-circuite plus que sur un receveur nul :l?.lengthrendaitnulllà oùl.lengthrendait3. Une propriété nulle sur un objet lié ne rend plus un wrapper appelable, qui pouvait entrer silencieusement dans les données de l'hôte. - Garde d'exécution (#13) —
ExecutionLimitss'applique désormais par défaut àeval,runetbuilder().execute(), comme sa documentation l'annonçait depuis 1.0.0.while (true) {}ne bloque plus indéfiniment. NouveauwithLimits(...);ExecutionLimits.unlimitedpour désarmer explicitement. - Analyse (#12) — une chaîne non terminée et un bloc non fermé produisent une erreur de syntaxe positionnée, comme
(et[le faisaient déjà. Ces sources tronquées étaient acceptées puis exécutées. - Opérateurs d'ordre (#15) —
<,>,<=,>=ne coercent plus les opérandes non numériques vers0.0.null < 5répondaittrue: dans un moteur de règles,age < 18sur un champ vide déclenchait une validation qui devait rester dormante. - Représentation numérique (#14) — une seule règle à toutes les frontières : un entier reste
int, un décimal restedouble. Un même champ se sérialisait3ou3.0selon qu'un script l'avait touché.jsonStringifysuit la même règle, ce qui révoque la décision de 1.0.0 de préserver2.0en format réseau.
Migration
Le point le plus susceptible de casser à l'exécution : result.value as double lève désormais sur un entier. Utiliser as num.
Les autres changements visibles — comparaisons d'ordre qui passent de true à false, sources tronquées rejetées, scripts non bornés qui atteignent le budget, sortie jsonStringify sans .0 — sont détaillés un par un dans la section Migration du changelog.
Qualité
379 tests (contre 267 en 1.0.1), dart analyze et dart format propres. Les 8 cas de conformité encore rouges sont des fonctionnalités du canon non implémentées, suivies dans #24 — inchangés par cette version.