01Standard Library

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ível

List<T>, listOf, Map<K,V> e Set<T> nos três targets — no Native, asm próprio; COL001 fechado.

enum

Disponível

values(), valueOf() e name() com == por conteúdo nos três targets; switch exaustivo verificado em compile-time (SEM031).

strings (kof.strings)

Disponível

API 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ível

File, Path e Directory; texto UTF-8 e erros consistentes. Nos três targets.

JSON

Disponível

Encode/decode tipado; objetos no JVM/JS, arrays tipados incluídos. NATIVE002-stdlib: JSON encode/decode completo no riscv64/aarch64.

HTTP (kof.web)

Disponível

web.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ível

JDBC 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ível

entity, 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ível

Níveis, JSON estruturado e requestId. JVM, Native e KofJS (LOG001 fechado).

configuração (kof.config)

Disponível

Arquivo > 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ível

now(), 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ível

Double 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ível

Window, 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ível

v1 + 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ível

30+ 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ível

health/readiness/liveness, contadores e gauges (counter/gauge/increment) e requestId/correlationId nos três targets.

concorrência (spawn)

Disponível

Virtual 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 desenvolvimento

Assincronismo como parte do runtime.

testes

Disponível

Blocos test "nome" { } + assert; kof test reporta PASS/FAIL por teste (jvm, native e js).

mensageria (kof.mq)

Disponível

Pub/sub em memória com filas limitadas (subscribe, publish, queue, push, pop). Nos 3 targets (MQ001 fechado).

cliente HTTP

Disponível

http.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ível

get/set/ttl/delete/clear — ConcurrentHashMap (JVM), Map (JS). Disponível nos três targets.

formatador (kof fmt)

Disponível

Parser real (KofFormatter), idempotente. kof fmt <file|dir> [-w] reescreve no lugar.

processos (kof.process)

Disponível

process.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ível

randomInt/randomBoolean nos 5 alvos (S10a, x86_64/riscv64/aarch64/JS/JVM; getrandom ecall 278 no cross).

código (kof.encoding)

Disponível

base64/base64Url/hex/urlEncode/urlDecode (5 alvos; ENC002 fechado, base64 riscv B23).

rede (kof.net)

Disponível

URI 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ível

uuid.v4 (RFC 4122) + v7 time-ordered (RFC 9562) + isUuid nos 5 alvos; gate cross UUID001 removido (10/09).

mídia (kof.media)

Disponível

Image (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ível

host 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ível

new T[a][b] cria TODAS as dims via KofNewMultiArray (MULTIANEWARRAY JVM, Array.newInstance interp, kofMultiArray JS).

interop Python (KofPy)

Disponível

Engine 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ível

Engine 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ível

extern "<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ível

buffer.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).

02Filosofia

Complexidade pertence à plataforma.

Não queremos esconder complexidade atrás de abstrações infinitas. Queremos eliminar complexidade desnecessária.

hoje
language
+
framework
+
ORM
+
HTTP library
+
JSON library
+
DI
+
messaging
+
async framework
+
testing framework
+
configuration framework
+
...
kof
language
+
stdlib
+
runtime