Le langage Rush
Une visite courte et honnête de RushScript, écrite à partir de la documentation propre de Rush.
Ce qu'est Rush
Rush est deux choses fusionnées dans un seul binaire : un environnement d'exécution de processus et un langage, RushScript, qui s'y exécute. RushScript est interprété : l'auteur n'a aucune étape de compilation séparée.
Des valeurs, pas des variables
Rush n'a pas de variables. Une liaison associe une étiquette, un nom sans guillemets, à une valeur : port = 8080 lie l'étiquette port au nombre 8080.
port = 8080Des crochets partout
[ et ] sont les seuls crochets de regroupement. Ils contiennent les arguments d'appel, les littéraux de liste et de table, et les expressions groupées. Les arguments sont séparés par des virgules : add[10, 20]. Les parenthèses sont refusées hors du texte.
add[10, 20]Chaque ligne fait quelque chose
Une ligne lie, appelle ou aiguille. Une ligne qui ne fait que nommer une valeur, comme 5 ou x, ne fait rien : elle est refusée avec l'erreur RX0065.
x = 5
write[x]Voir la page de l'erreur RX0065
Écrire une sortie
write['hello world'] écrit sur la sortie standard. write.log et write.debug sont les deux autres sortes de parole : la première pour le système qui parle à l'utilisateur, la seconde pour le développeur, visible seulement avec DEBUG=1.
write['hello world']Lier et apparier
= lie un nom à une valeur ; : apparie une clé à sa valeur. Ce sont deux actes, donc deux écritures : cfg = [port: 8080].
cfg = [port: 8080]Des formes qui se font respecter
Déclarez une forme comme une table de règles et attachez-la avec :. Une valeur qui enfreint une règle est refusée à la porte, au lieu d'être découverte plus tard.
Banana = [grams: number.real.ge[120].le[180], length_cm: number.real.ge[12].le[25], id: text.uuid]
good = [grams: 150, length_cm: 18, id: '…']: Banana
bad = [grams: 999, length_cm: 18, id: '…']: BananaDes validateurs, sans import
Ce sont des fonctions intégrées au langage, pas une bibliothèque : email, ipv4, ipv6, uuid, url, iso8601, rfc3339, cpf, cnpj, cep, phone, hex et base64.
État des lieux honnête
La documentation de Rush le dit sans détour : jeune, rapide, pas prêt, volontairement. Lisez cette page comme une visite, et les documents du moteur comme l'autorité.
Sources consultées
Cette page a été écrite à partir des fichiers suivants de l'arborescence de documentation de Rush. Seuls les exemples et règles qui y figurent sont utilisés. Les fichiers sont rédigés en anglais.
/f/dev/rush/README.md (What Rush is: Runtime + Language; Why use rush instead of Python)/f/dev/rush/doc/FLOPS/09_language.md (Values, not variables; Brackets everywhere; A line holds an expression; A key-value pair is key: value; The output verb; The Banana)
