E se construir software não exigisse um ecossistema inteiro de cerimônia?
Kof pretende tornar operações comuns parte da própria plataforma. Nada abaixo é apresentado como pronto sem estar marcado como tal.
coleções
DisponívelList<T>, listOf, Map<K,V> e Set<T> nos três targets — no Native, asm próprio; COL001 fechado.
enum
Disponívelvalues(), valueOf() e name() com == por conteúdo nos três targets; switch exaustivo verificado em compile-time (SEM031).
strings (kof.strings)
DisponívelAPI completa + kof.strings: escapeJson/unescapeHtml, word converters (toCamel/Pascal/Snake/Kebab), isAlpha/isNumeric, pad/repeat/capitalize, STRN001/word-converters portados p/ riscv64/aarch64 (5 alvos).
arquivos (kof.io)
DisponívelFile, Path e Directory; texto UTF-8 e erros consistentes. Nos três targets.
JSON
DisponívelEncode/decode tipado; objetos no JVM/JS, arrays tipados incluídos. NATIVE002-stdlib: JSON encode/decode completo no riscv64/aarch64.
HTTP (kof.web)
Disponívelweb.app(), rotas com path params, middleware, servidor embutido no runtime e TLS via web.listenSecure(port) na JVM; app.security() (rate-limit→CORS→headers→session→CSRF→auth→RBAC) e OAuth2 resource server na JVM. WEB002 no Native (server HTTP/1.1 base ✅; TLS/ws/sse/path params pendentes). KofJS: servidor GraalJS HttpServer + KofJsWebQueue ✅ (03/09); residual ws/sse/TLS = WEB001. Resposta rica: status(201, body) + headerSet('X', 'y'). WebSocket RFC 6455 (app.ws) + SSE nativo (app.sse) na JVM.
banco de dados (kof.db)
DisponívelJDBC com query tipada e transaction {} commit/rollback real na JVM e delegate JDBC no KofJS; SQLite nativo em todos os targets (cross riscv64/aarch64 fechado 15/09); MySQL/MariaDB via wire protocol (prepared statements binários) no Native x86-64 (cross recusa DB001, R7); DB001 também para schemes sem wire (postgres nativo, oracle, mongo no JS/Native).
ORM (kof.orm)
Disponívelentity, CRUD, where com operadores, saveAll, page, deleteAll e migrate na JVM e no Native (SQLite nos dois arquitecturas Native; MySQL via wire só x86-64); Query DSL tipada (ORM001); as 13 faces ORM medidas contra MariaDB 12.3.2; MongoDB real só na JVM. ORM001 no JS.
logs (kof.log)
DisponívelNíveis, JSON estruturado e requestId. JVM, Native e KofJS (LOG001 fechado).
configuração (kof.config)
DisponívelArquivo > env > profile, tipado. Interpolação ${key} nos 3 targets. Bloco ui-config + funções de config (0.4.0). JVM, Native (asm próprio) e KofJS — CONF001 fechado 16/09.
tempo (kof.time)
Disponívelnow(), sleep, interval, every()/at() + isLeapYear/daysInMonth/dayOfWeek/daysBetween/addDays/diffDays (TIME002) / todayIso/formatDateIso/parseDateIso/hoursBetween/tzOffsetSeconds (TIME003 honesto) nos 5 alvos (TIME001 fechado no Native).
matemática (kof.math)
DisponívelDouble completo nos 5 alvos (MATH001 fechado): sqrt/pow/lerp/percentage/isInteger/isDecimal/roundTo + parse{Int,Long,Double}OrDefault; NaN IEEE em todos os alvos. pi()/e()/tau() com fold para literal double — fecha COMP001 no link Nativo (0.6.0); golden math-pow-constants 216/216.
interface (kof.ui)
DisponívelWindow, widgets, bind e layout; renderização DOM via KofJS no webview nativo (WebKitGTK) ou browser. Accessibility 0.6.0: superfície intent-based + defaults automáticos por widget (#789).
segurança (kof.security)
Disponívelv1 + G9 nos três targets: PBKDF2 (600k), SHA-256/512, HMAC, AES-GCM, ChaCha20 (RFC 8439, JVM+JS — SECN002 honesto no Native), JWT HS256, secrets, rate limit (security.rateLimit), sessões, API keys e cookies secure (C11) — constant-time, secure by default; no Native, asm x86-64 sem libc.
validação (kof.validation)
Disponível30+ predicados: required/notBlank/isEmail/isUrl/inRange/min/max + isCpf/isCnpj/isCep/isPis/isNis, isIpv4/isIpv6/isMac/isPort, isDomain, Luhn (isCreditCard), formatCpf/formatCep/formatCnpj (pontuação BR) — 4-5 alvos; violação VAL001.
observabilidade (kof.observability)
Disponívelhealth/readiness/liveness, contadores e gauges (counter/gauge/increment) e requestId/correlationId nos três targets.
concorrência (spawn)
DisponívelVirtual threads na JVM com join implícito; val r = spawn f() / await r com handle tipado. poll/done/cancel/selectAny (0.2.0+). Concórrencia real no JS via async/await (CONC003 fechado). Native via pthread (CONC001 fechado). NATIVE002-stdlib: spawn/await no riscv64/aarch64 (clone + futex).
async
Em desenvolvimentoAssincronismo como parte do runtime.
testes
DisponívelBlocos test "nome" { } + assert; kof test reporta PASS/FAIL por teste (jvm, native e js).
mensageria (kof.mq)
DisponívelPub/sub em memória com filas limitadas (subscribe, publish, queue, push, pop). Nos 3 targets (MQ001 fechado).
cliente HTTP
Disponívelhttp.get, http.post, http.put, http.delete, http.status, http.timeout nos 3 targets. No Native: HTTP/1.1 asm com timeout/retry/circuit reais (§259, 17/09); https e DNS por nome são gaps honestos (recusam/throw, nunca silenciam).
cache (kof.cache)
Disponívelget/set/ttl/delete/clear — ConcurrentHashMap (JVM), Map (JS). Disponível nos três targets.
formatador (kof fmt)
DisponívelParser real (KofFormatter), idempotente. kof fmt <file|dir> [-w] reescreve no lugar.
processos (kof.process)
Disponívelprocess.run (bloqueia) e process.spawn (stdout vivo: readLine/exitCode/alive/kill; stdin /dev/null — write é no-op honesto, §355) — JVM, Native x86+cross e JS. process.exit(code) nos 3 targets.
aleatório (kof.random)
DisponívelrandomInt/randomBoolean nos 5 alvos (S10a, x86_64/riscv64/aarch64/JS/JVM; getrandom ecall 278 no cross).
código (kof.encoding)
Disponívelbase64/base64Url/hex/urlEncode/urlDecode (5 alvos; ENC002 fechado, base64 riscv B23).
rede (kof.net)
DisponívelURI parse + fetch; NET001 fechado nos 6 alvos (x86_64/riscv64/aarch64/JS/JVM/Android). Front de sockets (listen/accept/connect/UDP): real na JVM e nos Native x86-64 + cross riscv64/aarch64 (NET002 aposentado, 02/10); recusado em JS na v1 (NETN001 em compile-time, nunca silencioso).
identidade (kof.uuid)
Disponíveluuid.v4 (RFC 4122) + v7 time-ordered (RFC 9562) + isUuid nos 5 alvos; gate cross UUID001 removido (10/09).
mídia (kof.media)
DisponívelImage (PNG/JPEG/GIF/BMP), Audio/Mic (WAV PCM), Video (metadados MP4/MOV + streaming) e app.serveDir com Range requests (206/416) — arquivos, não base64 no fonte (JVM; MEDIA001 no Native/JS).
supervisão OTP (kof.supervisor)
Disponívelhost puro-Kof import kof.supervisor: observe-failure, restart individual, restart limit + escalate, stop cooperativo; JVM+Script+todos os Native+JS; OTP001/OTP002 removidos (18-19/09) — supervisor em todos os alvos.
arrays multidimensionais
Disponívelnew T[a][b] cria TODAS as dims via KofNewMultiArray (MULTIANEWARRAY JVM, Array.newInstance interp, kofMultiArray JS).
interop Python (KofPy)
DisponívelEngine real over python3 -u -c + RPC linha-JSON com json.decode<T> tipado (stateless replay): callInt/Double/Bool/String/Json + timeout/cancel — JVM, Native x86-64 e cross riscv64/aarch64, JS e Script certificados no CI. ANDROID/MCU/RISCV32: INTEROP005 honesto.
interop R (KofR)
DisponívelEngine real over Rscript --vanilla -e com o MESMO face do KofPy (callInt/Double/Bool/String/Json + timeout/cancel); spec embutida na expressão -e como string literal, jsonlite decodifica no lado R. InteropRE2ETest 10/10 skipped-0 no CI (Rscript 4.x + jsonlite).
FFI (extern)
Disponívelextern "<lib>" + library(): ABI escalar direto nos 3 nativos (SysV/LP64/AAPCS64, ≥9-arg spill, String↔char*, void/Bool/Float); JVM+Nativo com structs record by-value, T[]→ptr, String[]→char** e Buffer(U8) INOUT; callbacks (upcalls) bind no JVM, JS host, Native x86-64 E cross via trampoline (M1, 11/10). Restante não-bindável → FFI001/FFI002 na linha da declaração, nunca stub silencioso.
buffer (Buffer U8)
Disponívelbuffer.alloc / Buffer.bytes() / println(Buffer) — Buffer[cap] zero-filled, layout header 24/cap 16/payload 24; token FFI B para INOUT copy-in/copy-back nos 3 nativos + JVM (byte-parity via libc memset sob qemu).
Complexidade pertence à plataforma.
Não queremos esconder complexidade atrás de abstrações infinitas. Queremos eliminar complexidade desnecessária.
language + framework + ORM + HTTP library + JSON library + DI + messaging + async framework + testing framework + configuration framework + ...
language + stdlib + runtime
