O Livro Glide
Um guia completo de Glide.
De glide run hello.glide a um serviço multi-pacote. Cada capítulo compila para código real e funcional, nada é deixado pela metade. Escrito e mantido por Murillo Deolino.
- 33
- Capítulos
- ~599
- Minutos
- 0.3.3
- Glide
Fundamentos
Instale a toolchain, aprenda a forma da linguagem e escreva seus primeiros programas.
Primeiros passos
Do zero ao seu primeiro programa em Glide. Instale o toolchain, entenda o que `glide run` faz por baixo dos panos, e conheça os quatro comandos que você usará todos os dias.
- Instalação
- Seu primeiro programa
- Um projeto de verdade
- Os quatro comandos que você usará todo dia
Tipos e bindings
O sistema de tipos estático do Glide: inteiros por largura, floats, bool, strings, o trio let/mut/const, e um primeiro contato com structs, vectors e hashmaps.
- Bindings: let, mut, const
- Inteiros, especificados pela largura
- Floats
- Booleanos
Funções e controle de fluxo
Defina funções com parâmetros tipados, ramifique com if e match, itere com for e while, e aprenda o superpoder silencioso: a maioria das coisas em Glide são expressões, incluindo blocos.
- Funções
- if é uma expressão
- match
- Laços
Erros e memória
Como Glide lida com falhas e posse — sem exceções, sem anotações de lifetime.
Erros como valores
Glide não tem exceções. Falhas vivem nos tipos de retorno: !T para "T ou um erro", ?T para "T ou nada". O operador ? transforma cinco linhas de tratamento de erros em uma.
- Os dois tipos em formato de falha
- Lendo o valor de dentro
- O operador ?
- O operador ??: valores padrão
Modelo de memória
Como Glide libera memória sem um coletor de lixo e sem anotações de tempo de vida. Posse, empréstimos, auto-drop — explicados do zero.
- Onde cada coisa vive
- Dois tipos de ponteiro para o heap
- Auto-drop: limpeza que você não precisa escrever
- Retornando um valor do heap: use um ponteiro bruto
Tipos e traits
Modelando dados com structs, enums, generics e o sistema de traits.
Concorrência
Corrotinas M:N, canais e select — a história do paralelismo.
Projeto
Módulos, pacotes, o manifesto e como entregar uma aplicação real.
Biblioteca padrão
Um tour e depois um capítulo por módulo — strings, coleções, matemática, tempo, arquivos, JSON, regex, rede e mais.
Um passeio pela biblioteca padrão
Um passeio guiado pelas baterias que o Glide inclui: strings e vetores (embutidos), depois hashmaps, iteradores, math, time, arquivos, ambiente e JSON via `stdlib::*`. As funções que você vai chamar de verdade.
- Strings
- Vetores
- HashMaps
- Math
Prelude e built-ins
O prelude sempre em escopo — impressão, formatação, alocação bruta no heap, canais, argumentos da CLI, auxiliares do escalonador, macros de diagnóstico, introspecção de memória e o tipo Pair<K,V>.
- Importação
- Superfície pública em resumo
- Impressão e formatação
- Canais
Strings
Referência para o tipo string embutido do Glide: inspeção, busca, fatiamento, divisão, transformação e métodos de parsing.
- Importação
- Catálogo de métodos
- Inspeção e comparação
- Busca
Vector\<T>
Referência da API de Vector<T> — array crescente com posse: construção, mutação, combinadores funcionais, iteradores e redutores por tipo de elemento para i32/f64/string/bool.
- Importação
- A struct
- Construção
- Acesso a elementos e mutação
HashMap & Set
Referência para as coleções HashMap<V> e StringSet com chave string da biblioteca padrão do Glide: insert, get, remove, snapshots de iteração (keys/values/entries), map_values e gerenciamento de tempo de vida.
- Import
- HashMap&lt;V&gt;
- StringSet
- Pair&lt;K, V&gt;
Iteradores
O módulo stdlib::iter — a trait Iterator, VecIter e os combinadores auxiliares ansiosos (map/filter/take/skip/fold/find/range/repeat) sobre Vector<T>.
- Importação
- Visão geral da superfície pública
- A trait Iterator
- Transformadores — retornam um novo *Vector<U>
Math
Referência de matemática da biblioteca padrão do Glide: funções float da libm (sqrt, pow, trigonometria, logaritmos), as constantes PI/E, e auxiliares inteiros/float em Glide puro (min/max/clamp, abs, sign, ipow, gcd, lcm).
- Import
- Visão geral da superfície
- Constantes
- Funções de ponto flutuante
Tempo
API de tempo da biblioteca padrão — spans de Duration, instantes Time com componentes civis e formatação, o Stopwatch monotônico, parsing RFC 3339 e os canais de timer after/tick.
- Importação
- Constantes
- Duration
- Time
Sistema de Arquivos & I/O
Referência da biblioteca padrão para stdlib::fs (arquivos, diretórios, caminhos, I/O binário) e stdlib::io (leitura de stdin/stdout/stderr por linha e por byte).
- Importação
- Lendo arquivos
- Escrevendo arquivos
- Existência, tamanho e tipo
OS
Identidade da máquina hospedeira e do processo — detecção de plataforma, IDs de processo, diretório de trabalho, caminho do executável, informações de hardware, diretórios padrão, verificação de TTY e um atalho de shell de uma linha.
- Import
- Catálogo completo
- Identidade da plataforma (tempo de compilação, infalível)
- Identidade do processo
Ambiente & argumentos de linha de comando
Ambiente por processo em programas Glide: acesso a argumentos de linha de comando, consulta/mutação/enumeração de variáveis de ambiente, expansão de variáveis e encerramento do processo.
- Importação
- Superfície pública resumida
- Argumentos de linha de comando
- Lendo variáveis de ambiente
Processo
Faça spawn e execute subprocessos com controle total sobre argv — capture stdout/stderr, defina variáveis de ambiente e diretório de trabalho, alimente stdin, transmita pipes em tempo real e inspecione códigos de saída e sinais.
- Import
- Visão geral
- Tipos de resultado e configuração
- Construindo um comando
JSON
Parseamento e emissão de JSON, a árvore JsonValue — construtores, navegação, acessores tipados, construção e o trait JsonBind.
- Importação
- Visão geral da superfície pública
- Constantes de tipo
- A struct JsonValue
Regex
stdlib::regex — um motor de expressões regulares estilo PCRE escrito em Glide puro: compile padrões, use match/search/find/replace/split, grupos de captura (numerados e nomeados), e a sintaxe suportada (classes, quantificadores, âncoras, retrorreferências, lookaround, flags).
- Importação
- Visão geral
- Compilando padrões
- Testando uma correspondência
Random
Geração de números pseudo-aleatórios na biblioteca padrão do Glide: o gerador Rng xorshift64*, seed determinística e via relógio, e auxiliares para valores brutos de 64 bits, inteiros não-negativos, intervalos delimitados, floats uniformes e cara ou coroa.
- Import
- Visão geral da interface pública
- O gerador Rng
- Construção
Codificação, criptografia e compressão
Referência de API dos módulos de codificação, criptografia e compressão do Glide — base64, hex, ByteBuffer, hashes SHA/HMAC, gzip inflate e extração de tar em memória.
- Import
- Visão geral da superfície pública
- base64
- hex
Logging
stdlib::log — logger estruturado com níveis: níveis de log, macros info!/warn!/error!, os tipos Logger/LoggerBuilder/LogSink/LogLine, campos estruturados, formatos de saída e configuração de sinks.
- Import
- Superfície pública em resumo
- Níveis, formatos, timestamps e tipos de sink
- Início rápido: o logger global
Sincronização
Primitivas de sincronização — Mutex<T>, Atomic e WaitGroup para proteger estado compartilhado entre corrotinas.
- Import
- Visão geral
- Mutex&lt;T&gt;
- Atomic
CLI: argparse & spinner
Blocos de construção para CLI — o parser de flags ArgParser (flags string/int/bool, formas curta e longa, posicionais, --help automático) e o spinner de progresso no stderr.
- Import
- Superfície pública em resumo
- argparse — visão geral
- Structs de valor de flag
Rede, HTTP & URL
A stack de rede completa do Glide — endereçamento IPv4/IPv6 e parsing de SocketAddr, resolução de DNS, cliente e servidor TCP, UDP com multicast IPv4, raw sockets e ICMP ping/traceroute, TLS 1.2/1.3 sobre OpenSSL, cliente WebSocket, um cliente HTTP/1.1 completo (cookies, forms, multipart, JWT, gzip), um servidor HTTP/1.1 com roteamento por método, extractors tipados, cadeias de middleware, CORS, arquivos estáticos, SSE e um reverse proxy, além de clientes HTTP/2 e HTTP/3 e codificação percent-encoding de URL.
- Import
- Mapa de módulos
- IP & endereços de socket — IpAddr
- Resolução DNS — resolve
E-mail (SMTP / IMAP / POP3)
Componha, envie e leia e-mails a partir do Glide — construa mensagens RFC 5322 com o tipo Mail, envie via SMTP (STARTTLS / SMTPS, autenticação PLAIN / LOGIN) e leia caixas de entrada via IMAP4rev1 ou POP3.
- Importação
- O tipo Mail
- SMTP — envio
- IMAP — leitura e marcação de mensagens
Sistema e ferramentas
Referência de sistema e ferramentas — tratamento tipado de sinais do SO, captura de stack trace em tempo de execução, a superfície AST de meta (compile-time) para autores de proc-macro, e os códigos de lint embutidos mais o helper lint_code.
- Import
- Sinais
- Backtraces
- Macros declarativas (macro name!)
Construindo aplicações
Juntando tudo: um serviço HTTP, depois testes e benchmarks para mantê-lo honesto.
Construindo serviços HTTP
Um guia completo sobre HTTP na stdlib::http do Glide: o servidor com corrotina por conexão (além de HTTPS e pools de workers), os tipos de requisição/resposta e o builder, roteamento com consciência de método, middleware, o DSL de atributos e handlers tipados, o catálogo completo de extractors, binding de JSON, streaming e SSE, arquivos estáticos e uploads, o cliente HTTP e os blocos de construção de baixo nível para HTTP/2, HTTP/3, JWT e proxy reverso — terminando em uma API CRUD funcional.
- Olá, servidor
- Servindo: http_listen, HTTPS e workers
- Requisições e respostas
- Roteamento com Router
Testes e benchmarks
Prove que seu código funciona e meça a velocidade de execução. Escrevendo arquivos *_test.glide, os macros de asserção, glide test, testes golden para programas completos e microbenchmarks com glide bench.
- Seu primeiro teste
- Os macros de asserção
- Executando a suíte
- As três camadas
Descendo o nível
Desça abaixo da linguagem — chame C, embuta C cru e escreva assembly inline.