Referencia Zigzkit (SDK consumido)

src/safety.zig

Declaraciones públicas de src/safety.zig (zkit (SDK consumido)).

ImplementadoSin versión del tren todavía· generada desde apps/docs/generated/zig/zkit.json

Página generada desde zkit@zkit-0.0.0-_fk2iAa4BQCqGFKJeeY9WvMQClX5kiZQ2iOZrVsxVyyN (src/root.zig). No se edita a mano: bun run docs:gen la regenera y bun run docs:check falla si difiere.

zkit.safety — capa de seguridad reutilizable para código Zig que procesa entrada no confiable con hilos propios (styx dec-0117, parte 1 Zig).

Cada pieza convierte una clase de bug en imposible o en fallo determinista:

PiezaClase de bug
Handle(Tag) / TypedSlabuse-after-free por handle obsoleto (generación) y confusión de handles (tipo por Tag)
Budget / BudgetAllocatormemoria sin cota por sesión/usuario; leaks sin informe; contabilidad no independiente
fs.Rootpath traversal, symlinks que escapan, TOCTOU entre comprobar y abrir, FIFOs que bloquean
BoundedReader / BitReaderlecturas fuera de límites, longitudes del wire sin validar, contadores que dimensionan reservas, códigos Exp-Golomb/uvlc con desplazamientos gigantes
checkeddesbordes aritméticos en offsets/longitudes (offset + len que da la vuelta)
Mutexunlock desde otro hilo, autodeadlock, inversión de orden de locks
fuzzparsers que hacen pánico o fugan con entradas truncadas/corruptas

Lo que esta capa NO puede imponer (lo imponen los guards de build/CI del consumidor, dec-0117 "doble capa"): que el código no se la salte — rutas crudas, pthread directo, catch {} en parsers, unreachable sobre input.

safety.fs

namespace · línea 28

pub const fs = @import("safety/fs.zig")

Sin ///.

safety.bounded_reader

namespace · línea 31

pub const bounded_reader = @import("safety/bounded_reader.zig")

Sin ///.

safety.checked

namespace · línea 32

pub const checked = @import("safety/checked.zig")

Sin ///.

safety.mutex

namespace · línea 36

pub const mutex = @import("safety/mutex.zig")

Sin ///.

safety.fuzz

namespace · línea 38

pub const fuzz = @import("safety/fuzz.zig")

Sin ///.