01Roadmap

Sem datas falsas. Apenas estado.

O roadmap descreve o que existe, o que está sendo construído e para onde o projeto vai. Futuramente ele será alimentado diretamente pelo repositório.

Concluído

Disponível
  • Compiler foundation
  • Lexer
  • Parser
  • AST
  • Type system foundation
  • Semantic analysis
  • Kof IR
  • JVM backend
  • Native backend
  • classes
  • records
  • inheritance
  • interfaces
  • constructors
  • exceptions
  • generics
  • collections
  • string operations
  • control flow
  • kof build
  • kof run
  • kof serve
  • kof test
  • kof debug (MVP, JVM)
  • kof bench
  • kof.web — rotas e middleware (JVM)
  • kof.web — WebSocket RFC 6455 + SSE nativo (JVM, 0.2.6-beta)
  • kof.web — accept loop HTTP/1.1 no Native (WEB002 T1, 0.2.8-beta)
  • kof.db — JDBC + SQLite nativo + transaction {} commit/rollback real
  • kof.orm — entity, CRUD, migrate, MongoDB (JVM) + Query DSL tipada (ORM001)
  • kof.log nativo
  • kof.config — arquivo > env > profile, tipado, interpolação ${key} (3 targets)
  • kof.mq — pub/sub (3 targets, MQ001 fechado)
  • cliente HTTP (JVM+JS+Native; no Native HTTP/1.1 asm — https/DNS ficam gaps)
  • kof.security v1 (JVM, Native e JS)
  • web security G9 — rateLimit, sessões e API keys (3 targets)
  • TLS/HTTPS — web.listenSecure na JVM (WEB002 fora dela)
  • kof.validation — 13 predicados (3 targets)
  • kof.observability — health, métricas e request IDs (3 targets)
  • kof.ui — widgets com render KofJS
  • spawn na JVM (virtual threads)
  • await de spawn — handle tipado (JVM)
  • concórrencia real no JS — async/await/Promise (CONC003 fechado, 0.2.8-beta)
  • enum nos 3 targets + switch exaustivo (SEM031)
  • Map/Set nos 3 targets — COL001 fechado
  • otimizador de IR sempre ativo + kof bench com baselines (37 benchmarks)
  • KofScript — Kof puro no MESMO frontend via KofInterpreter (sem bytecode, sem fork; let/const/fn → PARSE085)
  • KofCcompiler — C subset → ELF x86_64 (kof c, nativo-only)
  • kof.process — execução de processos externos
  • process.spawn — stdout vivo + handle ops (readLine/exitCode/kill/alive); stdin /dev/null, write é no-op honesto (F10 fechado: JVM+JS+Native x86+cross; só MCU/riscv32 PROC001)
  • kof fmt — formatador via parser real (KofFormatter, idempotente)
  • sobrecarga de construtores
  • widening de return
  • LSP com hover/completion + diagnostics reais + references + rename
  • Native GC — free-list kof_free_head + kof_gc_collect (mark-sweep real, 0.2.8-beta)
  • Ponto flutuante real no Native — FP em XMM (FLT001 fechado)
  • Pattern matching — switch com tipos e destructuring (case String s, case Point(x,y)) nos 3 targets (0.2.0-beta)
  • Null safety básica — String? com ?-check em compile-time (0.2.0-beta)
  • Higher-order em coleções — List map/filter/reduce nos 3 targets (0.2.0-beta)
  • Módulos multi-arquivo — import a.b.C com fix para projetos grandes (a/b/C.kf) (0.2.0-beta)
  • switch-expressão (SYN001) — case ... -> produzindo valor nos 3 targets (0.2.8-beta)
  • readLine → String? (null no EOF)
  • String.lastIndexOf
  • File.readRange(offset, len)
  • application {} lifecycle (onStart/onShutdown)
  • W3C spans com timing (spanStart/spanEnd) nos 3 targets
  • kof.log no JS (LOG001 fechado)
  • time no Native (TIME001 fechado, time.interval/cancel)
  • observability histogram/metrics no Native (OBS002, asm puro)
  • package manager MVP — kof deps (kofdeps, Maven Central, --deps)
  • MySQL prepared statements binário (COM_STMT_EXECUTE)
  • riscv64/aarch64 codegen real — stdlib (NATIVE002); SQLite cross FECHADO 15/09 (RtB46/RtB47, libsqlite3 link-by-use sob qemu); DB001 só em schemes sem wire (mysql/mongo)
  • NATIVE002-stdlib — JSON, HTTP, spawn/await, String methods, kof.random, encoding, net.*, uuid (19/19+ qemu)
  • validation + observability em asm puro no Native
  • kof.math — Double completo nos 5 alvos (MATH001 fechado: sqrt/lerp/percentage/isInteger/isDecimal/roundTo/pow/parseOrDefault)
  • kof.time — todayIso/formatDateIso/addDays/diffDays/isWeekend/tzOffsetSeconds nos 5 alvos (TIME002 fechado)
  • kof.uuid — v4 + v7 time-ordered (RFC 9562) nos 5 alvos
  • kof.validation — isNis/isCpf/isCnpj/formatCep com pontuação BR (4-5 alvos)
  • kof.security — crypto.chacha20 (RFC 8439, JVM+JS), TLS com certificado próprio, cookies secure (C11)
  • kof.media — Image/Audio/Mic/Video + app.serveDir com Range requests (206/416), JVM
  • kof.supervisor — OTP core puro-Kof (restart, limits, stop cooperativo): JVM+Script+Native x86 (15/09) + cross (19/09) + JS (18/09) — OTP001/OTP002 removidos
  • kof.web no KofJS — servidor real via GraalJS HttpServer + KofJsWebQueue (WEB001 básico fechado 03/09) + fetch async (spawn http + await, §133)
  • app.security() — middleware composto (rate-limit→CORS→headers→session→CSRF→auth→RBAC) + OAuth2 resource server (JVM)
  • overloading — top-level (SG-011B) e de método por assinatura nos 4 backends (SEM047/SEM057/SEM061)
  • null safety ampliada — Map.get→V?, narrowing em while/campo (D-NARROW-WHILE), SEM048/SEM049
  • pattern matching com guardas (case T v if cond, SG-014)
  • Long = BigInt no JS (paridade real de 64 bits, decisão 5b)
  • GC mark-sweep no Native + runtime pruning por alcançabilidade (hello x86 627→37 símbolos, 32.5KB; kof build --print-sizes)
  • kof new — esqueletos por tipo (mono/backend/frontend/full-stack) + kof build --fat (JVM)
  • print heterogêneo em if/switch-expression (97d08e54, 0.4.1)
  • KofAndroid — Fase 1 (projeto Maven + host em Kof) e Fase 2 (--apk standalone + release signing, AND001 fechado)
  • concorrência completa — awaitTimeout, cancel cooperativo, selectAny, channel<T>, scheduler every/cancel nos 3 targets (at(cron) real só JVM+JS — CRON001 no Native)
  • kof.strings — escapeJson/unescapeHtml, word converters, isAlpha/isNumeric, pad/repeat (5 alvos)
  • kof.encoding — base64, base64Url, hex, urlEncode/urlDecode (5 alvos; ENC002 fechado)
  • kof.validation — isCpf/isCnpj/isCep, isIpv4/isIpv6, isDomain, Luhn (4-5 alvos)
  • kof.time — isLeapYear/daysInMonth/dayOfWeek/daysBetween (4-5 alvos)
  • kof.random — randomInt/randomBoolean (5 alvos, S10a)
  • kof.net — URI parse + fetch (NET001 fechado, 6 alvos)
  • kof.uuid no cross riscv64/aarch64 (gate UUID001 removido, 10/09)
  • arrays multidimensionais new T[a][b] (KofNewMultiArray — MULTIANEWARRAY JVM/JS/Interpreter)
  • releases multiplataforma
  • GC auto-collect no Native (§260 G-6a, 19/09)
  • package registry MVP — publish + pull (D2-A, 19/09)
  • SQLite em todos os targets (cross 15/09), MySQL/MariaDB wire em JVM + Native x86-64 e ORM cross sobre SQLite — MongoDB real só JVM/Android, DB001 declarado no JS/Native (0.5.0-beta, 27/09)
  • motores interop KofPy/KofR + timeout/cancel/JVM-x86-JS-Script-cross (0.5.0-beta, 27/09)
  • memory-safety: ownership pass + O-03 clear-null; Kofmd + kof md check/format (0.5.0-beta, 27/09)
  • secrets + makealive; LSP 32 namespaces; FFI structs ABI + callbacks JS (0.5.0-beta, 27/09)
  • supervisor OTP em todos os Native; multiarch GC/dtoa/canais/io/ssh/time/pow (0.5.0-beta, 27/09)
  • tree-shaking + workflow runner + debug info DWARF cross (0.5.0-beta, 27/09)
  • 0.5.0-beta finalizada e mergeada em main (27/09)
  • sealed + switch exaustivo (SEM080/SEM081) nos 3 backends (0.6.0, 11/10)
  • variância out/in em declaração + projeção use-site List<out T>/List<in T> (SEM082) (0.6.0, 11/10)
  • reflexão de fronteira interop.schema(R) — intrínseco compile-time, zero reflexão em runtime (0.6.0, 11/10)
  • memory-safety M1 completa: callbacks FFI no Native x86-64 E cross riscv64/aarch64 via trampoline gerado (0.6.0, 11/10)
  • GC cross riscv64/aarch64: 3 defeitos de reclaim corrigidos (§602) — KofGcE2ETest 8/0F (0.6.0, 11/10)
  • math.pi()/e()/tau() fold para literal double — fecha COMP001 no link Nativo; golden math-pow-constants 54 cases 216/216 (0.6.0, 11/10)
  • kof.ui accessibility: superfície intent-based + defaults automáticos por widget (#789) (0.6.0, 11/10)
  • kof.net front de sockets (listen/accept/connect/send/receive/UDP) real no cross riscv64/aarch64 — NET002 aposentado (02/10); recusado em JS v1 (NETN001, honesto em compile-time) (0.6.0)
  • auto-cascade por commit: lab→testing→stable→prerelease com guard fail-closed (11/10)
  • 0.6.0 oficial: mergeada em main (#806), releases finais nas 4 plataformas, Latest live (11/10)

Em desenvolvimento

Em desenvolvimento
  • Standard Library (contratos em estabilização)
  • Package manager além do MVP (registry)
  • Debugger — além do MVP JVM (DAP sobre stdio já no JVM; JS source maps V3 linha ✅, DWARF Native linha ✅ parcial — variáveis/expressões e breakpoints nativos pendentes + VS Code ext)
  • KofJS — plataforma web no browser (ES Modules via GraalJS); web server base ✅ (HttpServer + KofJsWebQueue); residual ws/sse/TLS/path params (WEB001)
  • kof.web no Native — residual WEB002: TLS, path params, keep-alive, ws/sse
  • kof.db/orm no JS — DB001/ORM001 (WASM planejado)
  • Kof WASM/WASI — lane ativa (wasm-wasi-plan.md): stdout, args, String e record toString on WASI; igualdade de records, nested e coleções em fatia
  • FFI: callback com retorno String (FFI001), structs com HFA no cross, variadics (3.5)
  • Decompiler (Java → Kof) — deprioritizado pelo mantenedor; meta atual é estabilizar a release

Planejado

Planejado
  • Language Reference — gramática, tipos e semântica já em docs/language-reference/ (evoluindo)
  • Conformance suite — embrião nos E2E por target; suite formal futura
  • Full web platform (frontend declarativo + routing/forms/SSR)
  • gRPC no kof.web — app.grpc + stubs de .proto, unary + server streaming (JVM primeiro)
  • OpenTelemetry — export/propagação completa (tracing leve W3C já entregue)
  • Auto-hospedagem (compilador escrito em Kof)
  • MCU / riscv32 (gaps honestos nomeados)
02Versionamento

MAJOR.MINOR.PATCH — e o pontinho da vergonha.

A regra de evolução é simples: major releases > major fixes > bugfixes. A primeira release estável, a 0.1.0, já foi lançada — a 0.5.0-beta foi mergeada em main (27/09), a 0.6.0 é release oficial (11/10) e o PATCH continua subindo bastante.

MAJOR.MINOR.PATCH

O PATCH é, por enquanto, o pontinho da vergonha: pequenas correções, ajustes e estabilização enquanto a linguagem ainda está na fase inicial. Ele sobe bastante. Faz parte.

Automação de release — landed

Desde 11/10 cada push na lab dispara o auto-cascade: avaliação automática lab→testing→stable→prerelease com guarda fail-closed (só promove o que foi medido). O corte da 0.6.0 já rodou nesse pipeline.

Ver releases →