krom_script 1.0.1
krom_script: ^1.0.1 copied to clipboard
A lightweight, embeddable scripting language for Dart applications.
Changelog #
1.0.1 #
Qualité du paquet (aucun changement d'API ni de comportement) :
- Code entièrement conforme à
dart format. - Suppression du code mort signalé par l'analyseur (imports, champs et
variables locales inutilisés) dans
lib/,bin/ettest/. pathdéclaré endev_dependency(utilisé par les tests).
1.0.0 #
Première version stable. API figée, sûreté par défaut et un langage nettement plus expressif — sur Dart, Kotlin, Go et TypeScript.
Langage #
- Chaînes
else if— plus besoin deifimbriqués. - Affectations composées :
+=,-=,*=,/=. - Opérateur ternaire :
cond ? a : b. for-insur les maps — itère sur les clés.- Natif
range()pour les boucles numériques. - Commentaires bloc
/* ... */. - Affichage des entiers sans
.0:4au lieu de4.0, appliqué àtoString, l'interpolation,+,print,joinet aux clés de map (jsonStringifyreste inchangé — format réseau préservé).
Sûreté #
- Garde d'exécution activée par défaut : budget d'opérations + deadline,
pour qu'un script tiers ne puisse pas figer l'hôte.
ExecutionLimits.unlimitedreste disponible pour du code de confiance. print()est aussi routé vers la sortie standard, en plus dedeveloper.log.
Optimiseur & introspection hôte #
- Correction de plusieurs bugs de fausse suppression / transformation
(propagation de constantes dans les boucles et les closures, inlining
capturant un paramètre, round-trip du
elseaprès optimisation). - Les hooks de cycle de vie (
onInit/onShow/onHide/onDispose) sont préservés au tree-shaking. - Introspection réactive :
reactiveState()/setReactiveValue()pour lire et piloter l'état,lastOpsUsed/maxOperationspour instrumenter le budget d'opérations.
Migration #
Rien à migrer depuis 0.2.0 : ces ajouts sont rétrocompatibles.
0.2.0 #
Breaking Changes #
- Binding API: Objects passed to
.bind()must now implementKromBindableinterface- This enables support for iOS, Android, and Web platforms
- Removed dependency on
dart:mirrorswhich is not available on these platforms
Migration Guide #
Before (0.1.x):
// Automatic reflection - no longer supported
class User {
final String name;
User(this.name);
String greet() => "Hello, $name!";
}
final result = KromScript.builder('user.greet()').bind('user', User('Alice')).execute();
After (0.2.0):
class User implements KromBindable {
final String name;
User(this.name);
String greet() => "Hello, $name!";
@override
Object? getProperty(String name) => name == 'name' ? this.name : null;
@override
Object? callMethod(String name, List<Object?> args) {
if (name == 'greet') return greet();
return null;
}
}
final result = KromScript.builder('user.greet()').bind('user', User('Alice')).execute();
0.1.1 #
- Fixed string template parsing for complex expressions
- Improved error messages for undefined variables
- Performance optimizations for repeated script execution
0.1.0 #
- Added
for...inloop support for iterating over arrays - Added
whileloop support for conditional iteration - Added user-defined functions with
fnkeyword - Enhanced array operations:
map,filter,reduce,find,findIndex - Added operation limit and timeout for script execution
- Performance improvements via AST caching
0.0.1 #
- 🎉 Initial release
- Variables and expressions
- Null-safety operators (
?.,?:) - Control flow (if/else)
- Native functions:
- String manipulation
- Math operations
- Crypto (MD5, SHA1, SHA256)
- JSON parsing/stringify
- Base64/URL encoding
- Array operations
- Custom function registration
- Builder pattern API