01Targets

Uma linguagem. Vários mundos.

O mesmo frontend de linguagem alimenta todos os backends. O código não muda porque o target mudou.

JVM

Disponível

Integração com o ecossistema Java e execução na JVM.

Kof
 ↓
Kof Compiler
 ↓
Kof IR
 ↓
JVM Backend
 ↓
.class
 ↓
JVM

O backend JVM gera bytecode diretamente. Java é uma plataforma de interoperabilidade, não uma linguagem intermediária.

Native

Disponível

Binários nativos sem exigir que o programador gerencie memória manualmente.

Kof
  ↓
Kof IR
  ↓
Native Backend
  ↓
Executable

ELF x86-64 — runtime asm próprio, sem libc no caminho base; FFI/process/dtoa ligam libc sob demanda (por uso). GC com free-list kof_free_head + kof_gc_collect mark-sweep real + auto-collect + runtime podado por alcançabilidade ( kof build --print-sizes). FFI extern com callbacks nativos via trampoline gerado kof_cb_tramp_<desc> (M1 completa, 11/10 — só callback com retorno String segue FFI001).

Script — KofScript

Disponível

KofScript (.ks, REPL) — target de execução direta: Kof puro no MESMO frontend, executado pelo KofInterpreter (IR) sem emitir bytecode nem fork de JVM. Não é JavaScript — let/const/async/fn não existem (dão PARSE085).

Kof (.ks)
  ↓
 Kof IR (MESMO frontend)
  ↓
 KofInterpreter (sem compilar)
  ↓
 Execução direta

Web — KofJS

Disponível
Kof
  ↓
 KofJS
  ↓
 ES Modules (ECMAScript 2022+)
O mesmo frontend e a mesma Kof IR geram ES Modules executados na engine JS embarcada (GraalJS — sem Node.js nem runtime externo). Classes, herança, List, JSON, exceções, kof.io, kof.time, kof.http com fetch async real (spawn + await), servidor web embutido (HttpServer via GraalJS + KofJsWebQueue — WEB001 básico fechado 03/09), Long como BigInt e concorrência real via async/await/Promise (CONC003) já funcionam. Residual: ws/sse/TLS/path params (WEB001). A plataforma web no browser é a próxima fase.

Native — riscv64 / aarch64

Disponível

native.risc (riscv64) e native.arm (aarch64) — codegen real em asm puro + stdlib sob qemu (JSON, HTTP, spawn/await, String, io, db (SQLite real no cross desde 15/09)/orm, GC/dtoa/canais; MySQL/MariaDB wire só no x86-64 — cross recusa DB001 com honestidade, assim como schemes sem wire). kof.media é JVM-only (MEDIA001/003). Três defeitos de reclaim do GC cross corrigidos 11/10 (§602); callbacks FFI cross via trampoline (mesma fonte roda JVM, riscv64 e aarch64 byte-for-byte); MCU/riscv32 planeado.

Kof IR
  ↓
 NativeBackend (riscv64/aarch64)
  ↓
  ELF (qemu)
  ↓
  qemu

KofC — C subset

Disponível

kof c — subset de C (int globals, void funcs, if/while/*(int*)/&) → ELF x86-64/riscv64/aarch64 (C1–C4 cross).

C subset
  ↓
KofCcompiler
  ↓
ELF x86_64
  ↓
Native

Android

Disponível

Variante do backend JVM: kof build --target android gera projeto com host em Kof; --apk standalone (aapt2/d8/zipalign/apksigner direto da CLI) + release signing com --keystore. spawn usa platform threads (ART sem virtual threads — AND001 fechado); a UI roda no WebView KofJS. Gaps AND00x nomeados em compile-time.

Kof IR
  ↓
JvmBackend (release 21)
  ↓
APK
02Posicionamento

Kof não é um transpiler.

Não existe uma etapa em que Kof vira Java e depois pede ajuda ao javac.

o que Kof não é
Kof → Java → javac → JVM
o que Kof é
Kof
 ↓
Compiler
 ↓
Kof IR
 ↓
Backend
 ↓
Target
03Memória

Você escreve código. O runtime cuida da memória.

O código Kof não deve mudar apenas porque foi compilado para Native. Nada de malloc, free, ponteiros ou lifetimes manuais.

user.kf
class User(
String name
)
main() {
var user = User("Mel")
println(user.name)
}

JVM

Disponível
Utiliza o garbage collector da JVM.

Native GC

Disponível
GC nativo com free-list e kof_gc_collect (mark-sweep real) + runtime podado por alcançabilidade. A abstração de memória pertence à plataforma.