Rush

El lenguaje Rush

Un recorrido breve y honesto por RushScript, escrito a partir de la propia documentación de Rush.

Qué es Rush

Rush es dos cosas fusionadas en un solo binario: un entorno de ejecución de procesos y un lenguaje, RushScript, que corre sobre él. RushScript es interpretado: quien escribe no ejecuta un paso de compilación aparte.

Valores, no variables

Rush no tiene variables. Un enlace une una etiqueta, un nombre sin comillas, con un valor: port = 8080 enlaza la etiqueta port con el número 8080.

port = 8080

Corchetes en todas partes

[ y ] son los únicos corchetes de agrupación. Contienen los argumentos de una llamada, los literales de lista y de mapa y las expresiones agrupadas. Los argumentos se separan con comas: add[10, 20]. Los paréntesis se rechazan fuera del texto.

add[10, 20]

Cada línea hace algo

Una línea enlaza, llama o enruta. Una línea que solo nombra un valor, como 5 o x, no hace nada, así que se rechaza con el error RX0065.

x = 5
write[x]

Ver la página del error RX0065

Escribir una salida

write['hello world'] escribe en la salida estándar. write.log y write.debug son las otras dos clases de habla: la primera, del sistema hacia el usuario; la segunda, para quien desarrolla, visible solo con DEBUG=1.

write['hello world']

Enlazar y emparejar

= enlaza un nombre con un valor; : empareja una clave con su valor. Son dos actos con dos escrituras: cfg = [port: 8080].

cfg = [port: 8080]

Formas que se hacen cumplir solas

Declara una forma como un mapa de reglas y adjúntala con :. Un valor que rompe una regla se rechaza en la puerta, no se descubre después.

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: '…']: Banana

Validadores, sin importar nada

Son funciones integradas del lenguaje, no una biblioteca: email, ipv4, ipv6, uuid, url, iso8601, rfc3339, cpf, cnpj, cep, phone, hex y base64.

Estado, con honestidad

La propia documentación de Rush lo dice sin rodeos: joven, rápido, no listo, a propósito. Lee esta página como un recorrido y los documentos del motor como la autoridad.

Fuentes

Esta página se escribió a partir de los siguientes archivos del árbol de documentación de Rush. Solo se usan los ejemplos y reglas que allí figuran. Los archivos están escritos en inglés.

  • /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)