v0.6.0em desenvolvimento ativoGPLv3

KofUma linguagem. Um compilador. Vários mundos.

Menos código. Mais intenção. Uma linguagem moderna, estaticamente tipada, que compila direto para JVM, binário nativo e web.

user.kf
record User(String name, String email)
sealed class Shape
class Circle extends Shape {
Int r
public constructor(Int r) {
this.r = r
}
}
class Square extends Shape {
Int side
public constructor(Int side) {
this.side = side
}
}
String describe(Shape s) {
return switch (s) {
case Circle c -> "circle"
case Square q -> "square"
}
}
main() {
var user = User("Mel", "mel@example.com")
println(user.name())
println(describe(Circle(2)))
}
terminal
$ kof run user.kf
$ kof build user.kf --target native
01Identidade

Kof é uma linguagem geral, fortemente tipada e estaticamente tipada, criada para reduzir drasticamente a complexidade necessária para construir software moderno.

Compilador próprio: lexer, parser, AST, sistema de tipos, análise semântica, resolução de símbolos, IR própria, múltiplos backends, runtime e biblioteca padrão em evolução.

a ideia fundamental
Fonte Kof
     ↓
Compilador Kof
     ↓
Kof IR
     ↓
 ┌───┼───────────┬───────────┐
 ↓   ↓           ↓           ↓
JVM Native     Script       Web

A linguagem não muda quando o target muda.
02Posicionamento

Kof não é um transpiler.

Não existe uma etapa em que Kof vira Java e depois pede ajuda ao javac. O compilador possui frontend, sistema de tipos, IR e backends próprios — e gera bytecode e código nativo diretamente.

o que Kof não é
Kof → Java → javac → JVM
o que Kof é
Kof
 ↓
Compilador Kof
 ↓
Kof IR
 ↓
Backend
 ↓
Target
03A grande ideia

O problema não é programação. É a quantidade de coisas que precisamos fazer para programar.

software tradicional
HTTP
↓
framework
↓
controllers
↓
services
↓
repositories
↓
ORM
↓
DTOs
↓
serializers
↓
injeção de dependência
↓
configuração
↓
bibliotecas de mensageria
↓
APIs assíncronas
↓
boilerplate
kof
intenção
↓
Kof
↓
compilador + runtime + stdlib
↓
software
Complexidade deve ser resolvida pela linguagem quando puder ser resolvida pela linguagem.
Não queremos esconder complexidade atrás de abstrações infinitas. Queremos eliminar complexidade desnecessária.
04Princípios

A filosofia Kof

Menos código

Menos cerimônia sem remover capacidade.

Tipagem forte

Erros importantes devem ser encontrados no compile-time.

Humano primeiro

A linguagem deve ser fácil de ler e escrever.

Um frontend

A linguagem não muda entre targets.

Compilação direta

Kof IR vai diretamente para o backend correspondente.

Complexidade pertence à plataforma

Se compiler, runtime ou stdlib resolvem, o usuário não reimplementa.

Sem mágica desnecessária

Abstração boa reduz complexidade real. Abstração ruim só esconde.
05Humano primeiro

Boilerplate não é uma feature.

Kof é projetada primeiro para seres humanos. A sintaxe deve representar intenção: se o compilador entende sem vinte linhas de cerimônia, vinte linhas de cerimônia não deveriam existir.

Cerimônia tradicional

User.java
public final class User {
private final String name;
private final String email;
public User(String name, String email) {
this.name = name;
this.email = email;
}
public String name() {
return name;
}
public String email() {
return email;
}
}

Intenção

User.kf
class User(
String name,
String email
)

Menos código não significa menos capacidade.

06LLMs

Feita para humanos. Naturalmente amigável às máquinas.

Kof não é uma “AI language”. A filosofia continua humana primeiro. Mas sintaxe pequena, semântica explícita, baixo boilerplate, APIs padronizadas e documentação estruturada têm uma consequência importante: a linguagem também fica muito mais fácil de compreender por ferramentas automatizadas e modelos de linguagem.

/training no repositório
training/
├── language/
├── reference/
├── patterns/
├── anti-patterns/
├── migration/
└── examples/

Corpus oficial para ferramentas

Padrões idiomáticos documentados, anti-patterns documentados e exemplos executáveis — para que ferramentas não “adivinhem” como a linguagem funciona.

Menos tokens para expressar a mesma intenção.

Sem prometer benchmarks de tokens ou superioridade de LLM sem dados reais. A mensagem é estrutural, não marketing.
Abrir /training no GitHub →
07Targets

Uma linguagem. Vários mundos.

O mesmo frontend alimenta todos os backends. Targets em desenvolvimento estão explicitamente marcados como tal.

JVM

Disponível
Kof
  ↓
 Kof IR
  ↓
 bytecode JVM
  ↓
 JVM

Integração com o ecossistema Java e execução na JVM (bytecode V21 via ASM). O backend gera bytecode diretamente — Java é plataforma, não linguagem intermediária. Android é variante deste backend (--target android + --apk).

Native (x86_64)

Disponível
Kof
  ↓
 Kof IR
  ↓
 Backend nativo (x86_64)
  ↓
 Executável ELF

Binários ELF sem exigir que o programador gerencie memória manualmente. GC free-list + mark-sweep real (kof_gc_collect) com auto-collect ligado; runtime podado por alcançabilidade — hello em 32.5KB; FFI com callbacks nativos por trampoline gerado.

Native (RISC-V/ARM64)

Disponível
Kof
  ↓
 Kof IR
  ↓
 Backend nativo (riscv64/aarch64)
  ↓
 ELF (qemu)

Targets nativos riscv64 (native.risc) e aarch64 (native.arm) — codegen real em asm puro + qemu. Stdlib JSON, HTTP, spawn/await, String, io, db/orm (SQLite), GC/dtoa/canais (19/19 qemu); três defeitos de reclaim do GC cross corrigidos 11/10 (§602); callbacks FFI cross via trampoline (M1 completa). kof.media é JVM-only (MEDIA001/003 nomeados no cross).

KofScript

Disponível
Kof (.ks)
  ↓
 Kof IR (MESMO frontend)
  ↓
 KofInterpreter (sem bytecode)

Target de execução direta: Kof puro no MESMO frontend, executado pelo interpretador da IR (KofInterpreter) sem compilar e sem fork de JVM. Não é JavaScript — let/const/async/fn não existem.

Web — KofJS

Disponível
Kof
  ↓
 KofJS
  ↓
 JavaScript (GraalJS)

O mesmo frontend e a mesma Kof IR geram ES Modules (ECMAScript 2022+) executados na engine JS embarcada (GraalJS). Concorrência real via async/await (CONC003), kof.http com fetch async real (spawn + await), servidor web embutido (HttpServer GraalJS + KofJsWebQueue), Long como BigInt.

Android

Disponível
Kof
  ↓
 Kof IR
  ↓
 JvmBackend (release 21)
  ↓
 APK

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. spawn usa platform threads (ART sem virtual threads — AND001 fechado); a UI roda no WebView KofJS.

KofC

Disponível
C subset (.c)
  ↓
 KofC compiler
  ↓
 ELF x86_64

Subset C (int globals, void funcs, if/while, deref &/*) → ELF x86_64/riscv64/aarch64 via kof c (C1–C4 cross).

Detalhes de cada target →
08Memória

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

O código Kof não muda porque o target mudou. Nada de malloc, free, ponteiros ou lifetimes manuais. A JVM usa o GC da JVM; Native tem gerenciamento próprio (free-list + mark-sweep + auto-collect). A abstração de memória pertence à plataforma, não ao usuário.

memoria.kf
class User(
String name
)
main() {
var user = User("Mel")
println(user.name)
}
09Zero cerimônia

E se construir software não exigisse um ecossistema inteiro de cerimônia?

HTTP, JSON, banco, concorrência, async, mensageria, rede, testes, serialização, coleções, filesystem, tempo e segurança devem caminhar para dentro da biblioteca padrão e do runtime da Kof. Com etiquetas honestas do que já existe.

coleçõesDisponível
stringsDisponível
arquivos (kof.io)Disponível
JSONDisponível
HTTP (kof.web)Disponível
banco de dados (kof.db)Disponível
logs (kof.log)Disponível
configuração (kof.config)Disponível
tempo (kof.time)Disponível
UI (kof.ui)Disponível
segurança (kof.security)Disponível
validação (kof.validation)Disponível
observabilidade (kof.observability)Disponível
concorrência (spawn)Disponível
cache (kof.cache)Disponível
ORM (kof.orm)Disponível
mensageria (kof.mq)Disponível
cliente HTTP (http.get)Disponível
processos (process.run/spawn)Disponível
matemática (kof.math)Disponível
identificadores (kof.uuid)Disponível
mídia (kof.media)Disponível
supervisão OTP (kof.supervisor)Disponível
interop Python/R (KofPy/KofR)Disponível
FFI (extern + callbacks)Disponível
buffer (Buffer U8)Disponível

Disponível indica capacidade já utilizável — hoje a maior parte com paridade JVM, Native e JS. Gaps por target são diagnosticados em compile-time com códigos como CONC001 — nunca silenciosamente.

Ver a biblioteca padrão →

o motivo de tudo isso

Quero que programar seja divertido de novo.

Em algum lugar entre o problema e a solução, a diversão se perdeu, trocada por configuração, camadas e cerimônia. A Kof existe para devolver isso: o prazer de escrever uma ideia e vê-la rodar de verdade.

Porque cerimônia cansa.

Ninguém brinca antes do primeiro DTO. Quando vinte linhas de ritual existem só para agradar um framework, escrever código deixa de ser leve. Menos código, mesma capacidade — é assim que a diversão volta.

Porque intenção flui.

Você diz o que quer — spawn tarefa(), web.app(), Window("Contador") — e a plataforma decide o como, por target e por convenção. Menos tradução, mais criação.

Porque confiança liberta.

Erro claro em compile-time e gaps nomeados (CONC001, SEM031) — nunca surpresa silenciosa em produção. Quem confia na rede embaixo experimenta mais, arrisca mais alto e se diverte mais.

Porque mágica boa não esconde poder.

O mesmo código rodando na JVM, num binário nativo ou no browser é o tipo de mágica que a gente gosta: abstração boa reduz complexidade real — não disfarça ela.
10Web

Construa uma aplicação web sem construir antes um ecossistema de frameworks.

kof.web já existe na JVM: rotas, middleware, JSON tipado e servidor HTTP embutido no runtime — sem Spring, sem servlet container, sem annotations.

app.kf
record User(String name, Int age)
main() {
var app = web.app()
app.get("/hello") {
return "Hello from Kof"
}
app.get("/users/:id") {
return "user " + param("id")
}
app.post("/user") {
var user = json.decode<User>(body())
return json.encode(user)
}
app.listen(8080)
}
visão da plataforma
Aplicação Kof
       │
       ├── HTTP        ✅ disponível
       ├── JSON        ✅ disponível
       ├── Database    ✅ disponível
       ├── Autenticação     ✅ disponível (app.security + OAuth2)
       ├── Mensageria       ✅ disponível
       ├── Supervisão OTP   ✅ disponível (JVM+Script+todos os Native)
       ├── Async            ✅ disponível (spawn/await/selectAny/channels)
       └── Concorrência     ✅ disponível (spawn/await nos 4 targets)
terminal
$ kof serve app.kf
$ kof serve app.kf --port 8080

O objetivo de longo prazo — frontend, backend, banco, autenticação, mensageria e async com pouquíssimos arquivos de negócio — segue em evolução. O que já existe: HTTP, JSON, banco, mensageria, segurança web (app.security + OAuth2 resource server), supervisão OTP e o servidor embutido — agora também no KofJS via GraalJS HttpServer.

A visão da plataforma web →
11Provocação

Não queremos substituir o Spring por outro Spring.

Kof não quer criar um "Kof Spring". Nem um "Kof Hibernate". Nem uma camada de abstração em cima de outra camada de abstração. A pergunta é: por que essa complexidade precisa existir em primeiro lugar?

hoje
Spring
Hibernate
ORM
DI
AOP
Controllers
Repositories
DTOs
Configuração
...
kof
Kof
Compilador
Runtime
Biblioteca padrão

O objetivo não é remover capacidade. É remover cerimônia.

12Arquitetura

Um frontend. Uma IR. Backends dedicados.

O frontend é único: lexer, parser, tipos, semântica e IR. A partir da IR, cada backend realiza a mesma semântica no seu mundo.

fonte

Código Kof (.kf)

frontend único

Compilador Kof → AST → tipos → IR

representação

Kof IR

↓ a mesma IR alimenta todos os backends ↓

Backend JVM

Disponível

↓ .class

↓ JVM

Backend nativo (x86_64)

Disponível

↓ ELF

↓ OS/CPU

Backend nativo (riscv64/aarch64)

Disponível

↓ ELF estático

↓ OS/CPU

KofScript

Disponível

↓ KofInterpreter (IR)

↓ Execução direta (sem compilar)

KofJS

Disponível

↓ ES Modules

↓ JS engine / Browser

Android

Disponível

↓ APK

↓ ART (variante JVM)

KofC

Disponível

↓ ELF

↓ OS/CPU (C subset)

13Ferramentas

Uma linguagem deve vir com as suas ferramentas.

Compilador, CLI, LSP, testes, debugger, benchmarks, formatador, empacotador e editor acompanham a linguagem. O gerenciador de pacotes já é MVP (kof deps); o registry completo ainda é futuro.

kof cli
$ kof build
$ kof run
$ kof serve
$ kof deploy
$ kof check
$ kof test
$ kof debug
$ kof bench
$ kof profile
$ kof inspect
$ kof decompile
$ kof translate
$ kof compare
$ kof migrate
$ kof fmt
$ kof new
$ kof init
$ kof deps
$ kof config
$ kof editor
$ kof info
$ kof lsp
$ kof install
$ kof script
$ kof repl
$ kof c
$ kof version

Compilador

Disponível

CLI

Disponível

LSP

Disponível
Diagnostics reais do frontend, hover, completion, references e rename.

Testes (kof test)

Disponível

Debugger (kof debug)

Em desenvolvimento
MVP DAP sobre stdio no target JVM.

Benchmarks (kof bench)

Disponível
Harness com baselines e gate de regressão no CI.

Profile (kof profile)

Disponível

Inspect IR (kof inspect)

Disponível

Formatador (kof fmt)

Disponível
Parser real (KofFormatter), idempotente. kof fmt -w reescreve no lugar.

Gerenciador de pacotes (MVP)

Disponível
kof deps — MVP com kofdeps, Maven Central, --deps.
Kof-Editor — o editor oficial da linguagemkof.kf no dia a dia
Captura de tela do Kof-Editor com um arquivo .kf aberto, mostrando árvore de arquivos, abas, realce de sintaxe e minimapa
Conhecer o Kof Editor e Theme Maker →
14Distribuição

Instale o Kof. Só isso.

Uma distribuição autocontida: compilador, CLI, runtime, biblioteca padrão, ferramentas, suporte a editores e OpenJDK embutido. Sem instalar Java separadamente.

15Aprendizado

Duas trilhas na doc. E um curso completo.

Curso gratuito completo →

Do zero ao avançado: algoritmos, estruturas de dados, banco, segurança, web e mais — tudo em Kof, de graça, pesquisável aqui no site.

koflang.github.io/learn

learn/ → humanos aprendendo Kof

Trilha em capítulos numerados no repositório: primeiros programas, tipos, classes, coleções, UI e mais.Navegar em /docs →

training/ → ferramentas e LLMs aprendendo Kof

Corpus estruturado com idiomas, padrões, anti-patterns e exemplos compiláveis.Navegar em /docs →
16Roadmap

Sem datas falsas. Apenas estado.

O roadmap mostra o que existe, o que está sendo construído e para onde vamos — alimentado pelo estado real do repositório. Versionamento MAJOR.MINOR.PATCH; a 0.1.0 saiu 25/08, a 0.2.0-beta 27/08, a 0.4.0-beta 14/09, a 0.5.0-beta mergeada em main (27/09) e a 0.6.0 é release oficial desde 11/10 — com o auto-cascade por commit avaliando lab→testing→stable.

Concluído (0.6.0)

Disponível
  • Base do compilador: lexer, parser, AST, sistema de tipos, análise semântica e Kof IR
  • Backends JVM, Native (x86_64 free-list GC + mark-sweep) e KofJS
  • Classes, records, herança, interfaces, generics e lambdas com capturas
  • Exceções reais e coleções com Map/Set nos três targets
  • enum com == por conteúdo e switch exaustivo (SEM031); switch-expressão (SYN001) nos 3 targets
  • kof build / run / serve / test / debug / bench / profile / inspect / fmt
  • kof.web: status/headerSet, WebSocket RFC 6455, SSE nativo, accept loop HTTP/1.1
  • kof.db + kof.orm com Query DSL tipada e transaction commit/rollback real
  • kof.mq (pub/sub nos 3 targets) e cliente HTTP (JVM + JS + Native)
  • kof.security v1 + web security (rate limit, sessões, API keys) nos três targets
  • TLS via web.listenSecure na JVM
  • kof.validation e kof.observability (histogram/metrics no Native) nos três targets
  • kof.ui e pattern matching (case String s, Point(x,y), instanceof)
  • null safety String?/Int? e List map/filter/reduce
  • imports multi-arquivo, KofScript (repl, watch) e KofCcompiler
  • targets native.risc / native.arm com codegen real e stdlib (19/19 qemu)
  • process.run / process.spawn (stdout vivo: readLine/exitCode/kill; stdin /dev/null — write é no-op honesto)
  • kof fmt com parser real, idempotente; sobrecarga de construtores e widening de return
  • kof.config com interpolação de ${key} nos 3 targets; lifecycle application
  • W3C spans, kof.log no JS (LOG001) e time no Native (TIME001)
  • package manager MVP (kof deps) e MySQL prepared statements binário
  • concorrência real no JS (CONC003) e ponto flutuante no Native (FLT001)
  • LSP references + rename e releases multiplataforma single-job
  • kof.strings / encoding / random / validation / time / net / math / uuid (v4 + v7)
  • arrays multidimensionais e kof.media (Image/Audio/Mic/Video + serveDir com Range)
  • kof.supervisor (OTP core: JVM + Script + todos os Native + JS)
  • web server no KofJS (HttpServer GraalJS + fetch async)
  • app.security() + OAuth2 resource server (JVM)
  • overloading top-level e de método (4 backends); Long como BigInt no JS
  • GC mark-sweep no Native + runtime pruning (hello x86 32.5KB)
  • kof new + kof build --fat (suite 5876 testes no CI)
  • DB: SQLite em todos os targets (cross fechado 15/09), MySQL/MariaDB wire em JVM + Native x86-64 e ORM cross — MongoDB real só JVM/Android (DB001 honesto no JS/Native) (0.5.0)
  • motores interop KofPy/KofR + timeout/cancel (JVM/x86/JS/Script/cross) (0.5.0)
  • memory-safety: ownership pass + O-03 clear-null; Kofmd + kof md check/format (0.5.0)
  • secrets + makealive; LSP 32 namespaces; FFI structs ABI + callbacks JS (0.5.0)
  • supervisor OTP em todos os Native; multiarch GC/dtoa/canais/io/ssh/time/pow (0.5.0)
  • tree-shaking + registry + workflow runner + debug info DWARF cross (0.5.0)
  • GC auto-collect no Native (§260 G-6a) (0.5.0)
  • sealed + switch exaustivo (SEM080/SEM081); variância out/in + projeção use-site (SEM082) (0.6.0)
  • reflexão de fronteira interop.schema(R) — intrínseco compile-time, 4 targets (0.6.0)
  • memory-safety M1 completa: callbacks FFI no Native x86-64 e cross riscv64/aarch64 via trampoline (0.6.0)
  • GC cross riscv64/aarch64 corrigido (§602); math.pi()/e()/tau() fold para literal (0.6.0)
  • kof.ui accessibility — superfície intent-based + defaults automáticos por widget (0.6.0)
  • 0.6.0 finalizada, mergeada em main e lançada nas 4 plataformas (11/10)

Em desenvolvimento

Em desenvolvimento
  • package registry além do MVP
  • LSP além do MVP
  • debugger além do MVP JVM (DWARF Native, source maps JS)
  • KofJS plataforma web no browser
  • web no Native/JS residual (TLS/ws/sse — WEB002 / WEB001)
  • FFI: callback com retorno String (FFI001) e structs variadic/opaque
  • WASM/WASI (lane em desenvolvimento — plano em docs/wasm-wasi-plan.md)

Planejado

Planejado
  • KofScript — REPL e watch já via KofInterpreter; runtime dedicado é o próprio interpreter
  • Language Reference já em docs/language-reference/ (evoluindo)
  • conformance suite — embrião E2E
  • full web platform e auto-hospedagem
  • MCU / riscv32 (gaps honestos nomeados)
Roadmap completo →

origem

Algumas pessoas criam uma biblioteca. Outras criam um framework. A gente olhou para o ecossistema inteiro e pensou:“Tá tudo complicado demais. Vou criar uma linguagem.”
17Código aberto

Compilador open source. Seu software é seu.

O código-fonte da Kof é GPLv3. Programas escritos em Kof não são automaticamente GPLv3: você mantém o direito de escolher a licença do seu software, respeitando as licenças das dependências que efetivamente incorporar.

18Métricas

Números reais, ou nenhum número.

Estrelas
—
Forks
—
Issues abertas
—
Último push
—

Dados lidos ao vivo da API pública do GitHub (KofLang/Kof4j).

Estamos construindo uma linguagem de verdade.

Mostramos o que existe, o que está sendo construído e para onde estamos indo. Se você quer compilar, rodar e acompanhar de perto: