From e6c9c7137c76dfa306f40deac870f4f3be2ba403 Mon Sep 17 00:00:00 2001 From: Canrad <1517807724@qq.com> Date: Wed, 28 Oct 2026 14:40:52 +0800 Subject: [PATCH] =?UTF-8?q?chore(deps):=20libjbytecode/libgarena=20?= =?UTF-8?q?=E5=85=A8=E9=80=80=E5=BD=B9=EF=BC=8Clibjbc=20=E6=8A=AC=200.4.19?= =?UTF-8?q?=EF=BC=88RFC=200002=20B8=208.7=20=E4=B8=8B=E6=B8=B8=E6=94=B6?= =?UTF-8?q?=E5=8F=A3=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mjbase PR #72 后 relaxed_verifier 直驱 libjbc FrameEngine,mjbase.lib jbytecode 符号归零,mjt 侧闭包兜底失去存在理由:root 摘 require/requireconf×3,mjt/mjt-py/unittest 链接闭包摘 libjbytecode 五段; libgarena 全线零消费一并出链(mjbase 8.7 同款实证)。 libjbc 0.4.18→0.4.19:mjbase main(GotoRearranger #71 起消费 moveRange) 要求 0.4.19,mjt 内联定义补同 commit 条目(81173a0)消双定义 skew。 文档同步:AGENTS/README 依赖清单去 libjbytecode/libgarena;long_path.hpp VOID 宏注释去 jbytecode 专名;test_helper/README 摘 libjbytecode 根文件示例行。 回归(delete-then-rebuild):mjt_mcp_unittest 114 件 113 过+1 skip(0 败)、 mjt_pysdk_unittest 44、libjhasm_unittest 36+1 skip、libjdk_finder_unittest 5、 mjt_pysdk_embedtest all green、产品 mjt-mcp 构建过。 --- AGENTS.md | 5 ++--- README.md | 3 +-- README.zh-CN.md | 3 +-- mjt-py/xmake.lua | 8 ++------ mjt/src/shared/long_path.hpp | 8 ++++---- mjt/xmake.lua | 4 ++-- test_helper/README.md | 2 -- test_helper/jdk_fixture.hpp | 4 ++-- unittest/xmake.lua | 4 ++-- xmake.lua | 8 +------- xmake/packages/libjbc.lua | 2 ++ 11 files changed, 19 insertions(+), 32 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index 4d8e328..4409754 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -18,12 +18,11 @@ xmake run --gtest_brief=1 `--with_tests=y`)。 外部依赖只有 luiox-repo 中心包仓直连包(libca / libmcp / libjstr / -libjbytecode / libjzip / libgarena / libjclassfile / libjstd / libjdk_finder / +libjzip / libgarena / libjclassfile / libjstd / libjdk_finder / libjhasm + xrepo 的 gtest / libarchive / zlib / nlohmann_json; libjbc 走项目内联包定义,git 直连 + commit 锁),不引入仓内副本、不做 phony 垫片;各包嵌套的 libca 必须用 `add_requireconfs` 钉回同一 `LUIOX_LIBCA_VERSION`。 -libjbytecode 仅剩链接闭包兜底(mjbase.lib 的 relaxed_verifier 消费, -RFC 0002 B8 收口后随 mjbase 一并摘除);libjblw 已全退役(B7)。 +libjbytecode / libjblw 已全退役(B7 摘 libjblw,B8 8.7 摘 libjbytecode)。 ## 约定 diff --git a/README.md b/README.md index 68bf7f5..70df729 100644 --- a/README.md +++ b/README.md @@ -35,8 +35,7 @@ xmake build mjt-mcp Dependencies are pulled directly from [luiox-repo](https://github.com/luiox/luiox-repo): libca, libmcp, libjstr, -libjbytecode (link-closure only, consumed by mjbase's relaxed_verifier until -RFC 0002 B8), libjzip, libgarena, libjclassfile, libjstd, libjdk_finder, +libjzip, libgarena, libjclassfile, libjstd, libjdk_finder, libjhasm; libarchive / zlib / nlohmann_json come from [xrepo](https://xmake.io). libjbc is defined as an in-repo inline package (git direct with a pinned commit, kept at the same version as mjbase). The diff --git a/README.zh-CN.md b/README.zh-CN.md index 58150ec..888e9e3 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -30,8 +30,7 @@ xmake build mjt-mcp ``` 依赖经 [luiox-repo](https://github.com/luiox/luiox-repo) 直连拉取:libca、libmcp、 -libjstr、libjbytecode(仅链接闭包兜底——mjbase 的 relaxed_verifier 消费, -RFC 0002 B8 收口后摘除)、libjzip、libgarena、libjclassfile、libjstd、 +libjstr、libjzip、libgarena、libjclassfile、libjstd、 libjdk_finder、libjhasm;libarchive / zlib / nlohmann_json 走 [xrepo](https://xmake.io)。libjbc 走项目内联包定义(git 直连 + commit 锁,与 mjbase 同版本)。字节码基座本体是 mjbase,打包进 luiox-repo 前以兄弟目录源码级 diff --git a/mjt-py/xmake.lua b/mjt-py/xmake.lua index 4e882ce..8581046 100644 --- a/mjt-py/xmake.lua +++ b/mjt-py/xmake.lua @@ -74,9 +74,7 @@ if has_config("with_pysdk") then -- 「消费者在前、被依赖在后」排序(MSVC 对序不敏感,此序为 GNU ld 兼容 -- 口径;链面与 mjt-mcp binary 同款,mcp 编排专有件除外)。 mjt_binary_link_closure("mjbase", "libjhasm", - "libjbytecode_util", "libjbytecode_commons", - "libjbytecode_analysis", "libjbytecode_tree", - "libjbytecode_core", "libgarena", "libjclassfile", + "libjclassfile", "libjstr", "libjbc", "libjzip") -- util 层随 pyd 同目录部署(--script / 外部 import mjt 都从 pyd 旁加载)。 @@ -104,9 +102,7 @@ if has_config("with_pysdk") then add_files(path.join(mjtSharedSrc, "shared", "decompiler.cpp"), path.join(mjtSharedSrc, "shared", "jar_remapper.cpp")) mjt_binary_link_closure("mjbase", "libjhasm", - "libjbytecode_util", "libjbytecode_commons", - "libjbytecode_analysis", "libjbytecode_tree", - "libjbytecode_core", "libgarena", "libjclassfile", + "libjclassfile", "libjstr", "libjbc", "libjzip") set_rundir("$(projectdir)") add_defines('MJT_PYTHON_HOME_DEFAULT="' .. pyHome .. '"') diff --git a/mjt/src/shared/long_path.hpp b/mjt/src/shared/long_path.hpp index d1f4958..caca2e8 100644 --- a/mjt/src/shared/long_path.hpp +++ b/mjt/src/shared/long_path.hpp @@ -57,10 +57,10 @@ #include #include -//windows.h 的 VOID 宏(#define VOID void)会打坏后续 JVM 字节码头的类型 -//常量(jbytecode::core::Type::VOID → "static constexpr int void")。本头的 -//消费 TU(cmd_jar 等)在包含本头之后还要包含 mjbase/jbytecode 头,故在此 -//恢复裸名;本头不再包含其它 Windows 头,无回漂风险。 +//windows.h 的 VOID 宏(#define VOID void)会打坏后续 JVM 字节码头用到的 +//裸名 VOID 槽位(libjbc 指令/类型建模同形)。本头的消费 TU(cmd_jar 等) +//在包含本头之后还要包含 mjbase 字节码头,故在此恢复裸名;本头不再包含 +//其它 Windows 头,无回漂风险。 #ifdef VOID #undef VOID #endif diff --git a/mjt/xmake.lua b/mjt/xmake.lua index 9625ccd..ba34bb6 100644 --- a/mjt/xmake.lua +++ b/mjt/xmake.lua @@ -64,7 +64,7 @@ target("mjt-mcp") -- 被依赖在后),否则 auto 排序把 libca 包归档排到 mjt_shared 前,链接期 -- 报 ca::process 等符号 undefined(Linux CI 实证)。闭包序与 unittest 同款。 mjt_binary_link_closure("mjt_mcp_core", "mjt_shared", "mjbase") - mjt_binary_link_closure("libjhasm", "libjbytecode_util", "libjbytecode_commons", "libjbytecode_analysis", "libjbytecode_tree", "libjbytecode_core", "libgarena", "libjclassfile", "libjstr", "libjbc", "libjzip") + mjt_binary_link_closure("libjhasm", "libjclassfile", "libjstr", "libjbc", "libjzip") add_files("mcp/src/main.cpp") set_rundir("$(projectdir)") @@ -80,7 +80,7 @@ if has_config("with_tests") then -- xmake 3.x 不把静态 target 依赖传进 binary 链接:显式给全闭包,按 -- 「消费者在前、被依赖在后」排序,另含 libmcp 及其 http/net/io 链。 mjt_binary_link_closure("mjt_mcp_core", "mjt_shared", "mjbase") - mjt_binary_link_closure("libjhasm", "libjbytecode_util", "libjbytecode_commons", "libjbytecode_analysis", "libjbytecode_tree", "libjbytecode_core", "libgarena", "libjclassfile", "libjstr", "libjbc", "libjzip", "test_helper", "libjdk_finder") + mjt_binary_link_closure("libjhasm", "libjclassfile", "libjstr", "libjbc", "libjzip", "test_helper", "libjdk_finder") -- 注:libca_i18n 为 headeronly target(无 .lib 产物),只入 add_deps 不入 add_links。 add_includedirs("mcp/src") add_files("mcp/test/*.cpp") diff --git a/test_helper/README.md b/test_helper/README.md index fa050ac..01930be 100644 --- a/test_helper/README.md +++ b/test_helper/README.md @@ -51,8 +51,6 @@ and builds a `name → absolute_path` map: | File location | Content (name) | Resolved path | |---|---|---| | `.project_root_file` | `mjt` | *project root* | -| `libs/libjbytecode/.project_root_file` | `libjbytecode` | `libs/libjbytecode/` | -| `libs/libjbytecode/core/.project_root_file` | `libjbytecode_core` | `libs/libjbytecode/core/` | | ... | ... | ... | Blacklist (directories skipped during scan): `.`-prefix, `build`-prefix, `node_modules`. diff --git a/test_helper/jdk_fixture.hpp b/test_helper/jdk_fixture.hpp index 197a58c..f91bfc6 100644 --- a/test_helper/jdk_fixture.hpp +++ b/test_helper/jdk_fixture.hpp @@ -424,8 +424,8 @@ inline ExecResult runJavaMain(const JdkToolchain& tc, const fs::path& classpath, //共享 JVM 行为等价 harness:写 class(es)+Runner.java → javac → java → 抓 stdout。 // //收敛此前散在多处的同一份逻辑(mbase runJvmMainClasses、mjt runJvmMain)。 -//层级放 test::jdk(只依赖 jdk_finder+filesystem,不碰 -//libjbytecode/libjzip),供全线复用。JDK 不可用返回 nullopt,调用方 GTEST_SKIP。 +//层级放 test::jdk(只依赖 jdk_finder+filesystem,不碰字节码/zip 库), +//供全线复用。JDK 不可用返回 nullopt,调用方 GTEST_SKIP。 //--------------------------------------------------------------------------- ///把控制台捕获的 CRLF 归一化为 LF,使跨平台 stdout 比对一致。 diff --git a/unittest/xmake.lua b/unittest/xmake.lua index b7f563e..1d09c46 100644 --- a/unittest/xmake.lua +++ b/unittest/xmake.lua @@ -32,11 +32,11 @@ target("libjhasm_unittest") set_default(false) add_deps("test_helper") - add_packages("libjhasm", "libjbc", "libgarena", "libjstr", "libca") + add_packages("libjhasm", "libjbc", "libjstr", "libca") -- libjhasm 0.3.2 后端换 libjbc(B4):libjblw/libjbytecode 出链;套件的 -- 产物回读验证直连 libjbc readClass。libjhasm/libjbc/libjdk_finder 已 -- 包化,保留在闭包里维持 GNU ld 消费者在前。 - mjt_binary_link_closure("libjhasm", "libjbc", "libgarena", "libjstr", "test_helper", "libjdk_finder") + mjt_binary_link_closure("libjhasm", "libjbc", "libjstr", "test_helper", "libjdk_finder") add_packages("gtest") add_files("jhasm/main.cpp", "jhasm/*_test.cpp") add_includedirs("jhasm") diff --git a/xmake.lua b/xmake.lua index eae7b8d..33cb2b4 100644 --- a/xmake.lua +++ b/xmake.lua @@ -131,26 +131,20 @@ add_requires("libca " .. LUIOX_LIBCA_VERSION, {configs = {modules = LUIOX_LIBCA_ -- luiox 家族直连包消费 0.0.2(libca 0.0.14 对齐版)。 add_requires("libmcp 0.1.0") add_requires("libjstr 0.0.2") -add_requires("libjbytecode 0.0.2") add_requires("libjzip 0.0.2") -add_requires("libgarena 0.0.2") add_requires("libjclassfile 0.0.2") -- libjbc 走项目内联包定义(git 直连 + commit 锁,与 mjbase 同版本): -- luiox-repo 的发布版落后于 mjbase 需要的面,且内联定义不吃 requireconfs, -- 其嵌套 libca 由定义内的 add_deps 钉到上面的单源版本。 includes("xmake/packages/libjbc.lua") -add_requires("libjbc 0.4.18") +add_requires("libjbc 0.4.19") add_requires("libjstd 0.0.1") add_requires("libjdk_finder 0.1.0") add_requires("libjhasm 0.3.2") -- 嵌套 libca 全路径钉定,缺一条就多一个实例。 add_requireconfs("libmcp.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}}) add_requireconfs("libjstr.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}}) -add_requireconfs("libjbytecode.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}}) -add_requireconfs("libjbytecode.libjstr.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}}) -add_requireconfs("libjbytecode.libgarena.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}}) add_requireconfs("libjzip.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}}) -add_requireconfs("libgarena.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}}) add_requireconfs("libjclassfile.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}}) add_requireconfs("libjclassfile.libjstr.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}}) add_requireconfs("libjstd.libca", {version = LUIOX_LIBCA_VERSION, configs = {modules = LUIOX_LIBCA_MODULES}}) diff --git a/xmake/packages/libjbc.lua b/xmake/packages/libjbc.lua index 150e790..91335d9 100644 --- a/xmake/packages/libjbc.lua +++ b/xmake/packages/libjbc.lua @@ -53,6 +53,8 @@ package("libjbc") add_versions("0.4.17", "2a44a3749d4cbca04a6221c37b78a56d4620d254") -- v0.4.17 发版(tag 同 commit) 2026-10-20 -- 0.4.18 = MethodEditor(从零建方法门面,PR #9)+ MethodParameters 接收者行放行(PR #11,main 合入头)。 add_versions("0.4.18", "ada334a12ec875ca9769bd5d4cb1f7e8494d2ebd") -- PR #11 合入 main 头 2026-10-26 + -- 0.4.19 = CodeDom/CodeEditor move-range 指令区间整体搬移原语(PR #12)+ self-version 对齐(PR #13,main 合入头)。 + add_versions("0.4.19", "81173a0f724f9d0369fedc1d5f95ccd14fe984a4") -- PR #13 合入 main 头 2026-10-28 -- 嵌套 libca 直接钉到本仓单源版本:项目内联包定义不吃 deps.lua 的 -- **.libca / libjbc.libca requireconfs(实测),裸声明会解析到仓库最新版