Skip to content

libjbytecode 完全退役(P6 退链)路线对账:剩链接层传递 + mjt-py tree DOM 直接消费 #15

Closed

Description

@luiox

现状(2026-10-25 对账结论)

libjbytecode 尚未完全退役,但直接消费面已基本收窄:

  • mjbase 源码零 jbytecode/ include(pass 层全部走 libjbc CodeDom/CodeEditor,注册表 31 件在案;mjbase xmake.lua 注释明说「旧栈退链归 P6 收口」)。
  • mjt MCP 侧零直接 include。

剩余残留(三处)

  1. 链接层传递依赖:libjhasm → libjblw → libjbytecode(jasm 文本面)。mjbase/mjt 的链接闭包里 libjbytecode_util/commons/analysis/tree/core 全部来自这条链。解耦点在 libjhasm 仓(外部包),需要 libjhasm 把 jasm 文本面从 libjblw/libjbytecode 上解下。
  2. mjt-py 直接 API 消费(P6 最大阻塞):
    • mjt-py/src/pysdk_facade.cpp(2480 行)+ pysdk_facade.hpp(669 行):深度绑定 jbytecode::tree::ClassNode/MethodNode/AbstractInsnNode 指令树 DOM(insn uid 映射、ephemeral 方法、label 索引全在 tree 节点指针上)。
    • mjt-py/src/pysdk_jar.cpp(283 行):tree::ClassNode + core::ClassWriter 写类。
    • mjt-py/src/bind_core.cpp:仅 core::Opcodes(浅依赖,可低代价换 libjbc jbc/core/opcode.hpp)。
  3. 根 xmake.lua 钉版面:add_requires("libjbytecode 0.0.2") + libjblw/libjhasm 嵌套 requireconfs 族,仅为统一 libca 实例钉版本;退链完成后可整体删除。

退役步骤(建议序)

  1. libjhasm 仓解耦 jasm 文本面(外部包改动,需在 libjhasm/libjblw 侧立单)。
  2. mjt-py pysdk 面迁移:pysdk_facade 的 tree DOM 逐步换 mjbase workspace/jasm 面或 libjbc 会话面(大工程,建议按 facade 的读面 → jar 写面 → insn uid 面 分批);bind_core 的 Opcodes 先行低代价替换。
  3. 删除根 xmake.lua 的 libjbytecode requires/requireconfs 与链接闭包里的 libjbytecode_* 五件,回归构建。

附:morpher/mbase opt pass 移植余量(同次对账,供排期参考)

已迁约 20 件(注册表 31 项在案);待迁/待裁决见 mjbase dev_plan.md 余量批次裁决表:ConsJumpOptimizer/ConstantSwitchFolder/ConstantStateMachineEliminator 族、UnreachableInsnRemover(1594 行大件独立批)、StaticFieldDefaultInliner(mbase 侧已治理修复多次 PUTSTATIC 计数)、StackOperationExpander(随帧链接线);label 布局族(insn_rearranger/jump_label_layout)待载体重论证;method_inliner 等无消费方不迁;unused_label_remover 已裁决结构性吸收除名。

Activity

  1. luiox commented on Oct 28, 2026

    @luiox
    OwnerAuthor

    三处残留逐项对账收口(2026-10-28):

    1. 链接层传递依赖:libjhasm 0.3.0 已把后端整体切到 libjbc(退役 libjblw/libjbytecode 依赖,包定义 on_load 按版本分支),mjbase/mjt 链接闭包已无 libjbytecode_* 五件。
    2. mjt-py tree DOM 直接消费:feat(mjt-py): facade 树面重写到 libjbc 会话面(迁移批 B6) #19(迁移批 B6)把 pysdk_facade/pysdk_jar/bind_core 全量换到 libjbc 会话面(ClassSession/CodeDom),44 组件测试绿。
    3. 根 xmake.lua 钉版面:chore(deps): libjbytecode/libgarena 全退役,libjbc 抬 0.4.19(RFC 0002 B8 8.7 下游收口) #22 摘除 libjbytecode/libgarena requires/requireconfs 与链接闭包残留。

    复核:两仓源码/构建脚本 grep 零 jbytecode 代码引用(仅存迁移历史注释);两仓 main CI 全绿。P6 退链完成,本单关闭。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions