鸿蒙综合讨论/脚本引擎裁剪的决定

脚本引擎裁剪的决定

【踩坑实录】脚本引擎裁剪的决定

▍现象
动画软件工程的架构清单里有一项敏感依赖:表达式引擎(关键帧与参数绑定的脚本能力)构建在 Qt 的 JS 引擎上。这个引擎默认使用即时编译(JIT)——运行时生成可执行代码。在沙箱环境里,JIT 要过可执行内存的权限闸,而权限申请有审核成本与不确定性。脚本引擎怎么处置:裁掉、降级、还是硬上权限。

▍定位过程
决策依据三层:一,功能价值——表达式绑定是这类动画工具的核心能力(动效设计师靠它精确到帧),裁掉等于砍半条产品命,排除裁掉。二,技术路径——引擎有解释执行模式(不开 JIT),性能打折但语义完整;表达式求值的负载特征(短小、非热点循环)对解释模式的性能敏感性低。三,权限成本——JIT 权限的申请与审核成本,叠加它带来的安全审视面。工程最终决定:表达式引擎保留,JIT 关闭走解释执行(工程登记:V4 禁 JIT 走 interpreter)。

▍根因抽象
脚本引擎的裁剪决策不是技术洁癖题,是三维权衡:功能价值(裁了疼不疼)、性能现实(解释模式够不够用)、权限成本(JIT 审核值不值)。三维打分而不是一刀切。

▍对策落地
解释模式的性能验证(表达式密集的操作场景实测——够用即定案);关闭方式固化进构建配置(引擎的 JIT 开关在编译期关闭,不是运行时碰运气);决策记录进工程文档(为什么关、性能代价多少、什么条件下重新评估)。

▍同族参照
天文工程的脚本能力走了另一条路:上游自带的脚本引擎(观星脚本)通过补编依赖模块点亮保留——同一类决策,不同的三维打分(那边脚本是教学场景核心)。两案对照说明:没有标准答案,只有认真打的分。

脚本引擎决策的完整记录在动画工程与天文工程实录,apps 板块 56 篇欢迎对照。
楼主 7 天前
想参与讨论?登录 或 30 秒注册。