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 = 8080Colchetes 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]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: '…']: BananaValidadores, 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)
