标准库

标准库

使用字节、文字、文件、网络、套接字、进程、资源等 25 个标准模块。

标准库通过标准:<模块名>导入。公开 API 在参考树解释器与独立 VM 中保持一致,并参与静态类型检查。

yanxu 标准库 --json可取得格式 1 的机器清单,其中记录每个成员的签名、确定性、平台限制、错误类别和所需权限;核心仓库stdlib/api-v1.json是审计真源。

「标准:编码」 编码;
「标准:统计」 统计;

 密文: 编码.十六进制「言序」);
 编码.解十六进制(密文);
 统计.平均(【1234】);

文字与数学

模块成员
文字修剪(文)分割(文, 文)替换(文, 文, 文)始于(文, 文)终于(文, 文)大写(文)小写(文)字符列(文)联结(列, 文)
数学圆周率绝对值(数)平方根(数)幂(数, 数)下取整(数)上取整(数)四舍五入(数)正弦(数)余弦(数)最小(数, 数)最大(数, 数)

平方根拒绝负数。数学函数只接受有限数;联结要求列或元组中的每一项都是文字。

字节串

字节模块提供从文字/转文字/长度/切片/拼接/查找/从数列/转数列字节串不可变、按内容相等,长度和索引均以实际字节为单位;无效 UTF-8 解码返回BYTES_UTF8。完整示例和上限见字节串与二进制 I/O

时间、文件与环境

模块成员
时间今()返回 Unix 秒,毫秒()返回 Unix 毫秒,等待(数)暂停 0 至 60 秒
文件读取/写入/追加文字,读取字节/写入字节/追加字节二进制,状态/存在/目录查询
环境读取(文): 文?存在(文): 理当前目录/系统/架构(): 文参数(): 列<文>

文件模块使用调用进程可见的路径,写入追加返回写入的 UTF-8 字节数;目录按名称排序。环境变量不存在时环境.读取返回,非 UTF-8 值会产生可捕获的运行错误。

路径

路径模块提供合并(文, 文)父级(文): 文?文件名(文): 文?扩展名(文): 文?是否绝对(文): 理规范化(文): 文

规范化只消去.和可折叠的..,不会访问文件系统或解析符号链接,因此也可安全处理尚不存在的路径。

「标准:路径」 路径;
 路径.规范化「篇章/旧/../诗经.yx」);
 路径.扩展名「诗经.yx」);

进程与应用资源

模块成员与边界
进程执行(程序, 参数, 工作目录, 超时毫秒)返回状态、标准输出和标准错误;受进程权限、全程超时与输出上限保护
资源读取字节/读取文字/目录只读访问清单声明资源;YXB 运行时读取归档内嵌内容

命令行参数继续由环境.参数()读取。源码模式下,资源只允许读取[资源]声明的目录;YXB 构建会把可达资源写入归档,所以部署时无需携带原始资源目录。进程不会继承依赖包的权限,应用必须在自己的清单显式授权。

JSON、CSV 与网络

模块成员
JSON解析(文): 任意序列化(任意): 文
CSV解析(文): 列<列<文>>序列化(列<列<文>>): 文
网络获取/发文、文字请求、支持首部和二进制正文/响应的请求字节

CSV 解析支持 CRLF、引号字段、字段内逗号与换行,以及用两个引号表示一个引号。格式错误会给出明确诊断。

原生网络模块支持 HTTP/HTTPS、根证书验证、HTTP/1.1 分块传输与关闭定界正文。获取/发文保留简洁签名,采用 10 秒全程超时和 4 MiB 响应上限;非成功状态、超时、TLS、超限与非 UTF-8 正文都会成为带稳定NET_*代码的结构化错误。1.1.3 起,每次重定向都重新授权,DNS 后复查真实 IP,解析、连接与传输共用同一截止时间。WASI 不隐式获得网络传输能力。

请求字节(方法,地址,首部,正文,超时毫秒,最大字节)接受典<文,文>字节串?,返回典中的正文为字节串。运行时拒绝 CRLF、非法首部以及调用方伪造的Host/Content-Length/Transfer-Encoding/Connection等首部,并在跨源重定向时移除授权和 Cookie。

「标准:CSV」 CSV;
 表:<<>> CSV.解析「姓名,诗句\n子衿,\"青青子衿,悠悠我心\");
 表【1】【1】;

需要自定义预算或读取状态/首部时使用请求

「标准:网络」 网络;


 响应:<任意> 网络.请求
        「GET」「https://example.com」「」50001048576
    );
 响应【「状态」】;
 响应【「地址」】;
 响应【「首部」】;
 响应【「正文」】;
 所误 
 所误.代码;
 所误.消息;

超时和大小参数必须是安全正整数;大小按响应正文的字节数计算,超过上限会完整失败而不是返回截断正文。错误代码表见错误处理

套接字

套接字是原生平台的低层 TCP/UDP I/O 模块。除既有文字 API 外,1.1.4 增加发送字节/接收字节/精确读取/UDP发送字节至/UDP接收字节自/关闭写端/TCP无延迟。外连、TCP 监听和 UDP 绑定使用三项独立权限,DNS 解析后还会复查真实 IP。

所有阻塞入口都使用调用级毫秒超时,单次接收还受 4 MiB 硬上限约束;失败使用稳定SOCKET_*代码。TCP 分帧、UDP 截断拒绝、UTF-8 边界、完整签名和服务端示例见套接字指南

哈希、编码与统计

模块成员
哈希SHA256(文): 文HMACSHA256(字节串, 字节串): 字节串恒时相等(字节串, 字节串): 理
编码十六进制(文)解十六进制(文)百分号(文)解百分号(文)
统计总和(列<数>)平均(列<数>)中位数(列<数>)方差(列<数>)标准差(列<数>)

编码以 UTF-8 字节为基础,错误长度、非法数字或非 UTF-8 解码结果都会报错。方差使用总体方差(除以 N);除总和外,空数据会报错,所有统计数据都必须是有限数。

1.0 确定性纯函数模块

1.0 稳定集合中的四个纯函数模块不读取宿主状态、不需要权限,并在树解释器与 VM 中共享同一算法。

模块成员
随机确定性小数/整数/布尔,以及操作系统 CSPRNG 安全字节(长度): 字节串
标识稳定UUID(文): 文是否UUID(文): 理稳定短码(文, 长度): 文
模板插值(模板, 占位名, 值): 文转义HTML(文): 文反转义HTML(文): 文
校验电子邮件(文): 理IPv4(文): 理十六进制色(文): 理标识符(文): 理

随机是显式种子的确定性伪随机模块:种子和整数边界须在安全整数范围内,整数使用半开区间[下界, 上界)稳定UUID从 SHA-256 生成 RFC 9562 版本 8 UUID;相同文字总是得到相同结果。稳定短码允许 4 至 64 位十六进制长度。

「标准:随机」 随机;
「标准:标识」 标识;
「标准:模板」 模板;
「标准:校验」 校验;

 标号: 标识.稳定UUID「言序」);
 随机.整数421020);
 模板.插值「问{{name}}安」「name」「子衿」);
 校验.电子邮件「hello@yanxu.dev」);

模板.插值替换所有完全匹配的 ASCII {{占位名}};若插入外部文字到 HTML,应先用转义HTML。邮件校验有意采用常见 ASCII 地址子集,不声称覆盖完整 RFC 邮箱语法;IPv4 拒绝多余前导零,十六进制色接受 3、4、6 或 8 位形式。

1.1 Base64、正则、URL 与日期

1.1 新增的四个模块同样是确定性、全平台、零宿主权限模块;纯 URL 解析不会获得或发起网络访问。

模块成员
Base64编码(文): 文解码(文): 文网址编码(文): 文解网址编码(文): 文
正则匹配(模式, 文字): 理首项(模式, 文字): 文?替换全部(模式, 文字, 替换): 文分割(模式, 文字): 列<文>
URL是否合法(文): 理协议(文): 文主机(文): 文?端口(文): 数?路径(文): 文查询值(文, 名): 文?合并(基址, 相对址): 文
日期是否合法(文): 理是否闰年(年): 理加天(日期, 天数): 文相差天数(开始, 结束): 数
「标准:Base64」 Base64;
「标准:正则」 正则;
「标准:URL」 URL;
「标准:日期」 日期;

 Base64.解码(Base64.编码「言序」));
 正则.首项「[0-9]+」「版本 1.1.1」);
 URL.合并「https://docs.yanxu.dev/reference/」「../standard-library」);
 日期.加天「2026-07-14」30);

Base64.网址编码使用 URL 安全字母表且不写=填充,两个解码入口都要求结果是 UTF-8。正则采用 Unicode 感知的线性时间引擎,不支持反向引用或环视;替换文字中的$0$1$名称可引用捕获,$$产生字面美元符号。

URL.是否合法外,非法 URL 会产生可捕获错误。端口只返回地址中显式写出的端口;查询值返回第一个同名值并完成百分号解码,无对应项时返回路径保留 URL 的百分号编码形式。

日期只接受0001-01-019999-12-31YYYY-MM-DD公历形式。年份和加天数量必须是安全整数;相差天数(开始, 结束)返回“结束减开始”,结束更早时为负数,任何越界运算都会明确报错。

测试

测试.断言(理, 文)测试.相等(任意, 任意)测试.非空(任意, 文)用于在言序规格中主动失败。更完整的目录级过滤、并发、超时、预期失败和 JSON 报告见命令行工具