Skip to content

KromScript 1.0.2 — correctifs de justesse et de sûreté

Choose a tag to compare

@issadicko issadicko released this 01 Aug 00:53
· 5 commits to main since this release

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 null au lieu de lever. ?. résout comme . et ne court-circuite plus que sur un receveur nul : l?.length rendait null là où l.length rendait 3. 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) — ExecutionLimits s'applique désormais par défaut à eval, run et builder().execute(), comme sa documentation l'annonçait depuis 1.0.0. while (true) {} ne bloque plus indéfiniment. Nouveau withLimits(...) ; ExecutionLimits.unlimited pour 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 vers 0.0. null < 5 répondait true : dans un moteur de règles, age < 18 sur 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 reste double. Un même champ se sérialisait 3 ou 3.0 selon qu'un script l'avait touché. jsonStringify suit la même règle, ce qui révoque la décision de 1.0.0 de préserver 2.0 en 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.