Rush

A linguagem Rush

Um passeio curto e honesto por RushScript, escrito a partir da própria documentação do Rush.

O que é o Rush

O Rush é duas coisas fundidas em um único binário: um ambiente de execução de processos e uma linguagem, RushScript, que roda nele. RushScript é interpretada: quem escreve não executa uma etapa de compilação separada.

Valores, não variáveis

O Rush não tem variáveis. Uma ligação (bind) une um rótulo, um nome sem aspas, a um valor: port = 8080 liga o rótulo port ao número 8080.

port = 8080

Colchetes em toda parte

[ e ] são os únicos colchetes de agrupamento. Eles contêm os argumentos de uma chamada, literais de lista e de mapa e expressões agrupadas. Os argumentos são separados por vírgulas: add[10, 20]. Parênteses são recusados fora de texto.

add[10, 20]

Toda linha faz alguma coisa

Uma linha liga, chama ou encaminha. Uma linha que apenas nomeia um valor, como 5 ou x, não faz nada, e por isso é recusada com o erro RX0065.

x = 5
write[x]

Ver a página do erro RX0065

Escrever uma saída

write['hello world'] escreve na saída padrão. write.log e write.debug são os outros dois tipos de fala: o primeiro, do sistema para o usuário; o segundo, para quem desenvolve, visível apenas com DEBUG=1.

write['hello world']

Ligar e parear

= liga um nome a um valor; : pareia uma chave com seu valor. São dois atos com duas grafias: cfg = [port: 8080].

cfg = [port: 8080]

Formas que se impõem sozinhas

Declare uma forma como um mapa de regras e anexe-a com :. Um valor que quebra uma regra é recusado na porta, e não descoberto depois.

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, sem importar nada

São recursos embutidos da linguagem, não uma biblioteca: email, ipv4, ipv6, uuid, url, iso8601, rfc3339, cpf, cnpj, cep, phone, hex e base64.

Situação, com honestidade

A própria documentação do Rush diz sem rodeios: jovem, rápido, não pronto, de propósito. Leia esta página como um passeio e os documentos do motor como a autoridade.

Fontes

Esta página foi escrita a partir dos seguintes arquivos da árvore de documentação do Rush. Só são usados os exemplos e as regras que constam ali. Os arquivos estão escritos em 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)