扩展库 / crontab

crontab

本地时间 cron 调度。

严格解析五字段规则,查询匹配及下一次触发时间。

API

接口用途
isValid(expr)验证五字段表达式
matches(expr, timestamp)按进程本地时区匹配 Unix 秒
next(expr, timestamp)严格晚于输入的下一次分钟触发
describe(expr)字段摘要

范例

import crontab
int nextRun = crontab.next("*/15 * * * *", 1700000000)
println(nextRun)

DOM 与 DOW 都不以 * 开头时采用 OR;任一字段以 * 开头时按实际位图取 AND,*/2 仍保留步长约束。Linux 固定时区测试覆盖纽约的一小时跳时、Lord Howe 的半小时跳时与重复分钟,以及历史秒级时差与标准时切换;这些边界同时运行 C 与 XLang 用例。next 返回本地整分钟,不要求 Unix 秒数为 60 的倍数。describe 返回 XRT 堆分配的 char*;C 使用 xrtFree 释放,XLang 以 @owned 直接接管。分配失败在 C 中保留 XERR_MEMORY,在 XLang 中抛 MemoryError,清除故障后可重试。2026-10-26 从当前源码重建 Windows/Linux 发布物后,两平台默认包门禁均通过严格 C、XLang JIT/AOT 和 C/XLang 范例同输出;Linux 另通过 ASan/UBSan 与固定时区边界。验收限包内五字段语法及已测时区样例,不代表全部时区历史。

2026-10-29 补长度/边界/分配检查 169 项、四条实际生成原型与 C 头核对及完整字符串接管检查。独立 Python/IANA 对照通过 1,008 次匹配、54 次最早触发点检查,覆盖 UTC、纽约、Lord Howe 和 Kathmandu;不复制产品解析与跳步算法。描述摘要分支也补齐 OOM 与恢复。调度算法、API 及所有权不变。

默认门禁现在有超时、输入/时区指纹和失败现场,Windows 八条、Linux 十条独立 AOT;Linux 增加两条历史时区 AOT。需要 Python 3.9+ 和指定 IANA 数据,缺工具不跳过。测试范围和命令见 README,不据这组短时检查外推所有时区或性能认证。