# 标准库 标准库(stdlib)是编译进每个 Deft 运行时的一组原生函数 (在 Zig 中实现于 `src/host/plugins/` 与 `src/host/stdlib/`),在任何脚本运行之前完成注册。它们无需 导入,且在每种宿主中都可用——`deft` 脚本二进制、 `retro`、`retra` 和 `hydra`。 不要将标准库与 stdext(`deft/stdext`)混淆,后者是 Deft 语言的扩展包,提供 `html`、`markdown`、`syntax`、 `semantic`、主题以及 TUI 基础设施。stdext 像任何 其他包一样导入(见 模块与导入);标准库 函数则直接可用。 本类别是按命名空间组织的目录——每个函数族一页。集合函数的 语言级语义见集合、 惰性序列、 转换器 和 错误处理。 ## 如何阅读本页 每条条目列出函数名、参数形式和简要用途。 调用的规范形式取决于上下文——见 语法与风格。快速规则: - 裸名称适用于语句位置的顶层调用: `echo $x`, `incr i`。 - 后缀 `$var(call)` 适用于变量上的单参数调用: `$x(len)`, `$xs(first)`。 - 前缀 `[name args]` 是规范形式,在较大的 表达式中或进行斜杠命名空间调用时必须使用: `[fs/read "path"]`, `[sqlite/query $db "sql"]`。 ## 函数族 | 页面 | 内容 | |---|---| | I/O | `echo`, `puts`, `gets`, `open`, `close`, `log`——通道与流 | | 数学 | 裸数值动词以及专门化的 `math/` 命名空间 | | 字符串 | 核心字符串操作、显示宽度布局、原始字节 | | 类型 | `type`, `is?`、谓词、强制转换、元数据 | | 结果 | `ok` / `err`、谓词、`unwrap`、`throw` | | 引用 | 可变状态单元与监视 | | 列表 | 持久化列表操作 | | 映射 | 持久化映射操作、带标签映射、嵌套访问 | | 数组 | 可变数组 | | 集合 | 集合操作 | | 序列函数 | 惰性 `map` / `filter` / `reduce` 及同类函数 | | 实用工具 | `identity`, `apply`, `curry`, `eval`, `reload`, `pretty` | | 字符 | 字符分类谓词 | | 时钟 | TCL 风格的时间与格式化 | | 正则表达式 | PCRE2 正则表达式 | | 日志 | 分级的 `log/*` 动词 | | 文件系统 | `fs/*`——读取、写入、监视、路径 | | 操作系统 | `os/*`——进程、环境、子进程、信号 | | 数据格式 | `json/*` 和 `yaml/*` | | 加密 | 哈希、HMAC、编码、对称加密 | | 压缩 | gzip、tar 和 tarball 辅助函数 | | 主题 | 加载、编辑和保存主题文件 | | 内省 | `deft/*`, `info/*`, `capture/*`, `capabilities` | | 任务 | 流与 future 消费者动词 | ## 拥有独立指南的命名空间 有几个命名空间足够大,其手册章节与所属的平台、网络或工具主题 放在一起: | 命名空间 | 指南 | |---|---| | `vfs/*` | VFS | | `sqlite/*` | SQLite | | `config/*` | 配置 | | `pub/*` | 发布/订阅 | | `runtime/*`, `gc/*` | 运行时 | | `rpc/*` | RPC | | `pg/*` | PostgreSQL | | `net/*` | TCP/UDP | | `http/ws-*` | WebSocket | | `dns/*` | DNS | | `http/*` (client) | HTTP 客户端 | | `http/*` (server) | HTTP 服务端 | | `mcp/*` | MCP | | `dialog/*` | 对话框 | | `tui/*`, `draw/*`, `surface/*`, `scene/*`, `gl/*`, `color/*`, `clipboard/*`, `editor/*`, `term/*` | TUI 概览, 图形 | | `pkg/*` | 包 | | `debug/*` | 调试服务器 | | `ffi/*` | FFI | 较小的命名空间(`assert/*`, `keymap/*`, `keyval/*`, `lang/*`, `uuid/*`, `bin/*`, `image/*`, `dbus/*`, `worker/*`, `import/*` 以及 其余部分)在 Help 应用的 Reference 标签页中按符号记录, 与源码树中的 `packages/help/docs/` 文件并列。 ## 可用性 核心命名空间编译进每个构建。少数几个受开关控制: - TUI 宿主(`retro`、`retra`,以 `-Denable-tui=true` 构建)添加 `tui/*`, `draw/*`, `surface/*`, `scene/*`, `gl/*`, `color/*`, `clipboard/*`, `editor/*` 和 `term/*` 命名空间。 - FFI 构建(`-Dffi=true`)添加 `ffi/*`。 - `dialog/*` 在所有地方都存在,但脚本二进制在 stdin/stdout 上渲染它,而 TUI 宿主绘制真正的对话框。 ## 在运行时发现标准库函数
[capabilities]                                # what's compiled in
[info/modules]                                # what's loaded
[info/defs]                                   # defs in the current ns
要获取最新的列表,权威来源是代码库中 `src/host/plugins/` 和 `src/host/stdlib/` 下的插件文件。 插件注册表在构建时自动生成。