Referencia Zigzkit (SDK consumido)

src/time.zig

Declaraciones públicas de src/time.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/time — relojes y espera para código con hilos propios y sin runtime Io.

Desde 0.16 std.time.nanoTimestamp/std.Thread.sleep viven detrás de la interfaz Io. Una librería con sus propios std.Thread (daemon, FFI) no tiene un Io que pasarles, así que cada repo acababa escribiendo su fn nowNs() sobre clock_gettime (styx tenía cinco copias literales y un sexto clon en quic-zig sys.nanoTimestamp). Este módulo es la única.

Reglas:

  • monotonicNs es el reloj de deadlines, timeouts y latencias. Nunca retrocede. Su cero es arbitrario (arranque de la máquina): no se compara con fechas.
  • realtimeNs/realtimeSeconds son el reloj de pared. Puede saltar (NTP, el operador), así que sólo sirve para fechas absolutas que otro host va a leer (caducidad de un token, un timestamp de log), jamás para medir una duración.
  • Todos devuelven enteros sin signo o con signo explícito; ningún fallback silencioso a 0: clock_gettime sobre un reloj que el SO garantiza sólo falla por un bug (puntero o clockid inválido), y eso es un pánico, no un número falso.

time.ns_per_us

const · línea 33

pub const ns_per_us: u64 = std.time.ns_per_us

Sin ///.

time.ns_per_ms

const · línea 34

pub const ns_per_ms: u64 = std.time.ns_per_ms

Sin ///.

time.ns_per_s

const · línea 35

pub const ns_per_s: u64 = std.time.ns_per_s

Sin ///.

time.monotonicNs

fn · línea 48

pub fn monotonicNs() u64

Nanosegundos del reloj monotónico (CLOCK_MONOTONIC).

time.monotonicMs

fn · línea 54

pub fn monotonicMs() u64

Milisegundos del reloj monotónico.

time.realtimeNs

fn · línea 61

pub fn realtimeNs() i64

Nanosegundos desde la época Unix por el reloj de pared (CLOCK_REALTIME). Con signo: un reloj mal puesto antes de 1970 es posible y no debe convertirse en pánico por un cast.

time.realtimeSeconds

fn · línea 67

pub fn realtimeSeconds() i64

Segundos desde la época Unix por el reloj de pared.

time.realtimeMs

fn · línea 72

pub fn realtimeMs() i64

Milisegundos desde la época Unix por el reloj de pared.

time.sleepNs

fn · línea 77

pub fn sleepNs(ns: u64) void

Duerme al menos ns nanosegundos (reintenta tras EINTR con lo que falte).

time.Deadline

type · línea 94

pub const Deadline = struct

Plazo absoluto sobre el reloj monotónico. Sustituye al patrón waited_ns += POLL_NS (que deriva porque ignora el tiempo real de cada vuelta) y es lo que consumen sync.Condition.timedWait y las colas.

time.Deadline.fromNow

fn · línea 98

pub fn fromNow(timeout_ns: u64) Deadline

Plazo a timeout_ns desde ahora. Satura en lugar de desbordar.

time.Deadline.never

const · línea 103

pub const never: Deadline = .{ .at_ns = std.math.maxInt(u64) }

Plazo que nunca vence.

time.Deadline.expired

fn · línea 105

pub fn expired(self: Deadline) bool

Sin ///.

time.Deadline.remainingNs

fn · línea 110

pub fn remainingNs(self: Deadline) u64

Nanosegundos que quedan (0 si ya venció).

time.Stopwatch

type · línea 116

pub const Stopwatch = struct

Cronómetro monotónico: start + readNs/lapNs.

time.Stopwatch.start

fn · línea 119

pub fn start() Stopwatch

Sin ///.

time.Stopwatch.readNs

fn · línea 123

pub fn readNs(self: Stopwatch) u64

Sin ///.

time.Stopwatch.lapNs

fn · línea 128

pub fn lapNs(self: *Stopwatch) u64

Devuelve lo transcurrido y reinicia.