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ívelIntegraçã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ívelBinários nativos sem exigir que o programador gerencie memória manualmente.
Kof ↓ Kof IR ↓ Native Backend ↓ Executable
O backend nativo gera ELF x86-64 diretamente (syscalls próprias, sem libc obrigatória). O GC nativo ainda está em desenvolvimento.
Script
PlanejadoExecução direta para scripts e automações, usando exatamente a mesma linguagem. O runtime dedicado ainda não foi implementado — hoje, kof run já cobre o fluxo compilando antes de executar.
Web — KofJS
Em desenvolvimentoKof ↓ KofJS (alpha) ↓ ES Modules (ECMAScript 2022+)
02Posicionamento
Kof não é um transpiler.
Não existe uma etapa em que Kof vira Java e depois pede ajuda ao javac.
Kof → Java → javac → JVM
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ívelUtiliza o garbage collector da JVM.
Native GC
Em desenvolvimentoNative terá gerenciamento de memória próprio. A abstração de memória pertence à plataforma, não ao usuário.
