Pular para o conteúdo

Rationale

O racional de design

Por que a Makoto existe, e por que cada grande decisão foi tomada.

rationale.md · 1.254 linhas · 52 min de leitura

Os docs canônicos (language-design.md, language-grammar.md, official_libraries.md, extensions.md, tooling.md) dizem o quê Makoto é. Este conjunto diz por quê: por que a linguagem existe e por que cada decisão grande foi tomada. Não é tutorial nem referência de API. É o ensaio do raciocínio, minerado das sessões de design (o vai-e-vem real, as alternativas rejeitadas, as dores, as fricções aceitas).

Makoto redefine coisas que outras linguagens dão como dadas: memória, async, erros, ausência, concorrência, strings. Cada arquivo abaixo pega um desses conceitos e mostra a reescrita. O que é no mundo geral, como Makoto se posiciona, o argumento, por que não as alternativas, a dor concreta, e o modelo mental que o programador carrega.

# Documento A redefinição
00 Por que Makoto a tese: Rust vaza, Go funde, Makoto separa
01 Filosofia os modelos-raiz: opt-in, não-envenenamento, fronteiras, tiers
02 Memória colorless: o objeto carrega sua estratégia, sem lifetimes
03 Async e IO colorless: o processo suspende, sem async/await
04 Concorrência shared-nothing: atores + channels + supervisão
05 Erros erro é valor: Result + error-sets; sem ?, sem exceção
06 Ausência sem null, sem zero-value; ausência é tipada
07 Tipos largura arbitrária, decl unifica, satisfação estrutural
08 Comptime e reflexão metaprogramação é biblioteca, não mágica
09 Strings unidade explícita; comparar é método porque “igual” é ambíguo
10 FFI @cimport lê o header; todo C grita sob c.
11 Ecossistema e tiers estabilidade vem da arquitetura, e quem é dono da promessa
12 Nomes honestos o nome diz a verdade sobre a consequência
13 Verificação garantias como uma escada que você sobe uma obrigação por vez, nunca um modo em que você entra

Uma frase reaparece em cada decisão: “você só paga pelo que convoca” (o teste do opt-in). E uma imagem governa a arquitetura inteira. A linguagem é feita de subsistemas que se compõem porque nunca se mancham: async não colore o tipo, memória não vaza estratégia, FFI não polui o namespace. O nome Makoto (誠, “sinceridade/verdade”) não é decoração. É a tese encarnada, a recusa de esconder o custo de qualquer coisa. Por isso o doc é honesto sobre o que cada escolha custa (cada arquivo nomeia a fricção aceita), do mesmo jeito que o §1 do design doc.