Pular para o conteúdo

Ecossistema e design: o mapa

As partes 20, 21 e 22 da referência Deep Tech, item por item: o que virou código, o que virou página, e o que não existe — com o motivo.

As três partes que fecham a referência são as de síntese, e é exatamente aí que um documento começa a mentir: um desenho não roda, e uma lista de princípios nunca reprova.

A resposta aqui foi fazer as três derivadas do código e conferidas contra ele. Este mapa é o índice do resultado, item por item.

Parte 20 — arquitetura do ecossistema#

Item do desenhoEstadoOnde
dfc — Lexer, Parser, AST, HIRexistelexer.py, parser.py, ast_nodes.py, hir.py
dfc — Type Checkerexistetypechecker.py + superficie.py + resolucao.py
dfc — Borrow CheckerequivaleArcane.Posse + 3 códigos do check
dfc — MIR, Dataflow, LIRexistemir.py, ssa.py, lir.py
dfc — LLVM Backend`nao-existe`compilador.py — fechamentos, 1,5× a 1,8×
dfc — Code Generator`nao-existe`não há código de máquina
dfup — Version Manager`nao-existe`os instaladores; trocar versão é reinstalar
dfpm — Package Manager, Resolverexistepackages.py, registro estático
dfpm — Build Systemequivaleforge.toml + dataforge devops
dfpm — Workspace Manager`nao-existe`um forge.toml por pacote
Runtime — Allocator`nao-existe`Arcane.Memoria: arena e controle do coletor
Runtime — Scheduler, Event Loop, Asyncexistearcane_laco.py
Runtime — Thread Runtimeexistetravessia.py — 3,45× em 10 núcleos
Runtime — Error Runtimeexisteerrors.py, 177 códigos, idioma.py
Runtime — Bare-Metal`nao-existe`o runtime é o CPython
Tooling — os seteexisteLSP, fmt, lint, test, bench, profile, doc
(ausente) Debuggerexistedepurador.py + dap.py
(ausente) Execution Engineexisteinterpreter.py — o centro
Targets — Linux, macOS, Windows, ARMexiste4 plataformas construídas a cada tag
Targets — RISC-Vequivaleonde há CPython roda; não testado
Targets — WASMequivalerodar em, pelo Pyodide; compilar para, não
Targets — Bare-Metal`nao-existe`Arcane.Alvo descreve o que falta

O módulo: `Arcane.Ecossistema` · o comando: dataforge ecossistema · a conferência: conferir(), nas duas direções.

Parte 21 — princípios de design#

PrincípioVereditoO que a prova mediu
segurança por padrãoparcial8 capacidades; a escrita concorrente sai como aviso
custo zeronao-se-aplica3 de 3 sentinelas em None, 2 de 2 atalhos ligados
controle explícito de recursoscumpridoPosse com 16 símbolos, Memoria com 24, defer na linguagem
compile-time firstparcial4 de 4 erros de execução acusados antes de rodar
interoperabilidadecumpridoArcane.C com 23 símbolos; a ponte resolve
portabilidadeparcial6 alvos; 1 sem capacidade nenhuma
performance observávelcumprido8 de 8 comandos de medição presentes
extensibilidadecumprido81 reservadas contra 52 contextuais
runtime modularcumprido0 módulos carregados, 0 dependências externas
escalabilidade técnicaparcial5 componentes ausentes, nomeados

E as nove tensões, que são o conteúdo que uma lista de princípios nunca tem: onde dois se contradizem, qual venceu, o custo aceito e o arquivo onde a decisão mora.

O módulo: `Arcane.Principios` · o comando: dataforge principios · --tensoes para só as nove.

Parte 22 — visão de implementação#

ItemO que virouOnde
o desenho do pipelineas 10 fases como dado, na ordemArcane.Percurso.fases()
o caminho de um arquivoas fases medidas, com o que cada uma produziupercorrer() · dataforge percurso
o desenho em siimpresso, com as ausências no lugar delasdesenho() · --desenho
onde o real difere do desenho5 divergências, com o motivo de cadadivergencias()
Application / Servero interpretador, e os dois frameworks webKiln · Vitrine
Bare-Metal / Kernel / MCUnão existeas ausências

O que estas três partes ensinaram#

LiçãoComo apareceu
um mapa escrito à mão mente sem avisarconferir() pegou dois caminhos errados meus antes do primeiro teste existir: o arquivo se chama arcane_paralelo.py, e só a classe se chama ArcaneConcurrent
uma ferramenta que aponta a fase errada é pior que nenhumao lir marcava 93,8% num arquivo de 12 tokens: era o custo do import, não da fase. O total caiu de 7,3 ms para 0,5 ms e a resposta mudou de fase
um princípio que não se aplica é informação"zero-cost abstractions" não tem como valer sem compilação nativa. Redefini-lo em silêncio seria pior que marcá-lo nao-se-aplica e escrever a leitura que vale
a ausência precisa de lugar no mapaMachine Code e execucao continuam nos desenhos, marcados. Apagá-los faria o desenho parecer completo

As 22 partes da referência estão cobertas. O que existe está medido; o que não existe está nomeado, com o motivo — que é a única forma de um documento técnico continuar verdadeiro depois de publicado.