Sobre o projeto

Slate é uma linguagem de tipagem dinâmica que utiliza indentação para estrutura com um verificador de tipos gradual. Suporta async/await em um loop de eventos real, geradores, módulos, pattern matching, classes em vez de protótipos e tipos de dados algébricos. Projetada para servidores de API, ela lida com HTTP (via llhttp), HTTP/2 (via nghttp2), TCP, TLS, operações de sistema de arquivos, processos, regex e JSON. A linguagem compila para JavaScript, permitindo que o mesmo programa seja executado em seu interpretador, Node.js, QuickJS ou em navegadores usando o framework Lath. O comando `slate js` gera um único arquivo JavaScript autocontido, incluindo o runtime e o framework, eliminando a necessidade de bundlers e node_modules. A tipagem gradual permite anotações opcionais; as declarações de tipo servem tanto para pattern matching quanto para verificações em tempo de execução. Os recursos incluem expressões `match` pós-fixadas, tipos genéricos e funções async que retornam promises. Servidores de API utilizam sistemas integrados de roteador e handler. Scripts suportam execução via shebang. A implementação utiliza uma máquina de pilha e coleta de lixo por rastreamento (devido a ciclos de closure), com um loop de eventos construído sobre libuv. Disponível para macOS Apple silicon via Homebrew; outras plataformas requerem compilação do código-fonte. A documentação inclui referências da linguagem e da biblioteca. Omissões notáveis incluem o suporte a programação literária e alguns módulos de biblioteca padrão para o backend JavaScript. A instrução `defer` foi deliberadamente excluída devido à coleta de lixo.