+|
+
+ Lithe Community · v0.1.0 · API 4(需 debugAdapters、languages、serverProcess、settings)
+预发布 LLDB 调试器:通过你电脑上的 lldb-dap 调试 C、C++、Objective-C、Swift 和 Rust,支持断点、单步、变量,以及带补全的 lldb 控制台。需要支持插件 API 4 的 Lith…
+🏷️ 工具 · 💻 macOS · 
+tool debug lldb cpp rust swift
+ |
Lithe Community · v0.3.0 · API 1
diff --git a/docs/publishing.md b/docs/publishing.md
index d9f3d68..1ca8d44 100644
--- a/docs/publishing.md
+++ b/docs/publishing.md
@@ -30,6 +30,7 @@
- `pluginAPIVersion: 3` 必须有非空 `requires`,逐项声明包实际使用的能力及其契约版本。
例如只使用声明式构建系统的包为 `"requires": { "buildSystems": 1 }`;不要无故增加
`buildProviders` 等能力。API 1/2 继续使用原有格式,不能带 `requires`。
+ API 4(调试适配器)同样在 `requires` 里逐项声明,例如 `"debugAdapters": 1`。
- `requires` 的键是小写字母开头、后接英文字母或数字、最长 64 个字符的能力 ID,
值是正整数。索引允许未知能力 ID,由宿主能力表决定可安装性;这不表示当前宿主支持它。
- 包内路径只用 `/`,不能有 `..`、绝对路径或符号链接。
@@ -117,8 +118,9 @@ shasum -a 256 zig-support-2.0.0-darwin-arm64.zip
```
提高 API 等级或能力版本时发布新的插件版本,并保留最后一个旧要求的版本项,
- 让旧宿主仍能选择可安装版本。当前 Core 对未来 API 等级(4 及以上)的索引项允许
- 省略 `requires`,提供时仍校验能力表;这只是索引格式的前向兼容,不承诺宿主可安装。
+ 让旧宿主仍能选择可安装版本。Core 对 API 3 以上的索引项允许省略 `requires`,
+ 提供时仍校验能力表;API 4 的版本项应像 API 3 一样逐项复制包内的 `requires`
+ (自动追踪就是这样写的),宿主才能据此判断自己是否具备这些能力。
2. 统一格式并本地校验(CI 要求索引使用统一格式:两格缩进,纯值列表写在一行):
@@ -156,6 +158,13 @@ shasum -a 256 zig-support-2.0.0-darwin-arm64.zip
索引条目并接受相同的校验,不能靠调整追踪策略自动收录。Maven、Gradle 的 `0.1.0`
预发布收录属于这种手工流程,条目是否存在不代表发布或运行验证已经完成。
+需要新插件 API 的版本(例如调试适配器插件需要 API 4)要等到稳定版 Lithe 支持该 API 才能让
+稳定版用户安装;稳定版是否支持,以 Lithe 的发行说明为准。支持之前,把 GitHub Release 标为
+预发布,并手工提交索引条目(LLDB Debugger `0.1.0` 就是这样收录的)。稳定版 Lithe 遇到自己
+不支持的 API 等级只会显示“需要更新 Lithe”,不会安装,所以不会装出坏插件。稳定版支持之后,
+把 Release 转为正式发布(或发布新版本),自动追踪就会接手后续版本。调试适配器插件的写法见
+[编写调试适配器插件](https://github.com/Lithe-IDEA/lithe-plugin-docs/blob/main/guides/debug-adapter-plugin.md)。
+
自动追踪会在日志中说明归档无法收录的原因:没有符合命名的 zip、包内 `plugin.json`
不匹配或缺失/畸形的能力表、多个资产声明了不同的版本号、API 等级或能力表、
版本号已被别的资产占用。单个发布存在分歧时拒绝整个版本,不只保留其中一个平台包。
diff --git a/scripts/validate-index.mjs b/scripts/validate-index.mjs
index aa427f1..2b55c1e 100644
--- a/scripts/validate-index.mjs
+++ b/scripts/validate-index.mjs
@@ -80,7 +80,7 @@ function validateVersionRequirements(version) {
if (version.pluginAPIVersion === 3 && !present) {
throw invalid("pluginAPIVersion 3 must list its capabilities in `requires`");
}
- // Core permits future API levels without requires, but validates it when supplied.
+ // Core permits API levels above 3 without requires, but validates it when supplied.
if (!present) return;
if (!isObject(version.requires) || Object.keys(version.requires).length === 0) {
throw invalid("`requires` must be a non-empty capability object");
|