diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index a45e765..7a5438b 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -27,11 +27,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
- - name: 检出言序 1.1.8
+ - name: 检出言序 1.1.20
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with:
repository: YanXuLang/yanxu
- ref: v1.1.8
+ ref: v1.1.20
path: target/yanxu-core
- name: 构建言序
run: cargo build --manifest-path target/yanxu-core/Cargo.toml --locked --bin yanxu
@@ -71,11 +71,11 @@ jobs:
sudo apt-get -o Acquire::Retries=5 install -y \
libfontconfig1 libwayland-client0 libxkbcommon0 libxkbcommon-x11-0 \
libx11-6 xvfb
- - name: 检出言序 1.1.8
+ - name: 检出言序 1.1.9(言界已验证基线)
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6
with:
repository: YanXuLang/yanxu
- ref: v1.1.8
+ ref: v1.1.9
path: target/yanxu-core
- name: 构建言序并锁定言界
run: |
diff --git a/content/docs/design/roadmap.mdx b/content/docs/design/roadmap.mdx
index 500a0ce..6e70193 100644
--- a/content/docs/design/roadmap.mdx
+++ b/content/docs/design/roadmap.mdx
@@ -1,6 +1,6 @@
---
title: 长期路线图
-description: 言序从 0.3 数据与诊断阶段到 1.0 稳定语言的演进边界。
+description: 言序从早期语义建设到 1.1.20 稳定工程边界及 2.0 前瞻。
---
本路线以“先稳定语义,再优化执行”为原则。版本号代表语言能力的稳定层级,而不是单纯的功能数量。
@@ -113,7 +113,7 @@ description: 言序从 0.3 数据与诊断阶段到 1.0 稳定语言的演进边
1.0 已发布源代码兼容策略、稳定模块/包/锁/字节码与报告格式 1、Rust/C/WASI 嵌入边界、完整工具链,以及“诗笺台”“账册分析”两个中等规模参考项目。1.0 之后新语法必须经过 YXP 提案、原型、兼容性与工具链影响评审。
-## 1.1:标准库、对象、生产 I/O 与工程化(当前版本 `1.1.8`)
+## 1.1:标准库、对象、生产 I/O 与工程化(当前版本 `1.1.20`)
1.1 的向后兼容扩建已经完成:`Base64`处理标准与 URL 安全 UTF-8 编解码,`正则`提供线性时间 Unicode 匹配,`URL`负责纯地址解析与相对合并,`日期`提供确定性的 ISO 公历运算。四个模块不申请宿主权限,并已同步双运行时、静态类型、机器 API 清单、兼容语料、示例、文档和 VS Code,标准模块总数由 17 个增至 21 个。
@@ -132,6 +132,18 @@ description: 言序从 0.3 数据与诊断阶段到 1.0 稳定语言的演进边
1.1.8 保持上述全部格式与接口兼容,为 Windows x86_64/ARM64 官方运行时保留 8 MiB
所有者线程栈,并以 PE32+ 回归和 Release 制品检查覆盖原生 GUI 回调中的言序方法嵌套。
+1.1.9 为源码、VM、包入口与 YXB 增加统一执行步数入口,并让 GUI、计时器和原生扩展的每个宿主回调独立计量。1.1.10 把 HTTP 4xx/5xx 恢复为可检查状态与正文的普通响应,并把证书验证失败稳定归类为`NET_TLS`。1.1.11 与 1.1.12 分别修复 Windows 锁定依赖路径和 YXB 大整数常量精确往返。
+
+1.1.13 建立模块限定类型、跨模块继承/协议和公开模块重导出;字节码升级到格式 2,模块 API 清单升级到 v2,旧字节码须从源码重建。1.1.14–1.1.16 校准 HTTP、套接字与字节值预算,最终把单个字节值与 HTTP 宿主硬上限统一为 16 MiB,同时保持 HTTP 默认 4 MiB、套接字单次读取 4 MiB。
+
+1.1.15 新增独立本地网络能力,并明确`*`不是敏感地址授权。1.1.17 允许以最窄 IPv4/IPv6 CIDR 授权 VPN fake-IP 等网段,把`进程.执行`最长超时扩展到 24 小时,并修复嵌套宿主事件泵。
+
+1.1.18 与 1.1.19 的标签没有形成稳定 Release;相关工作最终由 1.1.20 交付。稳定版把路径、Git 与注册表依赖发布为内容寻址的不可变 generation,统一包元数据、源码、目录遍历、归档和原生库装载边界,并加入覆盖率、Miri、Sanitizer、八类模糊测试、逐目标 SBOM 和构建来源证明。解析器固定 32 层结构上限;格式化器保留单元素元组的消歧逗号。公开清单、锁、YXB、字节码 2、ABI v1/v2 和工程协议版本均保持不变。
+
+## 1.2–2.0:后续方向
+
+后续版本优先推进参数化类型、稳定诊断、项目级检查、包供应链、可测量性能与编辑器成熟度。真正并发、Edition 2 或其他破坏性变化必须经过独立 YXP、兼容窗口和迁移工具,不把实验能力写成当前承诺。工作区总路线以[长期规划仓库文档](https://github.com/YanXuLang/yanxu)与正式 YXP 为准。
+
## 跨版本工程要求
每个里程碑都必须同时具备:
diff --git a/content/docs/ecosystem/desktop/api-reference.mdx b/content/docs/ecosystem/desktop/api-reference.mdx
index 00267e5..fe0c5aa 100644
--- a/content/docs/ecosystem/desktop/api-reference.mdx
+++ b/content/docs/ecosystem/desktop/api-reference.mdx
@@ -22,7 +22,7 @@ description: 言界常用公开入口与言台版本化原语的索引。
| 容器 | 行、列、堆叠、网格、滚动、列表、标签页、分割面板、菜单、弹出层、画布、图片 |
| 系统服务 | 剪贴板读取/写入、打开文件/多个文件、保存文件、选择目录/多个目录 |
-完整、由源码快照生成的签名参考见[言界 REFERENCE](https://github.com/yanxulang/yanxu-ui/blob/v0.1.0/docs/REFERENCE.md),叙事 API 见[言界 API](https://github.com/yanxulang/yanxu-ui/blob/v0.1.0/docs/API.md)。
+完整、由源码快照生成的签名参考见[言界 REFERENCE](https://github.com/yanxulang/yanxu-ui/blob/v0.1.1/docs/REFERENCE.md),叙事 API 见[言界 API](https://github.com/yanxulang/yanxu-ui/blob/v0.1.1/docs/API.md)。
## 言台原语
diff --git a/content/docs/ecosystem/desktop/capability-matrix.mdx b/content/docs/ecosystem/desktop/capability-matrix.mdx
index f4350ef..d36a216 100644
--- a/content/docs/ecosystem/desktop/capability-matrix.mdx
+++ b/content/docs/ecosystem/desktop/capability-matrix.mdx
@@ -1,6 +1,6 @@
---
title: 平台能力表
-description: 言台与言界 0.1.0 在六个正式桌面目标上的能力和验证范围。
+description: 言台 0.1.0 与言界 0.1.1 在六个正式桌面目标上的能力和验证范围。
---
`支持`表示同一公开接口已实现并进入六目标 CI;`桌面验证`表示自动测试可覆盖确定部分,但最终体验还依赖真实用户会话。
@@ -34,6 +34,6 @@ x86_64-unknown-linux-gnu
aarch64-unknown-linux-gnu
```
-每个目标都会核对动态库实际架构、包清单摘要、言序 1.1.8 类型检查、ABI 集成、API 漂移和 Release 构建。真实窗口自动退出在六个执行器运行;Linux 使用 Xvfb 验证 X11 路径,Wayland 与实际输入法会话需另做桌面冒烟。
+每个目标都会核对动态库实际架构、包清单摘要、言序 1.1.9 类型检查、ABI 集成、API 漂移和 Release 构建。真实窗口自动退出在六个执行器运行;Linux 使用 Xvfb 验证 X11 路径,Wayland 与实际输入法会话需另做桌面冒烟。该矩阵是 0.1.1 的发布证据,不代表已经兼容当前核心 1.1.20。
运行时应调用言台`能力查询()`,根据字段判断可选能力;不要只根据操作系统名称猜测。
diff --git a/content/docs/ecosystem/desktop/choosing.mdx b/content/docs/ecosystem/desktop/choosing.mdx
index a99f7e0..30b0956 100644
--- a/content/docs/ecosystem/desktop/choosing.mdx
+++ b/content/docs/ecosystem/desktop/choosing.mdx
@@ -3,13 +3,15 @@ title: 选择 GUI 路线
description: 根据项目阶段、控件需求、稳定性与定制程度选择言窗或言界。
---
+当前稳定言序 1.1.20 与言包 0.6.1 的新项目应选择言窗 1.0。言界 0.1.1 只保留言序 1.1.9 + 言包 0.5.0 的已验证预览组合;在新版本发布前,不要把它与当前工具链混装。
+
## 直接选择言窗
以下情况优先使用稳定的[`yanxu-gui` 1.0](/ecosystem/desktop/gui/):
- 现有应用已经上线,当前控件和主题足够;
- 希望依赖成熟的 egui 生态与立即模式开发方式;
-- 需要言界`0.1.0`尚未提供的复杂控件;
+- 需要言界`0.1.1`尚未提供的复杂控件;
- 不希望在首版阶段承担新 API 迭代成本。
- 需要由 CI 汇总并校验的 Windows、macOS、Linux 六目标原生制品。
diff --git a/content/docs/ecosystem/desktop/compatibility.mdx b/content/docs/ecosystem/desktop/compatibility.mdx
index 1415e22..9b89704 100644
--- a/content/docs/ecosystem/desktop/compatibility.mdx
+++ b/content/docs/ecosystem/desktop/compatibility.mdx
@@ -19,15 +19,16 @@ description: 言界、言台、言序、言包、言据和言窗之间的兼容
| 组件 | 兼容范围 | 已验证版本 |
| --- | --- | --- |
-| 言序 | `>=1.1.8`,语言规范 1 | 1.1.8 |
+| 言序 | 清单声明`>=1.1.9`;当前可复现基线固定 1.1.9 | 1.1.9 |
| 言包 | 格式 2 清单与锁文件 | 0.5.0 |
| 言台 | `^0.1`,ABI v2 | 0.1.0 |
-| 言界 | `^0.1` | 0.1.0 |
+| 言界 | `^0.1` | 0.1.1 |
| 言据 | `^1.1` | 1.1.2 |
| 言窗 | 独立并行路线 | 1.0.0 |
-言界要求言序`1.1.8`提供 Windows VM 所有者线程的 8 MiB 栈修复;言台本身仍兼容
-`>=1.1.7`。新路线不会替换、废弃或强制迁移`yanxu-gui`。
+言界 0.1.1 要求言序 1.1.9,以获得 Windows VM 所有者线程栈修复和按宿主事件隔离的执行步数预算;本站 CI 固定复现该发布基线。言台本身仍兼容`>=1.1.7`,言界的锁定发布继续使用言据 1.1.2。
+
+言界清单虽声明`>=1.1.9`,但 0.1.1 源码目前不能通过言序 1.1.20 的静态检查;同时言包 0.6.1 最低要求核心 1.1.17。因此不存在“言序 1.1.20 + 言包 0.6.1 + 言界 0.1.1”的受支持组合。当前稳定工具链使用言窗 1.0;言界等待后续版本修复并重新发布。新路线不会替换、废弃或强制迁移`yanxu-gui`。
## 版本政策
diff --git a/content/docs/ecosystem/desktop/complete-example.mdx b/content/docs/ecosystem/desktop/complete-example.mdx
index d611d56..d539069 100644
--- a/content/docs/ecosystem/desktop/complete-example.mdx
+++ b/content/docs/ecosystem/desktop/complete-example.mdx
@@ -3,14 +3,14 @@ title: 完整示例
description: 一个包含菜单、列表、分割面板、标签页、文本和画布的可运行言界应用。
---
-以下源码与文档仓库`examples/ecosystem/desktop/综合控件展示.yx`完全一致,并由 CI 使用言序`1.1.8`执行类型检查和 Release YXB 构建。
+以下源码与文档仓库`examples/desktop/综合控件展示.yx`完全一致,并由 CI 使用言界 0.1.1 已验证的言序`1.1.9`执行类型检查和 Release YXB 构建。当前核心用户应先阅读[版本兼容政策](/ecosystem/desktop/compatibility/)中的兼容缺口。
```yanxu
引「包:言界」为 界面;
定 应用 为 界面.应用(「言界综合控件展示」);
-定 窗口 为 应用.窗口({「标题」:「言界 0.1.0」,「宽」:960,「高」:700,「最小宽」:720,「最小高」:520});
+定 窗口 为 应用.窗口({「标题」:「言界 0.1.1」,「宽」:960,「高」:700,「最小宽」:720,「最小高」:520});
定 主列 为 窗口.列({「内边距」:18,「间距」:10});
@@ -59,4 +59,4 @@ description: 一个包含菜单、列表、分割面板、标签页、文本和
应用.运行();
```
-项目清单使用[快速开始](/ecosystem/desktop/quick-start/)中的言界`v0.1.0`依赖和四项权限。先运行`yanbao 装`,再用`yanbao 查`检查;开发桌面运行应用,发布时执行`yanbao 构 --release --bundle`。
+项目清单使用[快速开始](/ecosystem/desktop/quick-start/)中的言界`v0.1.1`依赖和四项权限。先运行`yanbao 装`,再用`yanbao 查`检查;开发桌面运行应用,发布时执行`yanbao 构 --release --bundle`。
diff --git a/content/docs/ecosystem/desktop/configuration.mdx b/content/docs/ecosystem/desktop/configuration.mdx
index 619323f..dc1adbc 100644
--- a/content/docs/ecosystem/desktop/configuration.mdx
+++ b/content/docs/ecosystem/desktop/configuration.mdx
@@ -7,7 +7,7 @@ description: 固定言界、言台和言据版本,并为 GUI 系统服务声
```toml
[依赖]
-言界 = { 包 = "yanxu-ui", git = "https://github.com/yanxulang/yanxu-ui.git", 修订 = "v0.1.0", 版 = "^0.1" }
+言界 = { 包 = "yanxu-ui", git = "https://github.com/yanxulang/yanxu-ui.git", 修订 = "v0.1.1", 版 = "^0.1" }
[权限]
图形界面 = true
diff --git a/content/docs/ecosystem/desktop/controls.mdx b/content/docs/ecosystem/desktop/controls.mdx
index c7b784a..2039602 100644
--- a/content/docs/ecosystem/desktop/controls.mdx
+++ b/content/docs/ecosystem/desktop/controls.mdx
@@ -1,6 +1,6 @@
---
title: 控件
-description: 使用言界 0.1.0 的基础、输入、导航和绘制控件。
+description: 使用言界 0.1.1 的基础、输入、导航和绘制控件。
---
所有高级控件都由言序实现,并共享显示、启用、焦点、尺寸、边距、样式、事件和无障碍接口:
diff --git a/content/docs/ecosystem/desktop/index.mdx b/content/docs/ecosystem/desktop/index.mdx
index 464b595..da9d7ad 100644
--- a/content/docs/ecosystem/desktop/index.mdx
+++ b/content/docs/ecosystem/desktop/index.mdx
@@ -22,11 +22,15 @@ winit,适合需要稳定、完整控件和六目标发布的应用;**言界
| 路线 | 版本 | 最低言序 | Windows | macOS | Linux GNU |
| --- | ---: | ---: | --- | --- | --- |
| 言窗 `yanxu-gui` | 1.0.0 | 1.1.12 | x86-64 / ARM64 | x86-64 / ARM64 | x86-64 / ARM64 |
-| 言界 + 言台 | 0.1.x | 1.1.8 | x86-64 / ARM64 | x86-64 / ARM64 | x86-64 / ARM64 |
+| 言界 0.1.1 + 言台 0.1.0 | 0.1.x | 1.1.9 | x86-64 / ARM64 | x86-64 / ARM64 | x86-64 / ARM64 |
言窗 1.0 的 Linux GNU 制品最高需要 glibc 2.39;不支持 musl、WebAssembly、移动平台
或 32 位目标。言界/言台有独立版本和兼容文档,升级一条路线不会隐式升级另一条。
+
+ 言界 0.1.1 的发布门禁只验证言序 1.1.9;其源码目前不能通过言序 1.1.20 的静态检查,言包 0.6.1 又要求核心至少 1.1.17。当前稳定工具链的新项目应选择言窗 1.0。言界页面保留为锁定 1.1.9 + 言包 0.5.0 的预览路线,等待后续言界版本重新建立兼容线。
+
+
## 两条路线的边界
言窗公开应用、窗口、布局、控件、事件、图片、画布、剪贴板和文件对话框对象,控件由
diff --git a/content/docs/ecosystem/desktop/quick-start.mdx b/content/docs/ecosystem/desktop/quick-start.mdx
index 0f426bf..a0f01d9 100644
--- a/content/docs/ecosystem/desktop/quick-start.mdx
+++ b/content/docs/ecosystem/desktop/quick-start.mdx
@@ -1,20 +1,24 @@
---
title: 快速开始
-description: 使用言序 1.1.8 和言包安装言界,构建第一个原生窗口。
+description: 使用言序 1.1.9、言包 0.5.0 与言界 0.1.1 复现已验证的预览组合。
---
-先确认`yanxu --version`为`1.1.8`或兼容版本,`yanbao --version`为`0.5.0`或兼容版本。创建普通言序项目后,在`言序.toml`中加入言界:
+
+ 本页复现言界 0.1.1 发布时的已验证组合:言序 1.1.9 与言包 0.5.0。言序 1.1.20 会在言界源码的可空目标变量处报告类型错误,言包 0.6.1 也不能运行在 1.1.9 上。使用当前稳定工具链时,请改走[言窗 1.0](/ecosystem/desktop/gui/)。
+
+
+先确认`yanxu --version`为`1.1.9`,`yanbao --version`为`0.5.0`。创建普通言序项目后,在`言序.toml`中加入言界:
```toml
[包]
格式 = 2
名称 = "我的窗口"
版本 = "0.1.0"
-言序 = ">=1.1.8"
+言序 = ">=1.1.9"
入口 = "src/主.yx"
[依赖]
-言界 = { 包 = "yanxu-ui", git = "https://github.com/yanxulang/yanxu-ui.git", 修订 = "v0.1.0", 版 = "^0.1" }
+言界 = { 包 = "yanxu-ui", git = "https://github.com/yanxulang/yanxu-ui.git", 修订 = "v0.1.1", 版 = "^0.1" }
[权限]
图形界面 = true
diff --git a/content/docs/ecosystem/desktop/troubleshooting.mdx b/content/docs/ecosystem/desktop/troubleshooting.mdx
index 57b6e5d..15a3808 100644
--- a/content/docs/ecosystem/desktop/troubleshooting.mdx
+++ b/content/docs/ecosystem/desktop/troubleshooting.mdx
@@ -5,7 +5,7 @@ description: 定位依赖锁、权限、显示会话、ABI、绘制、资源和
## 包无法解析或原生库不匹配
-确认依赖使用存在的`v0.1.0`标签,删除手工复制的动态库,再在目标平台运行`yanbao 装`。检查`言序.lock`中的目标、ABI、SHA-256 和大小;不要复用另一架构的锁。
+确认言界依赖使用存在的`v0.1.1`标签、言台由锁图解析到兼容的`v0.1.0`,删除手工复制的动态库,再在目标平台运行`yanbao 装`。检查`言序.lock`中的目标、ABI、SHA-256 和大小;不要复用另一架构的锁。
## 权限错误
diff --git a/content/docs/ecosystem/desktop/ui-architecture.mdx b/content/docs/ecosystem/desktop/ui-architecture.mdx
index b6148f7..ba3398c 100644
--- a/content/docs/ecosystem/desktop/ui-architecture.mdx
+++ b/content/docs/ecosystem/desktop/ui-architecture.mdx
@@ -1,6 +1,6 @@
---
title: 言界架构
-description: 言界 0.1.0 的保留模式控件树、布局、事件、文本与渲染管线。
+description: 言界 0.1.1 的保留模式控件树、布局、事件、文本与渲染管线。
---
言界除调用言台的边界模块外全部使用言序编写。一个窗口拥有一棵长期存在的控件树;属性变化标记布局或绘制脏区,下一帧只重新计算受影响的子树,再把渲染树编码为一个`YXDR`帧提交。
@@ -30,4 +30,6 @@ description: 言界 0.1.0 的保留模式控件树、布局、事件、文本与
按钮等高级控件完整处理悬停、按下、键盘激活和绘制;言台没有“创建按钮”操作。言界源码也不包含 Win32、AppKit、Wayland、X11 或平台指针分支。
-实现细节见[言界架构](https://github.com/yanxulang/yanxu-ui/blob/v0.1.0/docs/ARCHITECTURE.md)与[API 文档](https://github.com/yanxulang/yanxu-ui/blob/v0.1.0/docs/API.md)。
+0.1.1 会按样式名与悬停、按下、焦点、禁用状态位缓存主题解析结果,并缓存基础样式与控件种类样式的合并,避免每个控件在每帧重复深合并。缓存只改变渲染开销,不改变主题字段、继承或状态优先级。
+
+实现细节见[言界架构](https://github.com/yanxulang/yanxu-ui/blob/v0.1.1/docs/ARCHITECTURE.md)与[API 文档](https://github.com/yanxulang/yanxu-ui/blob/v0.1.1/docs/API.md)。
diff --git a/content/docs/getting-started/daily-workflow.mdx b/content/docs/getting-started/daily-workflow.mdx
index 427522a..82cb594 100644
--- a/content/docs/getting-started/daily-workflow.mdx
+++ b/content/docs/getting-started/daily-workflow.mdx
@@ -9,6 +9,7 @@ description: 用检查、格式化、测试、运行和构建形成可重复的
yanbao check
yanxu fmt --write src
yanbao test
+yanbao audit
yanbao run
yanbao build --release
```
@@ -18,9 +19,10 @@ yanbao build --release
| `check` | 发现词法、语法、类型、模块与清单问题 | 每次编辑后 |
| `fmt --write` | 写回稳定、幂等的规范格式 | 提交前或保存时 |
| `test` | 执行目录规格并比较期望输出 | 改动行为后 |
+| `audit` | 复核锁图、来源、许可证、漏洞、目标与原生制品 | 依赖变化后及发布前 |
| `run` | 通过项目入口与声明权限运行 | 本地验证完整流程 |
| `build --release` | 生成优化的 YXB 或目标制品 | 发布候选阶段 |
依赖变化后先运行`yanbao install`,并把`言序.toml`与`言序.lock`一起提交。不要手工修改锁文件;需要理解某个包为何出现时,使用`yanbao tree`与`yanbao why 包名`。
-CI 至少应执行检查、格式化一致性、规格测试和构建。编辑器诊断用于缩短反馈时间,但不能代替这些可重复命令。命令全集见[CLI 参考](/reference/cli/),项目边界见[项目工程](/projects/)。
+CI 至少应执行检查、格式化一致性、规格测试、依赖审计和构建。需要机器消费时使用言包的 JSON 或 JSON Lines 输出,并保留非零退出状态。编辑器诊断用于缩短反馈时间,但不能代替这些可重复命令。命令全集见[CLI 参考](/reference/cli/),项目边界见[项目工程](/projects/)。
diff --git a/content/docs/getting-started/first-program.mdx b/content/docs/getting-started/first-program.mdx
index 02a8c21..3426add 100644
--- a/content/docs/getting-started/first-program.mdx
+++ b/content/docs/getting-started/first-program.mdx
@@ -32,4 +32,4 @@ yanxu 初见.yx
yanxu fmt --write 初见.yx
```
-本页程序由 CI 使用言序 1.1.8 实际检查、格式化和执行。下一步把单一文卷扩展成[第一个项目](/getting-started/first-project/)。
+本页程序由 CI 使用言序 1.1.20 实际检查、格式化和执行。下一步把单一文卷扩展成[第一个项目](/getting-started/first-project/)。
diff --git a/content/docs/getting-started/first-project.mdx b/content/docs/getting-started/first-project.mdx
index e48610e..0d92481 100644
--- a/content/docs/getting-started/first-project.mdx
+++ b/content/docs/getting-started/first-project.mdx
@@ -40,4 +40,4 @@ yanbao run
`法`声明有明确参数与归值类型的函数;`定`创建不可重新绑定的名称;`逐…于…`按顺序迭代列。源码在语言层说明意图,项目清单和锁图在工程层固定入口、依赖与权限。
-本页程序同样由 CI 使用言序 1.1.8 检查、格式化和执行。接下来建立[日常工作流](/getting-started/daily-workflow/)。
+本页程序同样由 CI 使用言序 1.1.20 检查、格式化和执行。接下来建立[日常工作流](/getting-started/daily-workflow/)。
diff --git a/content/docs/getting-started/installation.mdx b/content/docs/getting-started/installation.mdx
index e59ed5e..70c4c9e 100644
--- a/content/docs/getting-started/installation.mdx
+++ b/content/docs/getting-started/installation.mdx
@@ -1,6 +1,6 @@
---
title: 安装
-description: 在 Windows、macOS 或 Linux 上安装并验证言序 1.1.8 与言包 0.5.0。
+description: 在 Windows、macOS 或 Linux 上安装并验证言序 1.1.20 与言包 0.6.1。
---
## macOS 与 Linux
@@ -29,7 +29,16 @@ yanbao --version
yanbao doctor
```
-稳定基线应分别报告言序 1.1.8 与言包 0.5.0。言包复用 `PATH` 中的言序运行时,不安装第二份核心,也不要求 Rust。
+稳定基线应分别报告言序 1.1.20 与言包 0.6.1。言包复用 `PATH` 中的言序运行时,不安装第二份核心,也不要求 Rust。言包普通命令最低要求言序 1.1.17;完整依赖安全审计需要 1.1.20 提供的十二项审计能力声明。
+
+需要复现指定版本时,可以固定安装:
+
+```sh
+curl -fsSL https://get.yanxu.dev | YANXU_VERSION=1.1.20 sh
+curl -fsSL https://get.yanxu.dev/yanbao | YANBAO_VERSION=0.6.1 sh
+```
+
+Windows PowerShell 分别设置`$env:YANXU_VERSION = "1.1.20"`或`$env:YANBAO_VERSION = "0.6.1"`后,再运行对应安装器。不要固定到 1.1.18 或 1.1.19;这两个标签只保留追溯快照,没有稳定 Release。
若命令不存在,先确认安装器提示的目录已经加入 `PATH`;若版本较旧,重新运行对应安装器。只在参与语言实现或安装器不支持当前环境时,改用[从源码构建](/tooling/source-build/)。
diff --git a/content/docs/guides/embedding.mdx b/content/docs/guides/embedding.mdx
index b769665..f1fa724 100644
--- a/content/docs/guides/embedding.mdx
+++ b/content/docs/guides/embedding.mdx
@@ -18,7 +18,7 @@ assert_eq!(result.output, ["42"]);
宿主可设置`config.arguments`,由程序通过`环境.参数()`读取。返回值为`字节串`时,`Execution.value`仍是无泄露的长度摘要,原始内容仅出现在`value_bytes: Option>`。
-默认配置使用字节码 VM、静态检查和无宿主能力沙箱。可信宿主可用`PermissionSet`逐项开放文件根目录、网络外连主机、TCP 监听地址、UDP 绑定地址或环境变量;`allow_process`开放子进程能力。`EngineConfig::unrestricted`必须由宿主显式选择。
+默认配置使用字节码 VM、静态检查和无宿主能力沙箱。可信宿主可用`PermissionSet`逐项开放文件根目录、网络外连主机或 CIDR、显式本地网络、TCP 监听地址、UDP 绑定地址或环境变量;`allow_process`开放子进程能力。`EngineConfig::unrestricted`必须由宿主显式选择。
运行 YXB 时,归档权限是应用的申请,不是授权。`PermissionSet::intersect`把申请与宿主配置合并;应用无法超过宿主上限,执行结束后也会恢复原宿主权限。1.1.7 新增的 GUI、剪贴板、文件对话框、通知、托盘、外部地址和全局快捷键也分别相交。沙箱宿主即使载入声明了全权限且重新计算过校验和的 YXB,仍保持沙箱。
@@ -31,6 +31,7 @@ let mut config = EngineConfig::sandboxed(Backend::Bytecode);
config.permissions = PermissionSet::sandboxed()
.allow_file("./data")
.allow_network("api.example.com")
+ .allow_local_network()
.allow_tcp_listen("127.0.0.1")
.allow_udp_bind("127.0.0.1")
.allow_environment("YANXU_PROFILE");
@@ -45,13 +46,14 @@ config.budget = yanxu::budget::ExecutionBudget::new(200_000, 128, 20_000);
[权限]
文件 = ["data", "src"]
网络 = ["api.example.com"]
+本地网络 = false
TCP监听 = ["127.0.0.1"]
UDP绑定 = ["127.0.0.1"]
环境 = ["YANXU_PROFILE"]
进程 = false
```
-`yanxu 包 运行 [路径] [-- 参数...]`按清单权限执行入口。为兼容 0.7 及更早脚本,直接执行`yanxu 文卷.yx`仍是显式不受限模式;运行来源不可信的程序时应使用包运行或嵌入沙箱。模块文件、文件标准库、网络与绑定能力、环境变量在树解释器与 VM 中执行相同权限判定。DNS 后的回环、私网和链路本地目标必须额外以真实 IP 精确授权。
+`yanxu 包 运行 [路径] [-- 参数...]`按清单权限执行入口。为兼容 0.7 及更早脚本,直接执行`yanxu 文卷.yx`仍是显式不受限模式;运行来源不可信的程序时应使用包运行或嵌入沙箱。模块文件、文件标准库、网络与绑定能力、环境变量在树解释器与 VM 中执行相同权限判定。DNS 后的回环、私网、链路本地和 CGNAT 目标必须由应用与宿主同时通过精确 IP 或显式本地网络能力授权;其他敏感网段使用最窄 CIDR。
## C ABI
diff --git a/content/docs/index.mdx b/content/docs/index.mdx
index 4644972..6ba5714 100644
--- a/content/docs/index.mdx
+++ b/content/docs/index.mdx
@@ -6,7 +6,7 @@ description: 从第一行现代中文程序,到具有清晰模块、依赖与
言序是一门由 Rust 实现的现代中文编程语言。中文关键字、中文标识符与全角标点直接进入语法;类型、模块、结构化错误、树解释器、字节码 VM 和工程工具共同约束程序边界。
- 本站对应言序核心 1.1.8、言包 0.5.0、言据 1.1.2 与 VS Code 扩展 1.4.0。页面会区分语言核心、标准库、官方工具和独立生态包,不把规划中的能力写成现状。
+ 本站对应言序核心 1.1.20、言包 0.6.1、言据 1.2.0 与 VS Code 扩展 1.4.0。1.1.18 与 1.1.19 没有形成稳定 Release;从 1.1.17 应直接升级到 1.1.20。页面会区分语言核心、标准库、官方工具和独立生态包,不把规划中的能力写成现状。
## 第一次使用
diff --git a/content/docs/language/binary-data.mdx b/content/docs/language/binary-data.mdx
index e10653f..01b630c 100644
--- a/content/docs/language/binary-data.mdx
+++ b/content/docs/language/binary-data.mdx
@@ -3,7 +3,7 @@ title: 字节串与二进制 I/O
description: 用不可变字节串处理图片、字体、压缩内容和网络协议帧。
---
-`字节串`保存任意二进制,不要求 UTF-8。它不可变、按内容相等,显示为`<字节串 N 字节>`而不泄露内容;单值硬上限为 4 MiB。1.1.4 不新增字节字面量,统一通过`标准:字节`构造。
+`字节串`保存任意二进制,不要求 UTF-8。它不可变、按内容相等,显示为`<字节串 N 字节>`而不泄露内容;1.1.16 起单值硬上限为 16 MiB。语言不提供字节字面量,统一通过`标准:字节`构造。
```yanxu
引「标准:字节」为 字节;
@@ -24,6 +24,8 @@ description: 用不可变字节串处理图片、字体、压缩内容和网络
`网络.请求字节(方法,地址,首部,正文,超时毫秒,最大字节)`按实际字节数发送和限制响应;返回典的`正文`为字节串。调用方可设置业务首部,但不能覆盖`Host`、`Content-Length`、`Transfer-Encoding`或逐跳首部。
+HTTP 默认累计响应预算仍为 4 MiB;显式`最大字节`与 16 MiB 宿主硬上限取较小者。精确等于有效预算的正文可以成功,超限以`NET_LIMIT`完整失败,不会返回截断成功值。套接字单次接收独立保持 4 MiB 上限。
+
## 安全原语
- `随机.安全字节(长度)`使用操作系统 CSPRNG,单次上限 1 MiB。
@@ -31,4 +33,4 @@ description: 用不可变字节串处理图片、字体、压缩内容和网络
- `哈希.恒时相等(左,右)`用于验证 Cookie、Session、CSRF 和 API Token 签名。
- `日期.HTTP日期/解析HTTP日期`读写 IMF-fixdate;`环境.参数`返回`--`后的程序参数。
-这些能力只是上层网络应用的通用底座。1.1.4 不提供 HTML、HTTP 服务端、Web 框架、异步 I/O、服务端 TLS、HTTP/2/3 或 WebSocket。
+这些能力只是上层网络应用的通用底座。语言核心不提供 HTML、HTTP 服务端、Web 框架、异步 I/O、服务端 TLS、HTTP/2/3 或 WebSocket;相关能力由独立生态包演进。
diff --git a/content/docs/language/errors.mdx b/content/docs/language/errors.mdx
index e5f112e..73008c6 100644
--- a/content/docs/language/errors.mdx
+++ b/content/docs/language/errors.mdx
@@ -28,7 +28,7 @@ description: 使用试、救与抛处理结构化运行错误并保留调用踪
| `NET_TIMEOUT` | 解析、连接、TLS、发送或读取超过全程预算 |
| `NET_WRITE` / `NET_READ` | 请求写入或响应读取失败 |
| `NET_LIMIT` | 响应超过大小上限 |
-| `NET_PROTOCOL` / `NET_STATUS` | HTTP 协议/重定向失败或非成功状态 |
+| `NET_PROTOCOL` / `NET_STATUS` | HTTP 协议、重定向或传输层未形成可用响应;普通 4xx/5xx 不是错误 |
| `NET_UTF8` | 响应正文不是 UTF-8 文字 |
请按`.代码`分支,不要解析`.消息`。重新抛出已有误会完整保留代码、类别、位置和踪迹。
@@ -54,7 +54,7 @@ DNS 由操作系统解析器完成,但超时从调用开始计时;DNS、多
## 字节错误
-字节错误类别为`字节`。`BYTES_UTF8`表示严格 UTF-8 解码失败,`BYTES_LIMIT`表示字节串超过 4 MiB,`BYTES_RANGE/BYTES_VALUE/BYTES_TYPE`表示索引、数列项或参数类型无效,`BYTES_RANDOM/BYTES_CRYPTO`表示安全随机源或密码操作失败。
+字节错误类别为`字节`。`BYTES_UTF8`表示严格 UTF-8 解码失败,`BYTES_LIMIT`表示字节串超过 16 MiB,`BYTES_RANGE/BYTES_VALUE/BYTES_TYPE`表示索引、数列项或参数类型无效,`BYTES_RANDOM/BYTES_CRYPTO`表示安全随机源或密码操作失败。
`抛`普通值会以其显示文字创建错误;`抛`已有误值会保留原踪迹。词法、语法和语义错误发生在执行前,不能由`试`捕获。
diff --git a/content/docs/language/index.mdx b/content/docs/language/index.mdx
index 049211d..fb632fd 100644
--- a/content/docs/language/index.mdx
+++ b/content/docs/language/index.mdx
@@ -1,6 +1,6 @@
---
title: 学习语言
-description: 按概念顺序学习言序 1.1.8 的语法、类型、模块与运行语义。
+description: 按概念顺序学习言序 1.1.20 的语法、类型、模块与运行语义。
---
第一次系统学习时,按照侧边栏从核心概念进入组织与可靠性;二进制数据和套接字属于按需选读。完整顺序和不同目标的捷径见[下一步](/getting-started/next-steps/)。
diff --git a/content/docs/language/modules.mdx b/content/docs/language/modules.mdx
index 033a178..3652f0b 100644
--- a/content/docs/language/modules.mdx
+++ b/content/docs/language/modules.mdx
@@ -22,9 +22,22 @@ description: 导入其他文卷,并理解模块路径、命名空间、缓存
模块只执行一次,后续引用复用缓存;成员不能由外部改写,循环引用会报错。
+## 限定类型与公开重导出
+
+1.1.13 起,导入模块中的类或协议在类型位置使用`模块别名.类型名`。限定类型可用于注解、联合、可空、泛型、法类型、继承、协议实现和`是`判断;当前模块自己声明的类型仍可裸写。不同模块中的同名类型拥有不同身份,同一模块经不同别名导入时仍指向同一个类型。
+
+```yanxu
+公 引「控件.yx」为 控件;
+
+类 特殊按钮 承 控件.按钮 纳 控件.可描述 则
+终
+```
+
+顶层`公 引`会把模块作为当前模块的公开成员重导出。包可以用它建立稳定 facade,而不暴露内部文件布局;`yanxu 文 --json`以模块 API 清单 v2 记录声明所有者、完整限定名与重导出路径。旧代码若曾依赖“导入后偶然可以裸写外部类型”,应改为显式限定名。完整步骤见[1.1.13 迁移指南](/reference/migrations/1.1.13/)。
+
## 包与标准模块
-1.1.7 的新项目继续使用格式 2 清单。最低配置只需包信息,依赖和权限按需添加:
+新项目继续使用格式 2 清单。最低配置只需包信息,依赖和权限按需添加:
```toml
[包]
diff --git a/content/docs/projects/build-release.mdx b/content/docs/projects/build-release.mdx
index fddda94..69dea73 100644
--- a/content/docs/projects/build-release.mdx
+++ b/content/docs/projects/build-release.mdx
@@ -24,4 +24,6 @@ yanbao pack
- `--bundle`面向声明了应用元数据的桌面项目,生成当前平台应用目录;它不是跨平台交叉构建器。
- `pack`生成确定性的 `.yxp`分发包。
-同一输入应生成逐字节稳定的 YXB/YXP。摘要用于完整性校验,不等同于发布者签名。发布前还应在目标系统验证启动、权限拒绝路径和资源完整性;桌面 Bundle 的平台细节见[应用构建](/tooling/building-apps/)。
+同一输入应生成逐字节稳定的 YXB/YXP。1.1.20 从已打开的包根捕获入口、资源、图标和原生制品的稳定文件快照;归档解码同时限制压缩输入、完整展开量、条目、路径和数据预算,并拒绝附加 gzip member、尾随数据、链接、特殊文件与等价路径碰撞。
+
+摘要用于完整性校验,不等同于发布者签名。言序正式 Release 还提供逐目标构建元数据、CycloneDX 1.5 SBOM、构建来源证明和签名复验;应用发布者应采用同样的“先验证摘要,再验证来源身份”顺序。发布前还应在目标系统验证启动、权限拒绝路径和资源完整性;桌面 Bundle 的平台细节见[应用构建](/tooling/building-apps/)。
diff --git a/content/docs/projects/dependencies.mdx b/content/docs/projects/dependencies.mdx
index 4c589c2..5c66f4c 100644
--- a/content/docs/projects/dependencies.mdx
+++ b/content/docs/projects/dependencies.mdx
@@ -17,6 +17,8 @@ yanbao install
格式 2 锁文件固定直接和传递包的精确版本、Git 提交、内容校验和、来源、依赖边、入口、导出、最低言序版本、目标平台与原生制品。检查、运行和构建只使用这张图,不会在导入时临时重新选版。
+1.1.20 会把路径、Git 与注册表依赖在完整校验后发布为内容寻址、只读的 generation;解释器、VM、检查器、LSP、文档和构建消费解析阶段保存的同一目录能力,不会再按可变来源路径重新打开。Git 缓存使用锁定的 bare 对象库与 40 位精确提交,注册表旧缓存也只在复验后迁入不可变快照。首次升级建议联网运行一次`yanbao install`填充新缓存;离线模式不会信任未复验的旧目录。
+
```sh
yanbao tree
yanbao why http
@@ -26,3 +28,5 @@ yanbao audit
```
清单变化后提交新的清单和锁文件。离线安装只能复用已缓存或`vendor`保存、且与锁图逐包一致的内容。依赖包的权限不会传给应用;顶层项目必须独立声明所需能力。
+
+包元数据与源码都有固定预算:单个清单 4 MiB、锁文件 16 MiB、辖制清单 8 MiB、注册表索引 32 MiB,单个模块源码 8 MiB。最终文件符号链接、重解析点、特殊文件、读取期间身份替换以及可移植大小写或 Unicode 路径碰撞都会被拒绝。超过预算的工程应拆分模块或清理重复元数据,而不是放宽宿主内存限制。
diff --git a/content/docs/projects/manifest.mdx b/content/docs/projects/manifest.mdx
index be680db..b9fda88 100644
--- a/content/docs/projects/manifest.mdx
+++ b/content/docs/projects/manifest.mdx
@@ -18,6 +18,7 @@ description: 阅读格式 2 的言序.toml,并区分必需表与可选工程
[权限]
文件 = []
网络 = []
+本地网络 = false
TCP监听 = []
UDP绑定 = []
环境 = []
diff --git a/content/docs/projects/permissions.mdx b/content/docs/projects/permissions.mdx
index 67783e0..8ad53f0 100644
--- a/content/docs/projects/permissions.mdx
+++ b/content/docs/projects/permissions.mdx
@@ -9,6 +9,7 @@ description: 以最小能力声明宿主访问,并理解应用申请与宿主
[权限]
文件 = ["data"]
网络 = ["api.example.com"]
+本地网络 = false
TCP监听 = ["127.0.0.1"]
UDP绑定 = []
环境 = ["YANXU_PROFILE"]
@@ -16,8 +17,10 @@ UDP绑定 = []
原生扩展 = false
```
-文件范围相对包根目录;网络列出允许外连的主机;TCP 与 UDP 绑定能力单独声明;环境只暴露列出的变量。进程和原生扩展是布尔能力。桌面相关能力也彼此独立,不会隐式授予文件、网络或进程。
+文件范围相对包根目录;网络列出允许外连的主机、地址或最窄 CIDR;TCP 与 UDP 绑定能力单独声明;环境只暴露列出的变量。进程和原生扩展是布尔能力。桌面相关能力也彼此独立,不会隐式授予文件、网络或进程。
-使用`yanxu 包 运行`或`yanbao run`按清单运行项目。直接执行单一文卷为兼容旧脚本保留不受限行为,因此不适合运行不可信来源。嵌入宿主默认应使用沙箱配置,并设置执行步数、调用深度与集合大小预算。
+`网络 = ["*"]`只放行普通公网目标,不会隐式放行回环、私网、链路本地、CGNAT 或其他敏感地址。访问用户配置的本地服务应显式声明`本地网络 = true`;VPN fake-IP 等不属于该集合的网段应添加最窄 CIDR,例如`198.18.0.0/15`。URL 预检、DNS 解析后的真实 IP 和宿主/应用权限交集使用同一规则,宿主仍可进一步收窄范围。
-完整 14 项能力矩阵见[权限参考](/reference/permissions/),资源如何进入制品见[项目清单](/projects/manifest/)。
+使用`yanxu 包 运行`或`yanbao run`按清单运行项目。直接执行单一文卷为兼容旧脚本保留不受限行为,因此不适合运行不可信来源。嵌入宿主默认应使用沙箱配置,并设置执行步数、调用深度与集合大小预算;命令行可通过`--max-steps`或`YANXU_MAX_STEPS`收紧单次执行步数。
+
+完整 15 项能力矩阵见[权限参考](/reference/permissions/),资源如何进入制品见[项目清单](/projects/manifest/)。
diff --git a/content/docs/reference/cli.mdx b/content/docs/reference/cli.mdx
index 4082ea1..57ae4b3 100644
--- a/content/docs/reference/cli.mdx
+++ b/content/docs/reference/cli.mdx
@@ -1,5 +1,5 @@
---
-title: 1.1.8 命令工具
+title: 1.1.20 命令工具
description: 使用静态检查、格式化、测试、YXB、字节码、调试、文档与 LSP。
---
@@ -11,7 +11,20 @@ yanxu 格 src/主.yx
yanxu 格 --写 src/主.yx
```
-`查`会运行词法、语法、语义与静态类型阶段,但不执行用户代码。`格`默认把规范源码写到标准输出,`--写`才替换文件。格式化结果是幂等的。
+`查`会运行词法、语法、语义与静态类型阶段,但不执行用户代码。`格`默认把规范源码写到标准输出,`--写`才替换文件。格式化结果是幂等的;1.1.20 会保留单元素元组`(值,)`末尾用于消歧的逗号。
+
+解析器统一限制语句、表达式与类型结构为 32 层。超限源码会在格式化、检查或执行前得到确定的语法错误;请用具名中间值、辅助函数、类或协议拆分结构,不要依赖提高运行时预算绕过。
+
+## 执行预算
+
+源码、VM、包入口和 YXB 运行都可使用全局步数预算:
+
+```sh
+yanxu --max-steps 250000 src/主.yx
+YANXU_MAX_STEPS=250000 yanxu run build/应用.yxb
+```
+
+命令行旗标优先于环境变量,未设置时默认为 1,000,000 步。GUI、计时器和原生扩展的每个宿主回调独立计量,多个正常回调不会累计耗尽同一份余额;单个回调中的死循环仍会被终止。
## 规格测试
@@ -39,7 +52,7 @@ yanxu 文 src api/全库.md
yanxu 基准 10
```
-`调`适合一次性打印语句踪迹;编辑器通过`yanxu 调试服务`启动 DAP 适配器,可设置源码断点、继续、单步并检查栈与作用域变量。`文`只记录`公`API,读取`///`/`#:`声明注释并生成类型链接、稳定锚点与模块索引;目录输入会汇总多模块。
+`调`适合一次性打印语句踪迹;编辑器通过`yanxu 调试服务`启动 DAP 适配器,可设置源码断点、继续、单步并检查栈与作用域变量。`文`只记录`公`API,读取`///`/`#:`声明注释并生成类型链接、稳定锚点与模块索引;目录输入会汇总多模块。`文 --json`使用模块 API 清单 v2,记录类型所有者、完整限定名、结构化类型引用与公开重导出路径。
## LSP
diff --git a/content/docs/reference/error-codes.mdx b/content/docs/reference/error-codes.mdx
index aff5c92..ee21e1a 100644
--- a/content/docs/reference/error-codes.mdx
+++ b/content/docs/reference/error-codes.mdx
@@ -10,7 +10,7 @@ description: 按稳定代码处理运行、网络、套接字、字节与原生
| 运行 | `RUN000` | 普通运行错误或用户抛出的普通值 |
| 网络 | `NET_PERMISSION`、`NET_URL`、`NET_DNS`、`NET_CONNECT`、`NET_TLS`、`NET_TIMEOUT`、`NET_LIMIT`、`NET_PROTOCOL`、`NET_UTF8` | 高层网络请求的权限、地址、连接、预算、协议与正文错误 |
| 套接字 | `SOCKET_PERMISSION`、`SOCKET_ADDRESS`、`SOCKET_DNS`、`SOCKET_CONNECT`、`SOCKET_BIND`、`SOCKET_ACCEPT`、`SOCKET_TIMEOUT`、`SOCKET_LIMIT`、`SOCKET_STATE`、`SOCKET_EOF`、`SOCKET_UTF8`、`SOCKET_UNSUPPORTED` | TCP/UDP 资源与 I/O 错误 |
-| 字节 | `BYTES_UTF8`、`BYTES_LIMIT`、`BYTES_RANGE`、`BYTES_VALUE`、`BYTES_TYPE`、`BYTES_RANDOM`、`BYTES_CRYPTO` | 解码、4 MiB 上限、索引、值与密码操作错误 |
+| 字节 | `BYTES_UTF8`、`BYTES_LIMIT`、`BYTES_RANGE`、`BYTES_VALUE`、`BYTES_TYPE`、`BYTES_RANDOM`、`BYTES_CRYPTO` | 解码、16 MiB 上限、索引、值与密码操作错误 |
| 原生 | `NATIVE_PERMISSION`、`NATIVE_VALUE`、`NATIVE_ERROR` | ABI 权限、跨边界值和宿主回调错误 |
词法、语法和语义诊断发生在执行前,不能由`试…救`捕获。完整网络与套接字子码、调用踪迹和示例见[结构化错误](/language/errors/)。
diff --git a/content/docs/reference/formats.mdx b/content/docs/reference/formats.mdx
index f17321f..478b3e7 100644
--- a/content/docs/reference/formats.mdx
+++ b/content/docs/reference/formats.mdx
@@ -28,7 +28,7 @@ yanxu 迁 --写 src/主.yx
## 版本化格式
-包清单与锁文件当前为格式 2,并兼容读取格式 1;字节码块、YXB 应用、工程协议、原生扩展 ABI、测试/兼容报告、C ABI JSON 与标准库 API 清单各自使用显式主版本。未知主版本会被拒绝,不会猜测解析。JSON Schema 位于核心仓库`schemas/`,规范表位于`spec/language/v1/formats.md`。
+包清单与锁文件当前为格式 2,并兼容读取格式 1;字节码块当前为格式 2且只读取格式 2,YXB 外层仍为格式 1。工程协议、原生扩展 ABI、测试/兼容报告、C ABI JSON、标准库 API 清单与模块 API 清单各自使用显式主版本。未知主版本会被拒绝,不会猜测解析。JSON Schema 位于核心仓库`schemas/`,规范表位于`spec/language/v1/formats.md`。
格式 2 锁文件保存完整直接/传递依赖图、精确版本与 Git 提交、来源、校验和、目标平台、导出表和原生制品。YXB/YXP 使用固定顺序和元数据,相同输入必须逐字节相同;构建和运行不得在导入时临时重新选版。
@@ -36,4 +36,4 @@ yanxu 迁 --写 src/主.yx
## 模糊测试
-核心仓库`fuzz/`提供词法/解析、格式化重解析/幂等性和字节码归档解码三个 cargo-fuzz 目标。固定种子同时进入普通 Rust 测试,保证历史崩溃无需 libFuzzer 也会回归。
+核心仓库`fuzz/`覆盖前端、格式化、字节码归档、应用归档、清单、锁文件、工程协议和原生库八类结构化输入。固定种子同时进入普通 Rust 测试;1.1.20 还把预发布发现的单元素元组格式化崩溃与语义回归输入固化,保证历史问题无需 libFuzzer 也会回归。
diff --git a/content/docs/reference/index.mdx b/content/docs/reference/index.mdx
index 6a20809..9e172e7 100644
--- a/content/docs/reference/index.mdx
+++ b/content/docs/reference/index.mdx
@@ -9,10 +9,10 @@ description: 面向查询集中整理稳定语法、命令、公共格式、权
-
+
-
+
diff --git a/content/docs/reference/migrations/1.1.10.mdx b/content/docs/reference/migrations/1.1.10.mdx
new file mode 100644
index 0000000..3184159
--- /dev/null
+++ b/content/docs/reference/migrations/1.1.10.mdx
@@ -0,0 +1,19 @@
+---
+title: 从 1.1.9 升级到 1.1.10
+description: 按响应状态处理 HTTP 4xx/5xx,并统一 TLS 证书错误。
+---
+
+1.1.10 是 HTTP 边界修复版,不改变语言规范、标准库函数签名、原生 ABI、清单、锁文件、YXB 或 Bundle 格式。
+
+`网络.请求`与`网络.请求字节`现在把 4xx 和 5xx 的状态、地址、首部与正文作为正常响应典返回。以前捕获`NET_STATUS`处理业务状态的调用方,应改为读取`状态`:
+
+```yanxu
+引「标准:网络」为 网络;
+
+定 响应 为 网络.请求(「GET」,「https://example.com/missing」,「」,5000,1048576);
+若 响应【「状态」】不小于 400 则
+ 言「服务返回业务错误」;
+终
+```
+
+TLS 证书格式、信任链或主机校验失败稳定归入`NET_TLS`。连接、超时、协议和正文预算仍按各自`NET_*`代码处理。
diff --git a/content/docs/reference/migrations/1.1.11.mdx b/content/docs/reference/migrations/1.1.11.mdx
new file mode 100644
index 0000000..dd7cacb
--- /dev/null
+++ b/content/docs/reference/migrations/1.1.11.mdx
@@ -0,0 +1,10 @@
+---
+title: 从 1.1.10 升级到 1.1.11
+description: 修复 Windows 上锁定 Git、注册表与辖制依赖的构建路径。
+---
+
+1.1.11 不改变语言语法、标准库 API、清单、锁文件或制品格式。
+
+Windows 项目若包含 Git、注册表或`vendor`依赖,应升级运行时并重新构建 YXB。包解析器会统一保存文件系统规范化后的依赖根,避免 Windows 扩展长度路径被误判为不属于锁定依赖图。
+
+无需重写清单或锁文件;依赖模块仍必须来自应用本身或完整锁图,本修复不会扩大可导入目录。
diff --git a/content/docs/reference/migrations/1.1.12.mdx b/content/docs/reference/migrations/1.1.12.mdx
new file mode 100644
index 0000000..90c9721
--- /dev/null
+++ b/content/docs/reference/migrations/1.1.12.mdx
@@ -0,0 +1,12 @@
+---
+title: 从 1.1.11 升级到 1.1.12
+description: 重新构建含大整数数字常量的 YXB,保证序列化精确往返。
+---
+
+1.1.12 不改变语言语法、标准库 API、原生 ABI、清单、锁文件或制品格式。只有依赖本修复的包才需要把最低版本提高到`>=1.1.12`。
+
+1.1.11 构建的 YXB 若含`9007199254740991`等大整数数字常量,重新加载时可能因 JSON 浮点往返产生内容校验失败。升级到 1.1.12 后从源码重新构建这类 YXB;源码、锁图、原生制品和资源无需修改。
+
+```sh
+yanxu compile . -o build/应用.yxb --release
+```
diff --git a/content/docs/reference/migrations/1.1.13.mdx b/content/docs/reference/migrations/1.1.13.mdx
new file mode 100644
index 0000000..7c71490
--- /dev/null
+++ b/content/docs/reference/migrations/1.1.13.mdx
@@ -0,0 +1,27 @@
+---
+title: 从 1.1.12 升级到 1.1.13
+description: 迁移模块限定类型、公开重导出、字节码格式 2 与模块 API v2。
+---
+
+1.1.13 新增模块限定类型、跨模块继承与协议,以及顶层公开模块重导出:
+
+```yanxu
+公 引「控件.yx」为 控件;
+
+类 特殊按钮 承 控件.按钮 纳 控件.可描述 则
+终
+```
+
+当前模块中的类和协议仍可裸写。过去因检查器共享状态而偶然可裸写的导入类型,必须改成`导入别名.类型`;限定形式也适用于注解、联合、可空、泛型、法类型、`承`、`纳`和`是`。
+
+## 重新构建制品
+
+字节码块升级为格式 2,保存规范模块与类型身份。YXB 外层仍为格式 1,但旧字节码格式 1 不能安全自动迁移;保留源码并重新构建:
+
+```sh
+yanxu compile . -o build/应用.yxb --release
+```
+
+1.1.16 及更高版本会用`BYTECODE_FORMAT_UNSUPPORTED`或`YXB_BYTECODE_UNSUPPORTED`报告检测格式、支持格式和重建命令。
+
+`yanxu 文 --json`同时升级为模块 API 清单 v2,新增类型所有者、完整限定名、结构化类型引用与重导出路径。读取旧清单的工具应先按主版本分派;标准库的`stdlib-api-v1`不受影响。
diff --git a/content/docs/reference/migrations/1.1.14.mdx b/content/docs/reference/migrations/1.1.14.mdx
new file mode 100644
index 0000000..436f0e8
--- /dev/null
+++ b/content/docs/reference/migrations/1.1.14.mdx
@@ -0,0 +1,13 @@
+---
+title: 从 1.1.13 升级到 1.1.14
+description: 分离 HTTP 累计响应预算与套接字单次读取上限。
+---
+
+1.1.14 修复`网络.请求字节`把最大响应字节错误限制为套接字 4 MiB 单次接收上限的问题。
+
+- 使用不大于 4 MiB 预算的应用无需修改。
+- 使用更大预算的应用需升级运行时并重新构建 YXB 或 Bundle。
+- 实际正文超过调用预算仍以`NET_LIMIT`失败,不返回截断成功值。
+- 套接字接收函数继续使用独立的 4 MiB 单次上限。
+
+1.1.16 起,单个字节值与 HTTP 宿主硬上限统一为 16 MiB,详见[1.1.16 迁移](/reference/migrations/1.1.16/)。本版本不改变标准库签名、原生 ABI、清单、锁文件、YXB 或 Bundle 格式。
diff --git a/content/docs/reference/migrations/1.1.15.mdx b/content/docs/reference/migrations/1.1.15.mdx
new file mode 100644
index 0000000..eaa94e8
--- /dev/null
+++ b/content/docs/reference/migrations/1.1.15.mdx
@@ -0,0 +1,19 @@
+---
+title: 从 1.1.14 升级到 1.1.15
+description: 为回环、私网与链路本地服务声明显式本地网络能力。
+---
+
+1.1.15 为需要访问用户配置局域网服务的应用新增独立权限:
+
+```toml
+[权限]
+网络 = ["*"]
+本地网络 = true
+```
+
+- `网络 = ["*"]`仍只表示普通公网目标,不会隐式授权敏感地址。
+- `本地网络 = true`覆盖回环、RFC1918 私网、IPv4 链路本地与 CGNAT、IPv6 ULA 与链路本地。
+- 未指定、广播、组播、文档及其他保留地址仍须精确 IP;VPN fake-IP 等网段可在 1.1.17 起使用最窄 CIDR。
+- 嵌入宿主与应用必须同时授权,最终权限交集才会生效。
+
+使用该能力的应用应把最低言序版本声明为`>=1.1.15`并重新构建 YXB 或 Bundle。外层 YXB 格式仍为 1,旧制品因没有这项申请而继续拒绝本地网络。
diff --git a/content/docs/reference/migrations/1.1.16.mdx b/content/docs/reference/migrations/1.1.16.mdx
new file mode 100644
index 0000000..d3ee233
--- /dev/null
+++ b/content/docs/reference/migrations/1.1.16.mdx
@@ -0,0 +1,22 @@
+---
+title: 从 1.1.15 升级到 1.1.16
+description: 采用 16 MiB 二进制硬上限,并从源码重建字节码格式 1 制品。
+---
+
+1.1.16 不改变语言语法、标准库签名、清单、锁文件、YXB 外层格式、当前字节码、原生 ABI 或工程协议版本。
+
+## 二进制资源预算
+
+单个二进制值和 HTTP 响应正文受 16 MiB 宿主硬上限约束。HTTP 默认累计预算仍为 4 MiB,显式请求值与宿主上限取较小者;套接字单次读取继续独立限制为 4 MiB。
+
+超限读取以`NET_LIMIT`失败,不会返回截断成功值。需要处理更大正文的应用应采用流式协议或应用层分块,嵌入宿主只能收紧而不能突破硬上限。
+
+## 旧 YXB 与字节码
+
+YXB 外层格式 1 仍受支持,但其中字节码必须为格式 2。格式 1 缺少无歧义恢复模块与类型身份的信息,不能自动迁移:
+
+```sh
+yanxu compile . -o build/应用.yxb --release
+```
+
+`BYTECODE_FORMAT_UNSUPPORTED`与`YXB_BYTECODE_UNSUPPORTED`会给出检测格式、当前格式与完整重建命令。损坏、越界或摘要不符的归档不会进入兼容路径。
diff --git a/content/docs/reference/migrations/1.1.17.mdx b/content/docs/reference/migrations/1.1.17.mdx
new file mode 100644
index 0000000..d28fda2
--- /dev/null
+++ b/content/docs/reference/migrations/1.1.17.mdx
@@ -0,0 +1,23 @@
+---
+title: 从 1.1.16 升级到 1.1.17
+description: 使用 CIDR 网络授权、24 小时子进程上限与可重入宿主事件泵。
+---
+
+1.1.17 保持语言语法、标准库签名、清单、锁文件、YXB、字节码、ABI 与工程协议版本不变。
+
+## CIDR 与本地网络
+
+VPN fake-IP 或其他特殊网段可以声明最窄 CIDR:
+
+```toml
+[权限]
+网络 = ["*", "198.18.0.0/15"]
+```
+
+`*`仍只允许普通公网地址;宿主与应用权限始终取交集。既有单 IP、带端口和`本地网络 = true`语义不变。需要 CIDR 能力的应用应把最低运行时提高到 1.1.17 并重新构建制品。
+
+## 长时子进程
+
+`进程.执行`的超时范围扩展到 1..=86,400,000 毫秒。超时会终止并回收子进程,以`PROCESS_TIMEOUT`失败;标准输出和标准错误各自最多保留 16 MiB,超限以`PROCESS_LIMIT`失败。既有不超过 5 分钟的调用无需修改。
+
+原生 GUI 回调中再次请求事件泵时,会视为已由外层泵覆盖的成功 no-op,不再把合法嵌套回调误报为失败。
diff --git a/content/docs/reference/migrations/1.1.18.mdx b/content/docs/reference/migrations/1.1.18.mdx
new file mode 100644
index 0000000..53326ea
--- /dev/null
+++ b/content/docs/reference/migrations/1.1.18.mdx
@@ -0,0 +1,36 @@
+---
+title: 1.1.18 追溯说明
+description: 了解未发布快照的依赖、归档、原生装载与供应链迁移边界。
+---
+
+
+ 1.1.18 没有通过完整动态检查,未形成稳定 Release。以下能力最终由 1.1.20 正式交付;请直接阅读[1.1.20 迁移](/reference/migrations/1.1.20/)并升级到 1.1.20。
+
+
+## 依赖与缓存
+
+路径、Git 与注册表依赖在清单、锁定目标和完整树摘要校验后,发布为内容寻址、只读的 generation。解释器、VM、检查器、LSP、文档与构建消费解析阶段保存的同一能力,不再从可变来源路径重新建立信任。
+
+首次升级后应联网运行一次`yanbao install`或`yanbao update`,建立 Git v2 bare 对象库与注册表不可变快照。离线模式只接受锁文件中的 40 位精确 Git 提交和已经复验的 generation;不要手工移动旧缓存或改写摘要。
+
+## 固定安全预算
+
+| 输入 | 上限 |
+| --- | ---: |
+| 包清单 / 工作区成员清单 | 4 MiB |
+| 锁文件 | 16 MiB |
+| 辖制清单 | 8 MiB |
+| 注册表索引 | 32 MiB |
+| 单个模块源码 | 8 MiB |
+| Git bare 对象库 | 1 GiB、1,000,000 项、256 层 |
+| 目录工具 | 单目录 4,096 项、整树 100,000 项、相对根 128 层 |
+
+最终文件符号链接、Windows 重解析点、特殊文件、读取期间身份替换以及可移植大小写/Unicode 路径碰撞都会被拒绝。超过预算的项目应拆分源码或精简元数据。
+
+## 归档、资源与原生库
+
+打包从已打开的包根捕获入口、资源、图标和原生制品快照;解包同时计量 gzip 输入、完整 tar 展开量、条目、路径和数据,并拒绝附加 member、尾随数据、链接和等价路径碰撞。非规范旧归档应从源码重新打包。
+
+ABI v2 磁盘模块只能装载自身或直接锁定依赖的制品。Linux 拒绝 RPATH/RUNPATH 和路径型依赖,macOS 只允许固定系统库路径,Windows 拒绝延迟导入;依赖相邻动态库的扩展应改为静态链接或受支持的系统依赖后重建。
+
+工程协议仍为 v1,但全量`audit`必须协商并回显 Schema 1 的十二项检查能力。缺少能力声明的旧核心不能被当作完成了安全审计。
diff --git a/content/docs/reference/migrations/1.1.19.mdx b/content/docs/reference/migrations/1.1.19.mdx
new file mode 100644
index 0000000..5950bfb
--- /dev/null
+++ b/content/docs/reference/migrations/1.1.19.mdx
@@ -0,0 +1,19 @@
+---
+title: 1.1.19 追溯说明
+description: 了解未晋升预发布版的 32 层解析边界与格式化风险。
+---
+
+
+ 1.1.19 是预发布快照,因单元素元组格式化会丢失消歧逗号而未晋升为稳定 Release。请直接升级到 1.1.20。
+
+
+1.1.19 包含原计划随 1.1.18 交付的依赖快照、归档、原生装载、审计与供应链边界,公开格式版本未改变。迁移背景见[1.1.18 追溯说明](/reference/migrations/1.1.18/)。
+
+解析器统一限制语句、表达式和类型结构为 32 层。超限源码会得到确定的语法错误,可按以下方式拆分:
+
+- 把长运算、调用、成员或下标链拆成具名中间值;
+- 把深层条件、循环或错误处理抽成辅助函数;
+- 用具名类或协议拆分深层泛型与函数类型;
+- 保持原求值顺序,不要重排有副作用的调用。
+
+该上限是固定安全边界,不由运行时预算放宽。若曾用 1.1.19 执行写入式格式化,还必须按[1.1.20 迁移](/reference/migrations/1.1.20/)复核单元素元组。
diff --git a/content/docs/reference/migrations/1.1.20.mdx b/content/docs/reference/migrations/1.1.20.mdx
new file mode 100644
index 0000000..979030f
--- /dev/null
+++ b/content/docs/reference/migrations/1.1.20.mdx
@@ -0,0 +1,39 @@
+---
+title: 从 1.1.17 升级到 1.1.20
+description: 采用不可变依赖快照、安全归档、解析深度限制,并复核预发布格式化结果。
+---
+
+言序 1.1.18 与 1.1.19 均未形成稳定 Release;1.1.17 用户应直接升级到 1.1.20。语言语法、25 个标准库签名、清单格式 2、锁文件格式 2、YXB 格式 1、字节码格式 2、原生 ABI v1/v2 和工程协议 1 均未提升版本。
+
+## 升级步骤
+
+1. 固定安装 1.1.20,并记录`yanxu version --json`。
+2. 联网运行`yanbao install`或`yanbao update`,让锁定依赖进入新的不可变缓存;不要手改锁文件或缓存摘要。
+3. 运行检查、格式化一致性、规格测试、依赖审计和 Release 构建。
+4. 含原生扩展的项目在每个目标平台重新验证动态依赖闭包;不满足新装载规则时静态链接非系统依赖后重建。
+5. 检查超大模块、元数据、目录树、Git 对象库与 32 层源码结构是否触及固定安全预算。
+
+```sh
+yanbao install
+yanbao check
+yanbao test
+yanbao audit
+yanbao build --release
+```
+
+不可变 generation、元数据/目录预算、归档和 ABI 细节见[1.1.18 追溯说明](/reference/migrations/1.1.18/);32 层解析边界见[1.1.19 追溯说明](/reference/migrations/1.1.19/)。
+
+## 只针对 1.1.19 预发布用户
+
+1.1.19 格式化器会把单元素元组`(值,)`改写成语义不同的普通括号表达式`(值)`。若源码曾由该预发布版写回:
+
+- 用版本控制检查 1.1.19 格式化产生的差异;
+- 为仍表示元组的单元素表达式恢复末尾逗号;
+- 使用 1.1.20 连续运行两次`yanxu fmt --write`,确认第二次没有变化;
+- 重新执行类型检查与测试,确认元组和普通括号表达式没有混淆。
+
+未用 1.1.19 写入式格式化的项目无需修改源码。1.1.20 会保留消歧逗号,并把对应崩溃输入固化为回归种子。
+
+## 发行与供应链
+
+1.1.20 的六平台 Release 提供逐目标构建元数据、CycloneDX 1.5 SBOM、构建来源证明与签名复验。核心和共享包标签保持不可变;未通过动态门禁的预发布标签不会被移动或直接晋升为稳定版。
diff --git a/content/docs/reference/migrations/1.1.9.mdx b/content/docs/reference/migrations/1.1.9.mdx
new file mode 100644
index 0000000..1d683fe
--- /dev/null
+++ b/content/docs/reference/migrations/1.1.9.mdx
@@ -0,0 +1,19 @@
+---
+title: 从 1.1.8 升级到 1.1.9
+description: 使用统一执行步数预算,并让常驻宿主回调独立计量。
+---
+
+1.1.9 不改变语言规范 1、标准库 API、原生 ABI v1/v2、清单与锁文件、YXB 或 Bundle 格式。GUI 与原生扩展应用只需升级运行时并重新构建。
+
+## 执行步数预算
+
+源码执行、VM、包入口和 YXB 统一接受全局旗标与环境变量:
+
+```sh
+yanxu --max-steps 250000 src/主.yx
+YANXU_MAX_STEPS=250000 yanxu run build/应用.yxb
+```
+
+旗标优先于环境变量;两者都未设置时仍为 1,000,000 步。非法或为零的值会在执行前被拒绝。
+
+GUI、计时器和原生扩展的每个宿主事件回调独立使用这份预算,多个正常回调不再累计耗尽同一余额。单个回调中的死循环仍会终止,回调结束后外层执行余额保持不变。
diff --git a/content/docs/reference/migrations/index.mdx b/content/docs/reference/migrations/index.mdx
index 59b59cc..c6e8368 100644
--- a/content/docs/reference/migrations/index.mdx
+++ b/content/docs/reference/migrations/index.mdx
@@ -3,12 +3,26 @@ title: 迁移指南
description: 按目标版本核对行为、权限、公共格式和应用制品变化。
---
-升级前先提交清单与锁文件,记录当前`yanxu version --json`,并在独立分支运行检查、格式化、规格测试和构建。跨多个版本时按时间顺序逐份阅读,不要只看最后一版。
+升级前先提交清单与锁文件,记录当前`yanxu version --json`,并在独立分支运行检查、格式化、规格测试、审计和构建。跨多个稳定版本时按时间顺序阅读;1.1.18 与 1.1.19 只有追溯快照,1.1.17 用户直接迁移到 1.1.20。
+
+## 当前稳定升级
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
源码弃用可先运行`yanxu migrate --check`或`yanxu migrate --diff`。公共格式主版本与兼容策略见[公共格式](/reference/formats/)和[1.x 兼容政策](/reference/compatibility/)。
diff --git a/content/docs/reference/migrations/meta.json b/content/docs/reference/migrations/meta.json
index e6b3660..f0b1384 100644
--- a/content/docs/reference/migrations/meta.json
+++ b/content/docs/reference/migrations/meta.json
@@ -1,5 +1,22 @@
{
"title": "迁移指南",
"description": "按版本处理语言、工具链与应用格式变化。",
- "pages": ["index", "1.1.8", "1.1.7", "1.1.6"]
+ "pages": [
+ "index",
+ "1.1.20",
+ "1.1.19",
+ "1.1.18",
+ "1.1.17",
+ "1.1.16",
+ "1.1.15",
+ "1.1.14",
+ "1.1.13",
+ "1.1.12",
+ "1.1.11",
+ "1.1.10",
+ "1.1.9",
+ "1.1.8",
+ "1.1.7",
+ "1.1.6"
+ ]
}
diff --git a/content/docs/reference/permissions.mdx b/content/docs/reference/permissions.mdx
index f9ebb9d..e7f1c2c 100644
--- a/content/docs/reference/permissions.mdx
+++ b/content/docs/reference/permissions.mdx
@@ -1,12 +1,13 @@
---
title: 权限参考
-description: 查询格式 2 清单支持的 14 项宿主能力与最小授权方式。
+description: 查询格式 2 清单支持的 15 项宿主能力与最小授权方式。
---
| 能力 | 清单值 | 控制范围 |
| --- | --- | --- |
| `文件` | 路径列 | 相对包根的可访问文件根 |
| `网络` | 主机列 | 允许外连的 DNS 主机或地址 |
+| `本地网络` | 理值 | 显式允许回环、私网、链路本地、CGNAT 与 IPv6 ULA |
| `TCP监听` | 地址列 | 允许监听的地址范围 |
| `UDP绑定` | 地址列 | 允许绑定的数据报地址范围 |
| `环境` | 名称列 | 可读取的环境变量 |
@@ -20,6 +21,6 @@ description: 查询格式 2 清单支持的 14 项宿主能力与最小授权方
| `打开外部地址` | 理值 | 请求系统打开外部 URL |
| `全局快捷键` | 理值 | 注册系统级快捷键 |
-所有能力默认拒绝。依赖不能向应用传递权限;桌面能力彼此独立;原生扩展是进程内受信任代码,摘要门禁不构成恶意代码隔离。YXB 的申请还会与宿主上限相交。
+所有能力默认拒绝。`网络 = ["*"]`不包含敏感地址;本地服务使用`本地网络 = true`,其他特殊网段使用精确 IP 或最窄 CIDR。依赖不能向应用传递权限;桌面能力彼此独立;原生扩展是进程内受信任代码,摘要门禁不构成恶意代码隔离。YXB 的申请还会与宿主上限相交。
可运行清单示例与建议见[权限与资源](/projects/permissions/),嵌入宿主见[嵌入与宿主权限](/guides/embedding/)。
diff --git a/content/docs/reference/project-format.mdx b/content/docs/reference/project-format.mdx
index fe06117..af553e4 100644
--- a/content/docs/reference/project-format.mdx
+++ b/content/docs/reference/project-format.mdx
@@ -7,7 +7,7 @@ description: 查询清单、锁文件、字节码、YXB、工程协议、报告
| --- | ---: | --- | --- |
| 包清单 | 2 | 1、2 | `[包].格式` |
| 锁文件 | 2 | 1、2 | `lock_version` |
-| 字节码块 | 1 | 1 | `Chunk.format_version` |
+| 字节码块 | 2 | 2 | `Chunk.format_version` |
| YXB 应用 | 1 | 1 | `format_version`与内容校验和 |
| 工程协议 | 1 | 1 | `protocol_version` |
| 原生扩展 ABI | 1、2 | 对应 ABI | `abi_version`与`struct_size` |
@@ -15,7 +15,8 @@ description: 查询清单、锁文件、字节码、YXB、工程协议、报告
| 兼容报告 | 1 | 1 | `compatibility-report-v1` |
| C ABI 结果 | 1 | 1 | JSON `schema` |
| 标准库清单 | 1 | 1 | `stdlib-api-v1` |
+| 模块 API 清单 | 2 | 2 | `module-api-v2` |
实现必须拒绝未知主版本,不得猜测解析。同一主版本只能增加接收方明确忽略的可选字段;删除字段、改变类型、语义或默认值需要新主版本。
-格式 2 清单的最小必需表是`[包]`。锁文件固定完整依赖图和清单校验和。YXB/YXP 使用确定顺序,相同输入应逐字节相同;内容 SHA-256 只证明完整性,不证明发布者身份。详细安全预算与迁移行为见[公共格式](/reference/formats/)。
+格式 2 清单的最小必需表是`[包]`。锁文件固定完整依赖图和清单校验和。YXB 外层格式仍为 1,但其中字节码必须为格式 2;字节码格式 1 缺少无歧义恢复模块与类型身份所需的信息,只能从源码重建。YXB/YXP 使用确定顺序,相同输入应逐字节相同;内容 SHA-256 只证明完整性,不证明发布者身份。详细安全预算与迁移行为见[公共格式](/reference/formats/)。
diff --git a/content/docs/standard-library/index.mdx b/content/docs/standard-library/index.mdx
index b2d17ad..5c5d7c0 100644
--- a/content/docs/standard-library/index.mdx
+++ b/content/docs/standard-library/index.mdx
@@ -27,7 +27,7 @@ description: 使用字节、文字、文件、网络、套接字、进程、资
## 字节串
-`字节`模块提供`从文字/转文字/长度/切片/拼接/查找/从数列/转数列`。`字节串`不可变、按内容相等,长度和索引均以实际字节为单位;无效 UTF-8 解码返回`BYTES_UTF8`。完整示例和上限见[字节串与二进制 I/O](/language/binary-data/)。
+`字节`模块提供`从文字/转文字/长度/切片/拼接/查找/从数列/转数列`。`字节串`不可变、按内容相等,长度和索引均以实际字节为单位;无效 UTF-8 解码返回`BYTES_UTF8`,单值硬上限为 16 MiB。完整示例和预算关系见[字节串与二进制 I/O](/language/binary-data/)。
## 时间、文件与环境
@@ -55,7 +55,7 @@ description: 使用字节、文字、文件、网络、套接字、进程、资
| 模块 | 成员与边界 |
| --- | --- |
-| `进程` | `执行(程序, 参数, 工作目录, 超时毫秒)`返回状态、标准输出和标准错误;受进程权限、全程超时与输出上限保护 |
+| `进程` | `执行(程序, 参数, 工作目录, 超时毫秒)`返回状态、标准输出和标准错误;超时范围 1..=86,400,000 毫秒,每个输出流最多保留 16 MiB |
| `资源` | `读取字节/读取文字/目录`只读访问清单声明资源;YXB 运行时读取归档内嵌内容 |
命令行参数继续由`环境.参数()`读取。源码模式下,`资源`只允许读取`[资源]`声明的目录;YXB 构建会把可达资源写入归档,所以部署时无需携带原始资源目录。`进程`不会继承依赖包的权限,应用必须在自己的清单显式授权。
@@ -70,7 +70,7 @@ description: 使用字节、文字、文件、网络、套接字、进程、资
CSV 解析支持 CRLF、引号字段、字段内逗号与换行,以及用两个引号表示一个引号。格式错误会给出明确诊断。
-原生网络模块支持 HTTP/HTTPS、根证书验证、HTTP/1.1 分块传输与关闭定界正文。`获取/发文`保留简洁签名,采用 10 秒全程超时和 4 MiB 响应上限;非成功状态、超时、TLS、超限与非 UTF-8 正文都会成为带稳定`NET_*`代码的结构化错误。1.1.3 起,每次重定向都重新授权,DNS 后复查真实 IP,解析、连接与传输共用同一截止时间。WASI 不隐式获得网络传输能力。
+原生网络模块支持 HTTP/HTTPS、根证书验证、HTTP/1.1 分块传输与关闭定界正文。`获取/发文`保留简洁签名,采用 10 秒全程超时和 4 MiB 默认响应预算;4xx 与 5xx 会作为正常响应返回,由调用方按`状态`处理。超时、TLS、协议、超限与非 UTF-8 正文才会成为带稳定`NET_*`代码的结构化错误。每次重定向都会重新授权,DNS 后复查真实 IP,解析、连接与传输共用同一截止时间。`网络 = ["*"]`不隐式放行本地或特殊地址;使用`本地网络 = true`、精确 IP 或最窄 CIDR。WASI 不隐式获得网络传输能力。
`请求字节(方法,地址,首部,正文,超时毫秒,最大字节)`接受`典<文,文>`和`字节串?`,返回典中的`正文`为字节串。运行时拒绝 CRLF、非法首部以及调用方伪造的`Host/Content-Length/Transfer-Encoding/Connection`等首部,并在跨源重定向时移除授权和 Cookie。
@@ -99,7 +99,7 @@ CSV 解析支持 CRLF、引号字段、字段内逗号与换行,以及用两
终
```
-超时和大小参数必须是安全正整数;大小按响应正文的字节数计算,超过上限会完整失败而不是返回截断正文。错误代码表见[错误处理](/language/errors/)。
+超时和大小参数必须是安全正整数;大小按响应正文的字节数计算,显式预算与 16 MiB 宿主硬上限取较小者,超过上限会完整失败而不是返回截断正文。错误代码表见[错误处理](/language/errors/)。
## 套接字
diff --git a/content/docs/standard-library/meta.json b/content/docs/standard-library/meta.json
index faa740d..b096ed5 100644
--- a/content/docs/standard-library/meta.json
+++ b/content/docs/standard-library/meta.json
@@ -1,5 +1,5 @@
{
"title": "标准库",
- "description": "查询言序 1.1.8 的 25 个版本化标准模块。",
+ "description": "查询言序 1.1.20 的 25 个版本化标准模块。",
"pages": ["index"]
}
diff --git a/content/docs/tooling/building-apps.mdx b/content/docs/tooling/building-apps.mdx
index bbd8966..6f2f6a6 100644
--- a/content/docs/tooling/building-apps.mdx
+++ b/content/docs/tooling/building-apps.mdx
@@ -3,7 +3,7 @@ title: YXB 与独立应用
description: 把言序项目编译为不依赖原始源码的确定性应用制品。
---
-言序 1.1.8 沿用 1.1.7 引入的“完整编译”:它是完整包字节码编译,不是 LLVM 或 Cranelift 机器码后端。编译器读取格式 2 锁图,把入口、项目模块、依赖模块、声明资源、权限、应用元数据、当前目标原生制品和调试路径写入 YXB 应用归档。
+言序 1.1.20 的“完整编译”是完整包字节码编译,不是 LLVM 或 Cranelift 机器码后端。编译器读取格式 2 锁图和已经验证的不可变依赖 generation,把入口、项目模块、依赖模块、声明资源、权限、应用元数据、当前目标原生制品和调试路径写入 YXB 应用归档。
## 直接使用核心
@@ -14,7 +14,7 @@ yanxu run build/我的应用.yxb -- 参数甲 参数乙
生成后可以把 YXB 复制到临时目录、删除源码副本再运行。YXB 仍需要目标机器安装兼容的言序 VM,但不会重新读取`.yx`、依赖清单或资源目录。
-YXB v1 使用确定性压缩载荷,并只保留报错所需的紧凑源码位置。1.1.7 以可选字段兼容携带原生模块和应用元数据;旧版压缩或未压缩 YXB v1 仍可读取。读取前后会限制压缩/展开 JSON、模块、资源、原生制品、指令、函数、类和调试跨度,并重新验证路径、目标、ABI、大小与 SHA-256。
+YXB v1 使用确定性压缩载荷,并只保留报错所需的紧凑源码位置。外层格式仍为 1,但 1.1.13 起载荷必须使用字节码格式 2;格式 1 字节码不能安全恢复模块与类型身份,须从源码重建。读取前后会限制压缩/展开 JSON、模块、资源、原生制品、指令、函数、类和调试跨度,并重新验证路径、目标、ABI、大小与 SHA-256。
## 使用言包工作流
@@ -48,7 +48,7 @@ Bundle 包含 standalone、可检查 YXB、锁定 GUI 后端、资源、图标
- 相同源码、锁图、资源、目标和配置必须生成逐字节相同的 YXB/YXP。
- 构建前必须验证完整锁图和每个包的内容校验和,不会在导入时临时选版。
-- 资源只来自`[资源]`声明,归档路径会拒绝绝对路径和父目录越界;程序通过`标准:资源`的读取与目录接口访问。
+- 资源只来自`[资源]`声明,并从发现阶段已打开的包根快照读取;归档路径会拒绝绝对路径、父目录越界、符号链接、保留目录及大小写或 Unicode 规范化碰撞。程序通过`标准:资源`的读取与目录接口访问。
- 应用清单中的权限只是申请。实际权限始终是“宿主权限上限 ∩ 应用申请”,YXB 不能自行提升文件、网络、监听、环境、进程或原生扩展权限。
- 应在删除源码副本后运行 YXB,并在每个支持平台验证独立应用。
diff --git a/content/docs/tooling/native-extensions.mdx b/content/docs/tooling/native-extensions.mdx
index 3d188e1..680bae4 100644
--- a/content/docs/tooling/native-extensions.mdx
+++ b/content/docs/tooling/native-extensions.mdx
@@ -31,12 +31,13 @@ ABI = 1
1. 顶层应用授权原生扩展;
2. 锁定目标与`yanxu version --json`报告完全一致;
-3. 制品 SHA-256 与清单和锁文件一致,已验证字节被复制到进程私有、内容寻址且只读的临时路径后再加载;
-4. `yanxu_native_module_v1`描述符的 ABI 版本、结构大小、指针、UTF-8 和名称唯一性都有效。
+3. 制品 SHA-256 与清单和锁文件一致,并从依赖解析阶段已打开的只读 generation 文件令牌读取;已验证字节再复制到进程私有、内容寻址且只读的临时路径加载;
+4. 模块只能装载自身制品或直接锁定依赖边中的真实包;传递同名包、路径替换或包根替换不能改变选择;
+5. `yanxu_native_module_v1`或`yanxu_native_module_v2`描述符的 ABI 版本、结构大小、指针、UTF-8 和名称唯一性都有效。
WASI 始终拒绝动态库。言序不会自动执行第三方构建脚本、安装钩子或 Shell 命令。单次 JSON 输入/输出上限为 16 MiB,每类描述符最多 1024 项;空指针、异常长度、JSON 解析失败和未知输出类型都会走 RAII 释放路径,资源析构至多执行一次。
-动态库是与宿主进程同等权限的受信任机器码,语言沙箱无法完全约束它。`原生扩展 = true`只是一道显式授权门禁,不会把不可信动态库变安全;发布者必须审查来源、目标和摘要,并在 Windows、Linux、macOS 分别验证装载策略。
+动态库是与宿主进程同等权限的受信任机器码,语言沙箱无法完全约束它。`原生扩展 = true`只是一道显式授权门禁,不会把不可信动态库变安全;发布者必须审查来源、目标和摘要,并在 Windows、Linux、macOS 分别验证装载策略。1.1.20 只接受当前架构的 64 位宿主库:Linux 拒绝 RPATH/RUNPATH 和路径型依赖,macOS 拒绝`LC_RPATH`及非固定系统库路径,Windows 拒绝延迟导入且只搜索私有暂存目录与 System32。非系统依赖应静态链接。
```sh
yanxu native --json
diff --git a/content/docs/tooling/package-manager.mdx b/content/docs/tooling/package-manager.mdx
index 0368cf2..9a33e5b 100644
--- a/content/docs/tooling/package-manager.mdx
+++ b/content/docs/tooling/package-manager.mdx
@@ -1,9 +1,9 @@
---
title: 言包工程工具
-description: 使用言包创建项目,并通过短包名管理 GitHub 依赖。
+description: 使用言包 0.6.1 创建项目、管理依赖、恢复事务并执行结构化安全审计。
---
-言包(`yanbao`)是言序的官方工程与包管理工具,命令层完全由言序源码编写;仓库没有 Cargo 工程或 Rust 业务代码。0.5.0 要求言序 1.1.7 或更高版本,本站以 1.1.8 验收;它负责项目初始化、依赖、测试、YXB、Standalone、Bundle、缓存、诊断和打包,但不复制第二套 TOML、SemVer、依赖解析、锁图、YXB 或 Bundle 实现。
+言包(`yanbao`)是言序的官方工程与包管理工具,命令层完全由言序源码编写;仓库没有 Cargo 工程或 Rust 业务代码。当前稳定版为 0.6.1,普通命令要求言序 1.1.17 或更高版本;完整安全审计需要核心提供十二项 Schema 1 能力,稳定组合使用言序 1.1.20。它负责项目初始化、依赖、测试、YXB、Standalone、Bundle、缓存、诊断和打包,但不复制第二套 TOML、SemVer、依赖解析、锁图、YXB 或 Bundle 实现。
## 最常用的包命令
@@ -18,7 +18,7 @@ yanbao install
## 安装
-请先安装言序 1.1.7 或更高版本,并确保`yanxu`位于`PATH`中。再运行言包安装器:
+请先安装言序 1.1.17 或更高版本,并确保`yanxu`位于`PATH`中。本站推荐直接使用 1.1.20,再运行言包安装器:
```sh
curl -fsSL https://get.yanxu.dev/yanbao | sh
@@ -32,7 +32,7 @@ Windows 使用 PowerShell 安装器:
irm https://get.yanxu.dev/yanbao/windows | iex
```
-安装器校验下载制品和版本,然后使用系统言序执行言包。可用`YANXU_BIN=/绝对路径/yanxu`指定运行时;言包不会复制或覆盖言序,也不需要 Rust 版言包。
+安装器校验下载制品和版本,然后使用系统言序执行言包。可用`YANXU_BIN=/绝对路径/yanxu`指定运行时,也可用`YANBAO_VERSION=0.6.1`固定安装;言包不会复制或覆盖言序,也不需要 Rust 版言包。
## 创建项目
@@ -44,6 +44,8 @@ yanbao doctor --manifest-path 我的项目
`init`创建格式 2 的`言序.toml`、`言序.lock`、`src/主.yx`和`.gitignore`;不会创建 Git 仓库,也不会无提示覆盖已有模板。中文命令可写作`yanbao 新 我的项目`。
+0.6 起,`new/init`会在目标同一文件系统内暂存完整项目,完成解析与静态检查后再提交。`--force`只替换清单、入口、锁文件及言包新建的忽略文件,不会删除其他内容。中断后检测到恢复日志时,在确认没有其他进程操作项目后,为原命令增加`--recover`或`--恢复`;并发改写会以`TXN005`拒绝覆盖。
+
## 管理完整依赖图
```sh
@@ -55,7 +57,7 @@ yanbao remove 工具
yanbao install --offline
```
-`add/remove`默认重新解析完整直接与传递图;失败时同时恢复清单和锁文件。`--no-lock`可只编辑清单。格式 2 锁文件固定每条依赖边、精确版本/提交、来源、校验和、目标、导出和原生制品。
+`add/remove`默认先通过核心协议预演,再重新解析完整直接与传递图;普通失败会同时恢复清单和锁文件,中断现场使用同一`--recover`流程。项目创建、依赖编辑与其他项目命令共享独占锁,未完成事务会以`TXN001..TXN005`稳定拒绝并保留现场。`--no-lock`可只编辑清单。格式 2 锁文件固定每条依赖边、精确版本/提交、来源、校验和、目标、导出和原生制品。
```sh
yanbao tree
@@ -67,6 +69,33 @@ yanbao doctor
这些命令分别解释依赖树、引入路径、可更新项、更新计划和工具链状态。`update --dry-run`不会改写锁文件;正式`update`才重新选择允许范围内的版本。
+## 严格命令行与结构化输出
+
+0.6 起,中英文子命令、位置参数、布尔旗标、单值选项、互斥关系与`--`透传使用同一严格解析器。未知参数、缺值、重复和冲突不会回退到默认值,而是以`CLI001..CLI010`和非零状态失败。使用`yanbao help <命令>`或`yanbao <命令> --help`查询精确选项。
+
+所有命令支持 human、JSON 与 JSON Lines:
+
+```sh
+yanbao check --message-format json
+yanbao build --release --message-format json-lines
+yanbao test --timeout 900000
+```
+
+结构化结果使用 Draft 2020-12 Schema 1,统一包含命令、成功状态、退出码、项目根、阶段、诊断、变更、制品和耗时。失败仍保持非零进程状态。`--timeout`、`--超时`或`YANBAO_TIMEOUT`接受 1..=86,400,000 毫秒,命令行值优先;默认值按元数据、检查、解析、测试、打包、构建和运行分别设置。
+
+## 安全审计
+
+```sh
+yanbao audit
+yanbao audit --deny-level medium
+yanbao audit --suppress 'AUDIT_LICENSE_MISSING@2026-12-31@已复核内部依赖'
+yanbao audit --message-format json
+```
+
+默认拒绝`critical`与`high`发现;可选门禁为`critical|high|medium|low|info|none`。精确抑制必须同时记录诊断代码、UTC 到期日和原因;到期项不会继续掩盖发现,并额外报告`AUDIT_SUPPRESSION_EXPIRED`。`--deny-warnings`兼容等价于 medium 门禁;`audit --json`是 JSON 输出简写,不能与`--message-format`同时使用。
+
+言包会在审计前验证工程协议握手,并在响应后复验回显。核心必须完整声明锁定 SHA-256、来源传输、精确 Git 修订、SPDX 许可证、撤回、漏洞、重复版本、目标及原生 ABI/目标/摘要/来源证明十二项检查;缺失、不完整或不一致都以`AUDIT_CAPABILITY_MISSING`失败关闭。0.6.1 还会校验发现对象的代码、严重度、包名、消息和可选源码位置,畸形对象以`AUDIT_SCHEMA`拒绝。
+
## 开发、构建和分发
```sh
@@ -82,12 +111,14 @@ yanbao vendor
yanbao audit
```
-`build`调用核心生成 YXB、当前平台 standalone 或 GUI Bundle;GUI 模板自动写入应用配置、独立权限和`yanxu-gui`依赖。`pack`生成确定性`.yxp`;`vendor`复制完整锁定图以便离线恢复;`audit`复核校验和、来源、许可证、重复版本与原生制品。工作区会对声明成员执行同一套命令。
+`build`调用核心生成 YXB、当前平台 standalone 或 GUI Bundle;GUI 模板自动写入应用配置、独立权限和`yanxu-gui ^1.0`依赖。`pack`生成确定性`.yxp`;`vendor`事务化复制完整锁定图以便离线恢复;`audit`执行上述完整能力协商。工作区会对声明成员执行同一套命令。
## 职责与安全边界
言包通过`yanxu package protocol`的版本化 JSON 协议调用核心`yanxu-package`。启动时会协商清单 2、锁 2、YXB 1、工程协议 1、原生 ABI v1/v2 和 Bundle 操作;核心不兼容时会明确要求先升级言序。
-路径、Git 和索引包只有通过锁定与内容校验后才可参与模块加载。依赖权限不会传给应用,GUI 也不会自动授予文件或网络;第三方包不能自动执行构建脚本。原生后端必须来自锁定目标且通过摘要门禁,运行时不下载。言包 Release、标签和 CI 与核心运行时分别管理,不能以核心 Release 替代言包自身验收。
+路径、Git 和索引包只有通过锁定与内容校验、并发布为核心 1.1.20 的不可变 generation 后才可参与模块加载。依赖权限不会传给应用,GUI 也不会自动授予文件或网络;第三方包不能自动执行构建脚本。原生后端必须来自锁定目标且通过摘要门禁,运行时不下载。
+
+言包 0.6.1 的六目标 Release 分别提供确定性 CycloneDX 1.5 SBOM、构建元数据与依赖锁,并用构建来源和 SBOM 证明绑定源码、正式言序编译器标签提交、目标和制品摘要。安装冒烟只消费先验验签后的本地只读快照,并在启动子进程前移除下载凭据。言包 Release、标签和 CI 与核心运行时分别管理,不能以核心 Release 替代言包自身验收。
源码、问题与贡献说明见[YanXuLang/yanbao](https://github.com/YanXuLang/yanbao)。
diff --git a/content/docs/tooling/source-build.mdx b/content/docs/tooling/source-build.mdx
index b0f17d7..81c42f5 100644
--- a/content/docs/tooling/source-build.mdx
+++ b/content/docs/tooling/source-build.mdx
@@ -5,12 +5,12 @@ description: 构建语言核心、运行测试并找到各子项目仓库。
## 构建语言核心
-需要安装稳定版 Rust 工具链和 Git:
+言序 1.1.20 的最低支持 Rust 版本是 1.89;还需要 Git:
```sh
git clone https://github.com/YanXuLang/yanxu.git
cd yanxu
-cargo test --all-targets --locked
+cargo test --workspace --all-targets --locked
cargo install --path .
```
diff --git a/content/docs/tooling/vscode.mdx b/content/docs/tooling/vscode.mdx
index 45a2eed..e625293 100644
--- a/content/docs/tooling/vscode.mdx
+++ b/content/docs/tooling/vscode.mdx
@@ -18,6 +18,6 @@ description: 安装并使用言序官方 VS Code 扩展。
- 使用 VS Code“运行和调试”设置断点、继续/单步并检查调用栈与变量;
- 打开言序 REPL 与在线文档的命令。
-从 [VS Code 扩展发行页](https://github.com/YanXuLang/vscode-extension/releases)下载 1.4.0 `.vsix`,在 VS Code 扩展面板中选择“从 VSIX 安装”。扩展以言序 1.1.7 的稳定语言与标准库快照为基线,并兼容本站验收的 1.1.8;默认从`PATH`寻找`yanxu`,也可使用`yanxu.executablePath`指定可执行文件。扩展本身不要求安装言包。
+从 [VS Code 扩展发行页](https://github.com/YanXuLang/vscode-extension/releases)下载 1.4.0 `.vsix`,在 VS Code 扩展面板中选择“从 VSIX 安装”。扩展面向言序 1.1.7 及兼容的后续 1.x,包括本站验收的 1.1.20;离线标准库快照仍记录 1.1.7,实际 LSP、格式化、检查和标准库索引优先调用当前安装的核心。默认从`PATH`寻找`yanxu`,也可使用`yanxu.executablePath`指定可执行文件。扩展本身不要求安装言包。
扩展问题与功能建议请提交到 [YanXuLang/vscode-extension](https://github.com/YanXuLang/vscode-extension/issues)。
diff --git "a/examples/desktop/\347\273\274\345\220\210\346\216\247\344\273\266\345\261\225\347\244\272.yx" "b/examples/desktop/\347\273\274\345\220\210\346\216\247\344\273\266\345\261\225\347\244\272.yx"
index a0de3e8..c4ea296 100644
--- "a/examples/desktop/\347\273\274\345\220\210\346\216\247\344\273\266\345\261\225\347\244\272.yx"
+++ "b/examples/desktop/\347\273\274\345\220\210\346\216\247\344\273\266\345\261\225\347\244\272.yx"
@@ -2,7 +2,7 @@
定 应用 为 界面.应用(「言界综合控件展示」);
-定 窗口 为 应用.窗口({「标题」:「言界 0.1.0」,「宽」:960,「高」:700,「最小宽」:720,「最小高」:520});
+定 窗口 为 应用.窗口({「标题」:「言界 0.1.1」,「宽」:960,「高」:700,「最小宽」:720,「最小高」:520});
定 主列 为 窗口.列({「内边距」:18,「间距」:10});
diff --git "a/examples/desktop/\350\250\200\345\272\217.lock" "b/examples/desktop/\350\250\200\345\272\217.lock"
index 4012b8c..51791b0 100644
--- "a/examples/desktop/\350\250\200\345\272\217.lock"
+++ "b/examples/desktop/\350\250\200\345\272\217.lock"
@@ -1,10 +1,10 @@
lock_version = 2
-manifest_checksum = "b8b2267d3bc5e79d30b75b2a5f6c03ba57178f452f442047d1c355344cff7760"
+manifest_checksum = "9287fbf4340310fae1aeef66c4eb2aafca93c0c74a6d31b13eac3bbabe5ac5a8"
target = "aarch64-apple-darwin"
-generator = "1.1.8"
+generator = "1.1.9"
[root_dependencies]
-"言界" = "yanxu-ui@0.1.0#44f9b5e8534a-99284e04a96b47cd"
+"言界" = "yanxu-ui@0.1.1#44f9b5e8534a-193ba75d1d46bdf0"
[root_dev_dependencies]
@@ -32,15 +32,15 @@ checksum = "ad91b0a85a9f39926dc2b2127a648b29eaff2e4b3521be893f7c11ec7ffc3c9c"
size = 4670368
[[package]]
-id = "yanxu-ui@0.1.0#44f9b5e8534a-99284e04a96b47cd"
+id = "yanxu-ui@0.1.1#44f9b5e8534a-193ba75d1d46bdf0"
name = "yanxu-ui"
-version = "0.1.0"
+version = "0.1.1"
source = "git:https://github.com/yanxulang/yanxu-ui.git"
-revision = "d1805e5085d4819b9f1939829a3468b64fceb329"
-checksum = "99284e04a96b47cd584689c1d959c6d427d4a9b816385acc7d85ec63490542fd"
+revision = "fb7776baa05ba4ec950696eb9a4cc1f11f290638"
+checksum = "193ba75d1d46bdf0489fc5c7efd667f4f1c3dad0ee578d2461c84e2bc44494c9"
entry = "src/主.yx"
target = "aarch64-apple-darwin"
-minimum_yanxu = ">=1.1.8"
+minimum_yanxu = ">=1.1.9"
[package.dependencies]
"言台" = "yanxu-platform@0.1.0#d95caa6bf952-93c96bdb2e39ad2a"
diff --git "a/examples/desktop/\350\250\200\345\272\217.toml" "b/examples/desktop/\350\250\200\345\272\217.toml"
index 4eee698..59e5fc8 100644
--- "a/examples/desktop/\350\250\200\345\272\217.toml"
+++ "b/examples/desktop/\350\250\200\345\272\217.toml"
@@ -2,11 +2,11 @@
格式 = 2
名称 = "言序文档图形示例"
版本 = "0.1.0"
-言序 = ">=1.1.8"
+言序 = ">=1.1.9"
入口 = "自动关闭冒烟.yx"
[依赖]
-言界 = { 包 = "yanxu-ui", git = "https://github.com/yanxulang/yanxu-ui.git", 修订 = "v0.1.0", 版 = "^0.1" }
+言界 = { 包 = "yanxu-ui", git = "https://github.com/yanxulang/yanxu-ui.git", 修订 = "v0.1.1", 版 = "^0.1" }
[应用]
类型 = "图形"
diff --git a/package-lock.json b/package-lock.json
index 6423bef..81ab0ce 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "@yanxulang/docs",
- "version": "1.1.8",
+ "version": "1.1.20",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@yanxulang/docs",
- "version": "1.1.8",
+ "version": "1.1.20",
"hasInstallScript": true,
"dependencies": {
"@orama/orama": "^3.1.18",
diff --git a/package.json b/package.json
index 4dd84c8..2da4116 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@yanxulang/docs",
- "version": "1.1.8",
+ "version": "1.1.20",
"private": true,
"type": "module",
"scripts": {
diff --git a/scripts/check-content.mjs b/scripts/check-content.mjs
index 9d0435e..76c0205 100644
--- a/scripts/check-content.mjs
+++ b/scripts/check-content.mjs
@@ -90,10 +90,42 @@ const layout = read('lib/layout.shared.tsx');
assert.ok(!/图形|GUI|桌面|言窗|言界/i.test(layout), '顶栏不得包含桌面界面入口');
const packageJson = JSON.parse(read('package.json'));
-assert.equal(packageJson.version, '1.1.8');
+assert.equal(packageJson.version, '1.1.20');
assert.match(read('content/docs/standard-library/index.mdx'), /25 个标准模块/);
assert.match(read('app/layout.tsx'), /metadataBase:\s*new URL\('https:\/\/docs\.yanxu\.dev\/'\)/);
+const docsCi = read('.github/workflows/ci.yml');
+assert.match(docsCi, /name: 入门语言示例[\s\S]*?ref: v1\.1\.20/, '语言示例 CI 未固定言序 1.1.20');
+assert.match(docsCi, /name: 桌面生态示例[\s\S]*?ref: v1\.1\.9/, '言界示例 CI 未固定已验证的言序 1.1.9');
+assert.match(read('content/docs/language/binary-data.mdx'), /单值硬上限为 16 MiB/);
+assert.match(read('content/docs/reference/project-format.mdx'), /\| 字节码块 \| 2 \| 2 \|/);
+assert.match(read('content/docs/reference/permissions.mdx'), /15 项宿主能力/);
+assert.match(read('content/docs/reference/permissions.mdx'), /`本地网络`/);
+const migrationMeta = JSON.parse(read('content/docs/reference/migrations/meta.json'));
+for (let patch = 6; patch <= 20; patch += 1) {
+ assert.ok(migrationMeta.pages.includes(`1.1.${patch}`), `迁移导航缺少 1.1.${patch}`);
+}
+assert.match(read('content/docs/reference/migrations/1.1.20.mdx'), /1\.1\.17 用户应直接升级到 1\.1\.20/);
+const packageManager = read('content/docs/tooling/package-manager.mdx');
+for (const requirement of [
+ '0.6.1', '言序 1.1.20', 'CLI001..CLI010', 'TXN001..TXN005',
+ '--message-format', 'AUDIT_CAPABILITY_MISSING', 'CycloneDX 1.5',
+]) {
+ assert.ok(packageManager.includes(requirement), `言包文档缺少 ${requirement}`);
+}
+const desktopManifest = read('examples/desktop/言序.toml');
+assert.match(desktopManifest, /言序 = ">=1\.1\.9"/);
+assert.match(desktopManifest, /修订 = "v0\.1\.1"/);
+const desktopLock = read('examples/desktop/言序.lock');
+assert.match(desktopLock, /generator = "1\.1\.9"/);
+assert.match(desktopLock, /yanxu-ui@0\.1\.1/);
+assert.match(desktopLock, /minimum_yanxu = ">=1\.1\.9"/);
+const desktopCompatibility = read('content/docs/ecosystem/desktop/compatibility.mdx');
+for (const requirement of ['1.1.9', '1.1.20', '0.5.0', '0.6.1', '0.1.1', '1.1.2']) {
+ assert.ok(desktopCompatibility.includes(requirement), `桌面兼容矩阵缺少 ${requirement}`);
+}
+assert.match(desktopCompatibility, /不存在“言序 1\.1\.20 \+ 言包 0\.6\.1 \+ 言界 0\.1\.1”/);
+
const stableLibraries = [
['yanju', '1.2.0', '1.1.6', 'content/docs/ecosystem/yanju/index.mdx', '/ecosystem/yanju/'],
['yanxu-semver', '1.0.0', '1.1.6', 'content/docs/ecosystem/libraries/semver.mdx', '/ecosystem/libraries/semver/'],