拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Rolldown 1.x 版本演进全解析:从 CHANGELOG 读懂新一代 Rust 打包器的迭代轨迹

Rolldown 1.x 版本演进全解析从 CHANGELOG 读懂新一代 Rust 打包器的迭代轨迹【免费下载链接】rolldownFast Rust bundler for JavaScript/TypeScript with Rollup-compatible API.项目地址: https://gitcode.com/GitHub_Trending/ro/rolldown本文以仓库根目录 CHANGELOG.md 为核心骨架系统梳理 Rolldown 从 1.0.0-beta.59 到 1.2.8 的完整版本演进涵盖版本时间线、变更日志结构、代码分割、dev 引擎/HMR、插件系统、tree-shaking、MagicString、平台支持等核心主题并结合仓库源码给出可验证的实现落点。读完本文你将掌握如何通过一份高质量 CHANGELOG 快速建立对 Rolldown 能力边界、内部架构与升级风险的整体认知。一、这份 CHANGELOG 是什么版本时间线与发布节奏当前仓库根目录的 CHANGELOG.md 共 2829 行完整记录了 Rolldown 在 2026 年 1 月至 9 月的全部正式发布2024、2025 年的历史变更分别归档在 CHANGELOG-2024.md 与 CHANGELOG-2025.md。当前仓库中packages/rolldown/package.json的版本号为1.2.8与 CHANGELOG 最新条目一致。版本发布日期阶段要点1.0.0-beta.59 / beta.602026-01-07 / 01-14预发布末期ECMAScript 视图与符号引用重构1.0.0-rc.1 ~ rc.182026-01-22 ~ 04-29RC 阶段含一次 breaking changeinlineConst 默认模式1.0.02026-05-07正式稳定版发布移除 RC 警告1.0.1 ~ 1.0.32026-05-13 ~ 05-27稳定版修补期1.1.0 ~ 1.1.52026-06-03 ~ 07-08lazyBarrel 开关反复、配置形态重构1.2.0 ~ 1.2.82026-07-15 ~ 09-09dev 引擎/HMR 大爆发插件时序、新平台支持从时间线可以看出清晰的节奏约每周一个补丁版本重大能力集中在 1.1.x 与 1.2.x 的 dev 侧。这正是本文要重点展开的部分。二、变更日志的结构约定一眼看懂每个版本的变更面每个版本条目都按固定分类组织理解这些分类是快速阅读的关键各分类含义均可在 CHANGELOG.md 各版本条目中直接观察到Features新能力。例如 1.2.6 的minify: support property name mangling、1.1.2 的expose React Compiler options。Bug Fixes缺陷修复。条目前缀常带模块名如dev:、code-splitting:、tree-shake:、magic-string:、rolldown_plugin_vite_*可直接定位影响面。Refactor内部重构通常不改变外部行为但对性能与可维护性影响深远例如replace tokio::sync::Mutex with std::sync::Mutex。Performance性能优化注明优化点与方法如减少分配、避免中间字符串。Testing测试体系演进反映质量保障思路。Documentation文档更新。Miscellaneous Tasks依赖升级oxc、rollup 测试子模块、napi、rust 工具链等、CI/发布流程调整。Revert被回滚的变更是判断某个能力是否还生效的关键信号例如 1.1.4 将 lazyBarrel 默认关闭后1.1.5 的记录中不再包含重新开启的条目。New Contributors新人贡献者可看出社区活跃度。此外#NNNN是 PR 编号本文不展开外部链接by user是提交者。deps:前缀的条目专门标记依赖升级例如 oxc 从 0.107.0beta.59一路升到 0.149.01.2.8这是 Rolldown 底层解析/转换能力持续跟上 ECMAScript 新语法的直接证据。三、里程碑从 RC 到 1.0.0 正式版CHANGELOG 完整记录了正式版前的最后冲刺1.0.0-rc.16实现 const enum 跨模块内联const enum cross-module inlining support并落地module tagging system for code splitting——为后续代码分割重构打基础。1.0.0-rc.17sort_modules执行顺序设计文档、RenderedModule文档落地Windows CI 按 PR 标签运行。1.0.0-rc.18唯一一次带BREAKING CHANGES标记的变更——inlineConst.mode默认值改为smart同时把this.emitFile的 chunk 路径改为同步以避免死锁。1.0.0正式版发布文档侧同步getting-started: remove RC warning、新增 Vite 标签页与 bundle analyzer 插件文档。1.0.0 之后进入快速迭代期稳定版也继续引入新特性如 1.1.2 的 codeSplitting 对象形态、1.2.6 的属性名混淆这说明1.0只是 API 承诺的起点而非功能冻结。四、主题一代码分割与 chunk 优化器的持续演进code-splitting是 CHANGELOG 中出现频率最高的主题之一几乎每个版本都有相关条目。核心脉络包括动态入口与共享依赖内联1.2.2 支持inlining of shared deps in dynamic entries1.1.2 起manualCodeSplitting合并进codeSplitting对象形态options: merge manualCodeSplitting into codeSplitting object form同时 1.2.6 对codeSplitting分组回调的test/name调用做批量合并以降低开销。执行顺序strict execution order语义1.2.1 的wrap strict execution order modules on demand与 1.2.0 的多个 strict-order 回归测试说明 Rolldown 在保证 CJS/ESM 混编场景下初始化顺序正确性上投入巨大1.0.0 还实现了dynamic dominator merge logic动态支配点合并来优化 chunk 结构。facade 消除与运行时 helper 去重多条条目涉及 facade 的创建/消除边界avoid creating call-site-triggered entry facades、keep entry facade when a shared chunk holds another entrys module以及运行时 helper 的去重与归位always split runtime module first。这些行为在源码中的落点主要是 crates/rolldown/src/stages/scan/link/generate 多阶段流水线共 39 个 Rust 文件以及 crates/rolldown/src/chunk_graph.rs设计依据可查阅 internal-docs/code-splitting/ 与 internal-docs/manual-code-splitting/。五、主题二dev 引擎、HMR 与懒编译1.2.x 的主战场1.2.0 至 1.2.8 的重心明显转向开发体验1.2.0实现 client-side HMRdev: client-side HMR、per-client ship map 以控制 HMR patch 大小、import.meta[url]重写并新增FILE_NOT_FOUND错误类型。1.2.1新增hotUpdate钩子dev: support hotUpdate hook、resolveFileUrl插件钩子与import.meta.ROLLDOWN_FILE_URL_*支持新增disableWatcher暴露MagicString 增加storeName支持HMR 跳过输出未变化的模块更新。1.2.2~1.2.8持续修复 HMR 边界stale dynamic entry 引用清理、增量扫描后的缓存合并、同秒重写检测等1.2.8 新增hotUpdatedev 选项用于门控该钩子。这些能力的实现主体在 crates/rolldown_dev/dev 引擎含 dev_engine.rs、bundle_coordinator.rs与 crates/rolldown_plugin_hmr/、crates/rolldown_plugin_lazy_compilation/设计文档见 internal-docs/dev-engine/、internal-docs/lazy-compilation/。注意懒编译的?rolldown-lazy代理模块在 1.2.1 起被排除在用户插件钩子之外这是插件作者需要知道的约定。六、主题三插件系统演进插件时序统计plugin timings1.2.2 起为选项上配置的用户回调计时time the user callbacks configured on the options1.2.1 把 output-option 回调纳入[PLUGIN_TIMINGS]输出且measure plugin hooks in JavaScript, report them from Rust1.2.3 之前还做过report plugin timings after closeBundle has run的修复。相关实现散布在 crates/rolldown_plugin/含 types/ 的钩子类型定义。钩子能力补全1.2.1 的resolveFileUrl、1.2.4 文档化的 sourcemap 差异说明、1.2.5 的NAMESPACE_CONFLICT警告、1.2.7 将PreRenderedChunk.facadeModuleId改为可空以对齐 Rollup。并行插件1.2.1 补全缺失的 parallel JS plugin hooks并引入 descriptor-based 的getParallelPluginInfo检测机制可结合 packages/rolldown/ 与 examples/par-plugin/含 parallel-babel/parallel-esbuild/noop 三个用例观察用法。resolveId 过滤器收紧1.2.1 明确reject string id filters (must be a RegExp)与 docs/apis/plugin-api/hook-filters.md 中的过滤器约定一致。七、主题四tree-shaking 与副作用/执行顺序语义Rolldown 的 tree-shaking 不只有死代码删除还强调副作用side effects与执行顺序execution order两套独立语义。CHANGELOG 中的证据链1.1.5separate tree-shaking side effects from execution order sensitivity——把两套判定彻底分离detect top-level import-binding reads as execution-order sensitive。1.1.4默认关闭experimental.lazyBarrel1.1.0 曾默认开启并实现多项__NO_SIDE_EFFECTS__语义修复跨 chunk 命名空间调用、__PURE__链等。1.2.1__NO_SIDE_EFFECTS__包装不应移除动态导入manual-pure 链的子副作用保留。1.2.5新增NAMESPACE_CONFLICT警告处理冲突的星号再导出。实现落点主要在 crates/rolldown/src/stages/link_stage/ 与 internal-docs/linking/含 reference-needed-symbols、module-execution-order 等设计文档lazyBarrel 的设计讨论见 docs/in-depth/lazy-barrel-optimization.md。从源码结构可以推断used_symbol_refs的追踪与body demand模块体需求位机制是这套语义的核心数据结构。八、主题五原生 MagicString 与源码映射Rolldown 自研了 Rust 版 MagicStringcrates/string_wizard/与源码映射拼接crates/rolldown_sourcemap/CHANGELOG 记录了密集的正确性打磨1.2.1MagicString 增加storeNameoverwrite/update 时保留原名、拒绝重复消费sendMagicString之后拒绝再使用、拒绝非连续 move、append/prepend 拆分已编辑 chunk 时抛错而非 panic、编辑相互抵消时不报告变更、空源上 index 0 的位置插入、length()返回 UTF-16 code units。1.2.2~1.2.6sourcemap 合成时保留未映射边界与粗粒度映射、SourceJoiner::join分配从 4005 次降到 5 次、避免 collapse/minify 路径的冗余拷贝。1.1.5新增sourcemapFileNames选项sourcemap_filenames相关源码见 crates/rolldown_binding/src/options/ 下对应选项定义。如果你编写使用 MagicString 的插件应重点阅读 crates/string_wizard/src/magic_string/ 与 docs/in-depth/native-magic-string.md了解与 JS 版 MagicString 的行为对齐边界。九、主题六平台与运行时支持WASI / 浏览器1.2.2 起rolldown/browser在真实浏览器页面做打包冒烟测试1.2.4 用完整 Node 测试套件跑 WASI binding1.2.1 验证 wasm32-wasi binding 依赖与rolldown/browser发布前一致。对应包为 packages/browser/Rust 侧为 crates/rolldown_binding/。Android1.2.4 修复 Android arm64 的 illegal instruction 崩溃1.2.5 新增 armv7armv7-linux-androideabi支持。s390x1.2.0 使用 json-escape-simd 3.1.1 修复大端序 JSON 转义。运行时 helper1.0.0 的__toCommonJS互操作、1.0.3 的require()路由到 CJS helper 变体、1.2.1 修复__toESM在导入模块被 tree-shake 时的保留——运行时模板位于 crates/rolldown/src/runtime/含 4 个 JS 文件与 1 个 JSON 清单。十、配置与 CLI 演进速览版本配置/CLI 变化1.1.5新增--configLoadernativeCLI 选项新增sourcemapFileNames1.1.2codeSplitting支持对象形态manualCodeSplitting并入该对象形态transform 从 tsconfig 推断 decorator strictNullChecks暴露 React Compiler 选项1.1.3CLI--help以 camelCase 展示选项1.2.3移除已废弃的watch.notify选项1.2.6transform及 vite 相关插件新增tsconfig选项字符串形式配置的 Rust 侧定义集中在 crates/rolldown_common/src/inner_bundler_options/57 个 Rust 文件与 crates/rolldown_binding/src/options/完整的用户文档见 docs/apis/bundler-api.md 与 docs/apis/cli.md。十一、性能优化方向总结汇总各版本 Performance 章节可归纳出 Rolldown 性能优化的四条主线减少分配避免中间字符串ESM export clause、scope-hoisting 拼接、复用 scratch buffer、CompactStr与SmallVec内联、sourcemap owned merge。缓存tsconfig 解析缓存与 resolver 缓存共享1.2.0、getModuleInfo在代码分割期间缓存1.2.8、编译器缓存module.enableCompileCache()1.2.6。算法/结构treeshake 从相互递归改为 worklist 引擎1.1.5、codeSplitting分组回调批量合并1.2.6、确定性排序去重。二进制体积裁剪未用的 regex unicode 属性表、禁用infer/ICU 等默认特性、减少插件虚函数表体积。基准测试基础设施对应 crates/bench/ 与 packages/bench/1.2.5 起 Node 基准还记录每套件峰值内存说明内存也是被持续监控的指标。十二、升级与阅读实践建议先看 Breaking Changes 与 Revert全文仅 1.0.0-rc.18 标注了BREAKING CHANGESinlineConst 默认 smart被 Revert 的条目如 1.1.4 关闭 lazyBarrel意味着该能力在对应版本并不生效不要据文档旧描述使用。按模块前缀过滤用dev:、code-splitting:、magic-string:等前缀快速聚焦自己关心的领域插件开发者应额外关注rolldown_plugin_vite_*前缀1.1.2 明确这些包同一 minor 内兼容。配合源码阅读每个条目都能在仓库中找到对应实现例如resolveFileUrl钩子在 crates/rolldown_plugin/src/plugin_driver/magic-string行为在 crates/string_wizard/tests/HMR 回归测试在 packages/test-dev-server/tests/。结合测试套件仓库同时维护 esbuild、rollup、test262 三套兼容性测试分别位于 crates/rolldown/tests/esbuild/、crates/rolldown/tests/rollup/、crates/rolldown/tests/test262_failures.jsonCHANGELOG 中mark esbuild/xxx as passed这类条目就是这三套测试推进的实况记录。十三、结语一份高质量的 CHANGELOG 本身就是项目架构与工程文化的缩影。Rolldown 的这份变更记录清晰展示了它以 Rollup 兼容 API 为契约、以 Rust/OXC 为内核、以 dev 体验与代码分割语义为差异化战场的演进路径。对使用者而言它是升级决策的依据对贡献者而言它是进入源码的索引——从任意一条prefix: description条目出发都能在 crates/ 与 internal-docs/ 中找到对应的设计与实现落点这正是本文希望帮你建立的能力。【免费下载链接】rolldownFast Rust bundler for JavaScript/TypeScript with Rollup-compatible API.项目地址: https://gitcode.com/GitHub_Trending/ro/rolldown创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门