v0.1.1-alphaem 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 (KofJS, em alpha).

user.kf
class User(
String name,
String email
)
main() {
var user = User("Mel", "mel@example.com")
println(user.name)
}
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. O backend gera bytecode diretamente — Java é plataforma, não linguagem intermediária.

Native

Disponível
Kof
 ↓
Kof IR
 ↓
Backend nativo
 ↓
Executável

Binários nativos sem exigir que o programador gerencie memória manualmente. O GC nativo está em desenvolvimento.

Script

Planejado
Kof
 ↓
Runtime Kof (planejado)

Execução direta para scripts e automações usando exatamente a mesma linguagem. O runtime dedicado ainda não foi implementado — hoje o mesmo resultado vem de kof run, que compila e executa.

Web — KofJS

Em desenvolvimento
Kof
 ↓
KofJS (alpha)
 ↓
JavaScript

Em alpha: o mesmo frontend e a mesma Kof IR geram ES Modules (ECMAScript 2022+) executados na engine JS embarcada (GraalJS). A plataforma web no browser é a próxima fase.

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 terá gerenciamento próprio. 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)Em desenvolvimento
asyncEm desenvolvimento
ORM (kof.orm)Disponível
mensageria (kof.mq)Disponível
cliente HTTP (http.get)Disponível

Disponível indica capacidade já utilizável em ao menos um target (hoje, principalmente JVM). 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     🚧 em construção
       ├── Mensageria       ✅ disponível
       ├── Async            🚧 em construção
       └── Concorrência     🚧 em construção
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 — ainda não está entregue. O que existe hoje é o compilador, os backends e o começo real da camada web.

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

Disponível

Binário

OS/CPU

Script

Planejado

Runtime

Interativo

KofJS

Em desenvolvimento

ES Modules

JS engine / Browser

13Ferramentas

Uma linguagem deve vir com as suas ferramentas.

Compilador, CLI, LSP, testes, debugger, benchmarks e editor acompanham a linguagem. Formatador e gerenciador de pacotes são futuro declarado — não realidade presente.

kof cli
$ kof build
$ kof run
$ kof serve
$ kof check
$ kof test
$ kof debug
$ kof bench
$ kof info
$ kof lsp
$ kof install
$ kof version

Compilador

Disponível

CLI

Disponível

LSP

Em desenvolvimento

Testes (kof test)

Disponível

Debugger (kof debug)

Em desenvolvimento
MVP com breakpoints por linha Kof e call stack, via DAP sobre stdio (target JVM).

Benchmarks (kof bench)

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

Formatador

Planejado

Gerenciador de pacotes

Planejado
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 editor oficial da linguagem (Kof-Editor) →
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.

github.com/lunalully/curso-completo-de-kof

learn/ → humanos aprendendo Kof

Trilha em capítulos numerados no repositório: primeiros programas, tipos, classes, coleções, UI e mais.Começar a aprender →

training/ → ferramentas e LLMs aprendendo Kof

Corpus estruturado com idiomas, padrões, anti-patterns e exemplos compiláveis.Abrir /training →
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 primeira release estável, a 0.1.0, já saiu — o desenvolvimento segue em 0.1.x.

Concluído

Disponível
Base do compilador, lexer, parser, AST, sistema de tipos, análise semântica, Kof IR, backends JVM e Native (estáveis) e KofJS (alpha), classes, records, herança, interfaces, generics, lambdas com capturas, exceções reais, coleções com Map/Set nos três targets (COL001 fechado), enum com == por conteúdo e switch exaustivo (SEM031), kof build/run/serve/test/debug/bench, kof.web, kof.db + kof.orm, kof.mq, cliente HTTP, 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 nos três targets, kof.ui e releases multiplataforma (Linux, macOS, Windows).

Em desenvolvimento

Em desenvolvimento
Biblioteca padrão, async, concorrência além da JVM (spawn no Native), GC nativo, MySQL/MariaDB via wire protocol, ponto flutuante SSE no Native, LSP além de diagnostics, debugger além do MVP JVM, a plataforma web no browser e o KofAndroid — Fase 1 implementada: kof build --target android gera o projeto Maven com host Activity em Kof.

Planejado

Planejado
KofScript (runtime de execução direta), gerenciador de pacotes, registry, especificação completa da linguagem, conformance suite, auto-hospedagem do compilador e plataforma web completa.
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: