diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c3952dc..c76c255 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -38,6 +38,9 @@ jobs: windows: name: Build Windows x64 backend + env: + # The plugin must run without a separately installed VC++ runtime. + RUSTFLAGS: -C target-feature=+crt-static runs-on: windows-latest timeout-minutes: 30 steps: @@ -96,6 +99,14 @@ jobs: for arch in arm64 x86_64; do scripts/build-package.sh --arch "$arch" done + - name: Verify Windows runtime dependencies + run: | + set -euo pipefail + /usr/bin/objdump -p .artifacts/windows-backend/lithe-java-backend.exe > "$RUNNER_TEMP/windows-imports.txt" + if grep -Ei 'DLL Name:.*(VCRUNTIME|MSVCP|libgcc|libstdc|libwinpthread)' "$RUNNER_TEMP/windows-imports.txt"; then + echo "::error::Windows backend depends on a separately installed compiler runtime" + exit 1 + fi - name: Assemble the Windows archive run: | set -euo pipefail diff --git a/README.md b/README.md index 679180b..9dc3069 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Java Support for Lithe -> **Viva 预览版 Java 支持(1.1.0)**:清单已迁到当前契约 0,后端使用 Core +> **Viva 预览版 Java 支持(1.1.1)**:清单已迁到当前契约 0,后端使用 Core > `65cf82343c5e315aae2e335b2e8f0217b703e89a` 中的 Rust SDK 0.4.0(尚无对应发布标签)。 > 本轮验证含第三方 JAR 依赖的普通 Maven 工程:JDT 补全、Maven 编译、main 运行和断点调试,包含变量读取、继续和退出。 > 需要同时包含 Lithe 客户端的动作注册解码、动作刷新与首次调试加载修复;未修改这些行为的旧 preview 不能直接使用本包。 @@ -24,7 +24,7 @@ > SDK. Maven and Gradle import settings come from the Maven and Gradle plugins through a function interface that > Lithe Core relays between plugins. -1.1.0 面向包含主仓库 [#1884](https://github.com/1lck/Lithe-IDEA/pull/1884) 的配套 Viva preview(客户端修订 `607f00967d70a7017d49805183d0d2e6ffdf1c0d` 或更新版本)。API / 能力与传输版本以 `plugin.json`、`sdk.lock.json` +1.1.1 面向包含主仓库 [#1884](https://github.com/1lck/Lithe-IDEA/pull/1884) 的配套 Viva preview(客户端修订 `607f00967d70a7017d49805183d0d2e6ffdf1c0d` 或更新版本)。API / 能力与传输版本以 `plugin.json`、`sdk.lock.json` 和固定 Core 中的[插件资料](https://github.com/Lithe-IDEA/Lithe-core-rust/tree/65cf82343c5e315aae2e335b2e8f0217b703e89a/shared/plugins)为准。 `MIGRATION.md` 保留迁移历史,不能用其中旧宿主、旧 API 数字推断当前兼容性。 @@ -269,7 +269,7 @@ node scripts/package/build-windows.mjs /path/to/lithe-java-backend.exe ``` 脚本验证 x64 PE 与锁定 JDK 的 SHA-256,复用 JDT 构建入口,写入 `.artifacts/` 并清理组装临时目录。 -发布工作流在 Windows 从同一标签构建并测试 x64 后端,再通过此入口组装 ZIP;本地验证复用相同入口。包不带发布者签名,不含安装器,打包成功也不能代替 Windows 运行验收。 +发布工作流在 Windows 从同一标签构建并测试 x64 后端,静态链接编译器运行库,再通过此入口组装 ZIP;本地验证复用相同入口。发布前用成熟的 PE 检查工具拒绝额外的 VC++/MinGW 运行库 DLL 依赖,保持后端无需另装编译器运行库。包不带发布者签名,不含安装器,打包成功也不能代替 Windows 运行验收。 ## 发布新版本 diff --git a/docs/releases/v1.1.0.md b/docs/releases/v1.1.0.md index 512abc5..b2ec6c5 100644 --- a/docs/releases/v1.1.0.md +++ b/docs/releases/v1.1.0.md @@ -13,6 +13,7 @@ Maven 项目配合 Maven 0.0.1;Gradle 项目配合 Gradle 1.0.0。构建工具 ### 更新 - 跑通普通 Maven、Gradle 和普通 Java 目录的补全、编译、运行及断点调试,Java 8 项目保留正确的编译目标。 +- Windows 后端静态链接编译器运行库,发布检查拒绝额外的 VC++/MinGW 运行库依赖。 - 修复 Windows 可执行路径、中文/UNC 文件 URI、Lombok 加载及过长 classpath;退出后清理临时 classpath JAR。 - 冷索引暂时无法返回运行动作时,在索引任务完成后有界恢复,不增加后台轮询。 - 已在 macOS 与 Windows 无头验证断点变量、继续/停止、编译错误阻止运行旧 class、暂停时关闭及插件安装目录只读。 @@ -40,6 +41,7 @@ Use Maven 0.0.1 for Maven projects and Gradle 1.0.0 for Gradle projects. Supply ### Changes - Validated completion, compilation, execution and breakpoint debugging for ordinary Maven, Gradle and plain Java projects, preserving Java 8 compilation targets. +- The Windows backend statically links compiler runtimes; release checks reject extra VC++/MinGW runtime DLL dependencies. - Fixed Windows executable paths, Unicode/UNC file URIs, Lombok loading and long classpaths; temporary classpath JARs are removed after execution. - Recover run actions after cold-index jobs finish, with bounded retries and no background polling. - Headless macOS and Windows workflows cover breakpoint locals, continue/stop, refusal to run stale classes after compilation errors, closing paused sessions and read-only installed packages. diff --git a/docs/releases/v1.1.1.md b/docs/releases/v1.1.1.md new file mode 100644 index 0000000..663195a --- /dev/null +++ b/docs/releases/v1.1.1.md @@ -0,0 +1,53 @@ +## 中文 + +Java Support 1.1.1 为配套 Viva 预览版提供 Java 项目支持。本版本是预发布,插件包不带发布者签名。 + +### 下载与安装 + +下载本页对应系统的 ZIP:macOS Apple Silicon(`darwin-arm64`)、macOS Intel(`darwin-x64`)或 Windows x64(`windows-x64`)。在兼容 Viva 客户端的插件设置中选择从文件安装 ZIP。 + +需要包含 [Lithe #1884](https://github.com/1lck/Lithe-IDEA/pull/1884) 的客户端(修订 `607f00967d70a7017d49805183d0d2e6ffdf1c0d` 或更新版本)及 Core #29。旧版 macOS Lithe 和未包含这些修复的 Viva preview 不受支持。插件使用契约/API/能力版本 0;语言服务器使用随包 Temurin 21,项目运行仍使用用户选择的 JDK。 + +Maven 项目配合 Maven 0.0.1;Gradle 项目配合 Gradle 1.0.0。构建工具由用户安装或由项目 Wrapper 提供。 + +### 更新 + +- 跑通普通 Maven、Gradle 和普通 Java 目录的补全、编译、运行及断点调试,Java 8 项目保留正确的编译目标。 +- Windows 后端静态链接编译器运行库,发布检查拒绝额外的 VC++/MinGW 运行库依赖。 +- 修复 Windows 可执行路径、中文/UNC 文件 URI、Lombok 加载及过长 classpath;退出后清理临时 classpath JAR。 +- 冷索引暂时无法返回运行动作时,在索引任务完成后有界恢复,不增加后台轮询。 +- 已在 macOS 与 Windows 无头验证断点变量、继续/停止、编译错误阻止运行旧 class、暂停时关闭及插件安装目录只读。 + +### 兼容性与已知限制 + +尚未完整验收原生窗口、全部日志/取消路径、JUnit/TestNG 行内运行器和 Spring/MyBatis。JSP HTTP/Servlet 调试通过不代表 JSP 源码补全或 JSP 断点;Ant 源码布局不代表执行 Ant target。Java 5/7 源码级别、长 module-path、JavaCC 生成模型、多版本 JAR 和部分旧泛型项目仍有限制,详见 README 与主仓库 #1881–1883。 + +实测 JDT 内存与补全延迟没有显著改善,本版本不宣称整体性能提升。Windows 的真实工作流在 ARM Windows 上使用 x64 工具验证,其耗时不代表原生 AMD64 性能。 + +--- + +## English + +Java Support 1.1.1 targets the matching Viva preview. This is a prerelease with unsigned plugin archives. + +### Download and installation + +Choose the ZIP for macOS Apple Silicon (`darwin-arm64`), macOS Intel (`darwin-x64`), or Windows x64 (`windows-x64`), then install it from a file in the compatible Viva client's plugin settings. + +The client must include [Lithe #1884](https://github.com/1lck/Lithe-IDEA/pull/1884), revision `607f00967d70a7017d49805183d0d2e6ffdf1c0d` or newer, and Core #29. Legacy macOS Lithe and earlier Viva previews are unsupported. Contract, API and capability versions are 0. Bundled Temurin 21 runs the language server; project execution uses the selected project JDK. + +Use Maven 0.0.1 for Maven projects and Gradle 1.0.0 for Gradle projects. Supply the build tool yourself or through the project's wrapper. + +### Changes + +- Validated completion, compilation, execution and breakpoint debugging for ordinary Maven, Gradle and plain Java projects, preserving Java 8 compilation targets. +- The Windows backend statically links compiler runtimes; release checks reject extra VC++/MinGW runtime DLL dependencies. +- Fixed Windows executable paths, Unicode/UNC file URIs, Lombok loading and long classpaths; temporary classpath JARs are removed after execution. +- Recover run actions after cold-index jobs finish, with bounded retries and no background polling. +- Headless macOS and Windows workflows cover breakpoint locals, continue/stop, refusal to run stale classes after compilation errors, closing paused sessions and read-only installed packages. + +### Compatibility and known limitations + +Native windows, all logging/cancellation paths, inline JUnit/TestNG and Spring/MyBatis have not been fully accepted. JSP HTTP/Servlet debugging does not cover JSP-source completion or JSP breakpoints; Ant source layouts do not cover Ant targets. Java 5/7 source levels, long module-paths, JavaCC models, multi-release JARs and some older generic code remain limited; see README and Lithe #1881–1883. + +Measurements found no significant JDT memory or completion-latency improvement. Windows workflows used x64 tools on ARM Windows, so their timings do not represent native AMD64 performance. diff --git a/io.github.lithe-idea.java-support/plugin.json b/io.github.lithe-idea.java-support/plugin.json index 6aed604..cb79fda 100644 --- a/io.github.lithe-idea.java-support/plugin.json +++ b/io.github.lithe-idea.java-support/plugin.json @@ -2,7 +2,7 @@ "schemaVersion": 0, "id": "io.github.lithe-idea.java-support", "displayName": "Java Support", - "version": "1.1.0", + "version": "1.1.1", "pluginAPIVersion": 0, "requires": {"backend": 0, "debugAdapters": 0, "languages": 0, "languageServers": 0, "pluginFunctions": 0, "settings": 0, "projectGenerators": 0, "toolDefinitions": 0}, "requiresTools": ["java"],