扩展库 / ansi
ansi
ANSI 样式、颜色和光标序列的纯文本构件。
使用 XRT 分配独立结果,不会写终端,也不会截断长文本。2026-10-26 重建发布物后,Windows/Linux x64 包级门禁均通过严格 C、线程隔离、Linux ASan/UBSan、XLang 边界和双语固定输出;两平台的完整范例、边界及 C 单文件范例也分别通过独立 EXE AOT。
API
| 函数 | 用途 |
|---|---|
bold / dim / italic / underline / blink / inverse / hidden / strike | 文本样式 |
fg / bg / fg256 / bg256 / fgTrue / bgTrue | 16 色、256 色和 RGB 颜色 |
up / down / left / right / nextLine / prevLine / column | 光标移动 |
clearScreen / clearLine / clearToEnd / hideCursor / showCursor | 终端控制序列 |
title / strip / displayWidth | 安全标题、CSI/OSC 剥离与单行列宽估算 |
xlang
import ansi
string styled = ansi.fg("中文", 32)
println(ansi.strip(styled))
println(ansi.displayWidth(styled))
displayWidth 将常见零宽字符计为零列,但只是终端列宽估算,不承诺 ZWJ 复合 emoji 等所有 Unicode 字素簇精确;U+00AD 软连字符的宽度依赖换行,现明确拒绝。文本入口拒绝内嵌 NUL,C 样式与颜色入口拒绝无效 UTF-8;标题和 OSC 载荷拒绝双向控制符,畸形 ANSI、OSC 载荷中的 DEL/C1 控制字符和非法颜色参数报错。旧共享快照缺符号阻断在 2026-10-26 两平台默认门禁不再复现;本次签收不代表终端实际渲染、其他架构或全产品准入。完整合同、C 所有权及验证命令见包内 README。
2026-10-27:29 个原生文本入口明确返回 XRT 分配的 char*,由 XLang @owned string 直接接管,不再经过 point 转发。Windows 默认门禁和 Linux C ASan/UBSan、XLang JIT/AOT 门禁通过,包含无效 UTF-8 与分配故障恢复;输入校验和结果长度扫描仍有成本。
2026-10-29:17 条文本入口不再通过校验函数返回输入,去掉一次整段正文复制,公开 API 与原生 ABI 不变。完整输入/返回夹具无正文复制赋值,29 条结果仍直接接管,30 条实际生成原型与 C 头严格核对。包含调用处参数构造的 67 项语言分配预算由 17 项失败降为零;C 同输入 33 项预算也通过,但其借用常量的成本与语言参数构造不同,不宣称全链零开销。
两平台最新默认门禁覆盖严格 C、线程、Linux ASan/UBSan、OOM 恢复、17 条 NUL 负例、C/XLang 八行固定输出及各九条独立 AOT;有子进程超时与输入指纹,失败保留现场。仍仅签收纯文本序列和有限单行宽度合同,不代表终端渲染或完整 Unicode 排版;验证命令、分配成本及范围见 README。