Historico de Versoes
Changelog Artcode
Resumo tecnico das versoes com foco em runtime, linguagem e tooling.
v0.5.0 Lançado 2026-05-27
ArtKit v0.1: componentes reativos sem virtual DOM, sistema de dependências em compile time, scheduler assíncrono, lifecycle hooks, Deque<T> no prelude, TTD delta snapshots, DAP mínimo e guia de migração. 53/53 itens do roadmap v0.5 — feature-complete.
1. Componentes Reativos — Bloco B
- 6 novos tokens no lexer:
component,view,state,prop,memo,ref. - AST:
Stmt::ComponentBlock,Stmt::QualifiedBinding,enum BindingQualifier. - Parser:
component Name { state x: T = expr; view { <template> } }. - Type checker: 4 regras de diagnóstico — prop imutável, memo possivelmente stale, state fora de escopo, ref em view.
2. ReactivityPass e Grafo de Dependências — Bloco D
- Novo crate
reactivity:DepGraphcom nósSource/Derived/Sinke arestas tipadas. ReactivityPass::analyseconstrói DAG a partir deComponentBlock.- Tarjan SCC para detecção de ciclos em memos — erro em compile time com mensagem clara.
- Codegen:
set_X(v)recomputa memos em ordem topológica e atualiza apenas os text nodes afetados.
3. Runtime UI: Scheduler e Lifecycle — Bloco E
JS_RUNTIMEexpandido: scheduler__schedule/__flushviaqueueMicrotask,tick(fn).- Lifecycle registry:
on_mount,on_destroy,on_update. - Helpers DOM:
dom.create,dom.text,dom.append,dom.set_attr,dom.set_text,dom.remove,dom.on,dom.off,dom.query.
4. ArtKit v0.1 — Bloco F
examples/artkit/counter.art— Counter comstate counte eventoon:click.examples/artkit/todo.art—TodoItemeTodoListcom state e props.art build --bundle examples/artkit/counter.artgera bundle autocontido.- Guia
docs/guides/artkit_quickstart.md; CI smoke testartkit-smoke.
5. Stdlib, TTD e Tooling — Bloco G
Deque<T>no prelude:deque_new,deque_push_front,deque_push_back,deque_pop_front,deque_pop_back,deque_len.- TTD delta snapshots:
Tracer::record_deltaarmazena apenas chaves alteradas. - DAP mínimo:
art debug --dapemite eventosinitialized/stopped/terminatedpara editores DAP. art doc <path>gera HTML emdocs/generated/<name>.html.docs/guides/migration_v0.4_to_v0.5.md— breaking changes e guia de migração.
v0.4.0 Lançado 2026-05-27
Primeiro passo para o ArtKit: compilação para JavaScript com bundler completo, parser de templates ArtML com diagnósticos integrais, type checker estático, debug shell interativo, stdlib de strings, LSP completo e robustez (fuzzing, property tests, CI regression detector). 71/72 itens do roadmap v0.4 — feature-complete.
1. Codegen JavaScript + Bundler
- Novo crate
crates/codegen_js— transpila AST Artcode para JavaScript ES2022. - Mapeamentos:
let→const,func→function,struct→class,enum→ tagged union,match→ if-else com bindings,spawn actor→ Web Worker,performant {}→ IIFE,import→ ES modules. - Comando
art build <file.art> --target js --out dist/ --sourcemap. - Source maps V3 com VLQ encoding — erros em runtime apontam para o
.artoriginal no DevTools. --bundle: resolve imports recursivamente, emite runtime preamble JS (println,str_*,len, etc.) + todos os módulos inline em arquivo único. Output autocontido para Node.js e browser.- CI verifica o bundle com
nodea cada push (node-smoke-test).
2. Stdlib de Strings
- 8 novos builtins:
str_split,str_join,str_contains,str_starts_with,str_replace,str_slice,str_to_int,str_to_float. str_slicesuporta índices negativos (contagem do fim).str_to_intestr_to_floatretornamResult<T, String>— sem panics.
3. TTD Debug Shell
art debug --replay trace.artlog script.art— abre shell interativo de time-travel debugging.step/step-back— avança ou recua no tempo;continue— executa até o próximo breakpoint.state— exibe todas as variáveis com valores (filtrando builtins);state-at <tick>— salta para tick específico.mailbox— inspeciona mailboxes e status dos atores;breakpoint <line>— pausa na linha especificada.- Breakpoints são persistentes entre restarts do replay.
4. Parser ArtML
- Templates declarativos embutidos na linguagem — sem pré-processador externo.
- Sintaxe:
<div class="x">,<input value={expr} />,<button on:click={handler}>,<Counter />(componente PascalCase),<if cond={x}>,<for item in {items} key={id}>,<slot name="header">. - Nenhum token novo no lexer —
<em posição prefix é inequivocamente início de template (Pratt parser). - Codegen: templates → IIFE com
document.createElement,setAttribute,addEventListener,createTextNode,createDocumentFragment. - Diagnósticos completos: tag sem fechamento →
error;<for>semkey→warning;on:click={expr_nao_callable}→lint error: not callable; componente PascalCase sem import/struct →parse error: not imported or defined. - 26 testes (14 parser + 10 codegen + 2 typeck).
5. Type Checker Estático
- Novo crate
crates/typeck— verificação de tipos em compile time, integrado ao pipelineart build --target js. - Inferência local:
let x = 42→x: Intrastreado no escopo sem anotação explícita. - Verificação de chamadas:
func f(x: Int)rejeita argumentoStringcom diagnóstico claro antes do codegen. - Inferência paramétrica:
func identity<T>(x: T)infereT = Intna chamada com inteiro; sem anotação manual.
6. LSP — Completion, Hover, Goto-Def e Rename
textDocument/completion— builtins (~50), variáveis em escopo, funções, structs e enums com kind LSP correto (function=3, struct=7, enum=13, variable=6).textDocument/definition— goto-def paralet, funções, structs, enums e imports, incluindo arquivos não abertos no editor.textDocument/rename— renomeia símbolo em todos os arquivos do workspace.- Hover com assinatura real de função (
func f(x: Int) -> String) e campos de struct/enum. textDocument/semanticTokens/full— highlight semântico (tipos, funções, variáveis).- Arquitetura refatorada:
process_requestretornaOption<Value>tornando o servidor testável sem IDE. 6 smoke tests de harness JSON. - Guias de configuração em
docs/guides/lsp_vscode.mdedocs/guides/lsp_neovim.md.
7. Robustez — Fuzzing, Property Tests e Regression Detector
- Novo fuzz target
interpreter_valid— executa o interpreter apenas em programas sem erros de parse, complementando oparser_loopsexistente. Ambos rodam 60s por push no CI. - 9 property tests de round-trip
parse(format(src)) == parse(src)incluindo idempotência do formatter. - 2 stress tests de arena: N atores com
performant {}e 100 iterações de alloc/finalize sem panics. - Detector de regressão no CI (
scripts/perf_regression.sh): medeexecuted_statements/sde fib(20) contra baseline; falha se a taxa cair abaixo de 50k stmt/s.
v0.3.0
Maturidade do interpretador, novas features de linguagem e qualidade de diagnósticos.
1. Novas features de linguagem
impl Type { }— syntax para agrupar métodos por tipo, equivalente aofunc Type.method(self)existente. Totalmente retrocompatível.- Generics com constraints em runtime —
func foo<T: Numeric>(x: T)valida o tipo do argumento na chamada e emite diagnóstico claro em caso de violação. SuportaNumeric,Eq,HasheComparable. ArtValue::type_name()— reflexão de tipo em runtime disponível para todos os valores.
2. Diagnósticos com localização
- Erros de builtins agora reportam a linha e coluna exatas do call site — antes mostravam sempre
(0:0). call_spanpropagado automaticamente a partir do token de field-access (x.unwrap(),val.ok(), etc.).- 81 handlers de builtin atualizados.
3. REPL melhorado
- Exibe
=> valorpara expressões avaliadas, sem ruído de métricas por linha. - Saída
[metrics]e[mem]movida para modo script apenas.
4. Saúde do código
interpreter.rsreduzido de 6.734 → 1.715 linhas por extração de 7 módulos coesos:builtins,actors,cycle_detection,gc,exec,eval.- 6
unwrap()encadeados no actor scheduler substituídos porexpect()descritivo. - Panics em I/O (
aot.rs,lsp.rs,main.rs) corrigidos.
5. Documentação reorganizada
docs/reorganizada emlanguage/,internals/,guides/erfcs/.- Numeração de RFCs duplicadas corrigida (0006, 0007, 0008).
- Roadmap reescrito refletindo o estado real de v0.2 e metas de v0.3/v0.4.
v0.2.0
Versão consolidada com runtime multicamada, segurança de memória e infraestrutura de perfil.
1. Concorrência / Atores (RPC local)
O core do modelo de atores foi estabilizado com semântica clara para envio e recebimento de mensagens.
spawncria ator isolado e retorna handle seguro.actor_send(actor, payload): não-bloqueante, retornatrue/falsepor limite de mailbox.actor_receive()eactor_receive_envelope(): padrões de consumo sem polling ativo.- Agendamento cooperativo round-robin com yield implícito entre atores.
- Resiliência ativada: backpressure + diagnóstico de limit/overflow.
2. Performant & Arenas
Consumo controlado de memória para workloads intensivos.
performant { ... }ativa a arena temporária de curta duração.arena_new(size),arena_with(size, fn)earena_releaseexpõem ciclo de vida.- Escape analysis identifica atribuições que violam arena scope (retorno, var externa, store global).
- Finalizers de arena promovem objetos para heap quando necessário, com métricas de
finalizer_promotions_per_arena.
3. IPC + Serialização
Transmissão binária entre processos com tipos opacos e checagens contra corrupção.
- Schema de mensagem binária para IPC (payload + meta) em
idl_schema. - Capability tokens move-only: evita reuso indevido e uso após free.
- Extensão de mailbox para
actor_set_mailbox_limite retorno de status sem crash.
4. FFI seguro
Gateway exposto para C/Rust/WASM, com clareza de ownership.
art_handle_create_i64,art_handle_retain,art_handle_release.art_handle_string_to_cstr+ cache/release para strings sem leaks.art_syscall_unsafecontinua existindo mas com doc explicando restrições de sandbox e safety.
5. Time-Travel + PGO
Depuração determinística + fluxo de build otimizado.
art run --recordcaptura checkpoints/keyframes.art run --replayreproduz exatamente o estado, útil para regressão e tuning.art run --gen-profilegera dados PGO;art build --release --use-profileaplica otimizações.- Pipeline de comparação warmup vs PGO documentada em
artifacts/perf.md.
6. Atualizações de documentação e qualidade
- Todos exemplos sincronizados em
website/examples.html(49 casos principais, com variantes de histórico no repositório). - Checklist v0.2.0 alinhada e marcada como concluída, incluindo testes
cargo test --all. - Correções de robustez:
actor_http_runtimee escapes deperformantque causavam panics resolvidos.
Checklist rápida de validação
Antes de publicar uma release, valide localmente estes comandos para manter o changelog confiável.
cargo test --all bash scripts/devcheck.sh bash scripts/perf_compare.sh art run --record examples/44_ttd_keyframes.artlog examples/44_ttd_keyframes.art
v0.1.x
Fundação da linguagem com sintaxe, semântica e tooling básico.
- Structs, enums, pattern matching com guards.
- Loops nativos, tuplas e tratamento de erro explícito com Result e Option.
- LSP base: autocomplete, goto-definition e rename multi-arquivo.
- Sintaxe shell e stream pipelines integrados.
- Prelúdio e stdlib iniciais: println, len, type_of, map/set, math e IO sandboxed.
Como contribuir no changelog
1. Atualize CHANGELOG.md com secoes Added/Changed/Fixed/Docs 2. Referencie exemplos e docs impactados 3. Rode testes e scripts de smoke 4. Atualize esta pagina com os highlights da release