rollup changelog
4.50.0
2025-08-31
Features
- Support openharmony-arm64 platform (#6081)
Bug Fixes
- Fix loading of extensionless imports in config files (#6084)
Pull Requests
- #6081: Add support for openharmony-arm64 platform (@hqzing, @lukastaegert)
- #6084: Return null to defer to the default resolution behavior (@TrickyPi)
4.49.0
2025-08-27
Features
- Allow config plugins to resolve imports first before deciding whether to treat them as external (#6038)
Pull Requests
- #6038: feat: Run external check in
cli/run/loadConfigFile.ts
as last in order to allow handling of e.g. workspace package imports in TS monorepos correctly (@stazz, @TrickyPi)
- #6082: Improve build pipeline performance (@lukastaegert)
4.48.1
2025-08-25
Bug Fixes
- Correctly ignore white-space in JSX strings around line-breaks (#6051)
Pull Requests
- #6051: fix: handle whitespace according to JSX common practice (@cyyynthia)
- #6078: build: optimize pipeline take two (@cyyynthia)
4.48.0
2025-08-23
Features
- If configured, also keep unparseable import attributes of external dynamic imports in the output(#6071)
Bug Fixes
- Ensure variables referenced in non-removed import attributes are included (#6071)
Pull Requests
- #6071: Keep attributes for external dynamic imports (@TrickyPi)
- #6079: fix(deps): update swc monorepo (major) (@renovate[bot])
- #6080: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
4.47.1
2025-08-21
Bug Fixes
- Revert build process changes to investigate issues (#6077)
Pull Requests
- #6077: Revert "build: aggressively optimize wasm build, improve pipeline (#6053)" (@lukastaegert)
4.47.0
2025-08-21
Features
- Aggressively reduce WASM build size (#6053)
Bug Fixes
- Fix illegal instruction error on Android ARM platforms (#6072)
- Allow to pass explicit
undefined
for optional fields in Rollup types (#6061)
Pull Requests
- #6053: build: aggressively optimize wasm build, improve pipeline (@cyyynthia)
- #6061: fix(types): add support for exactOptionalPropertyTypes (@remcohaszing, @lukastaegert)
- #6072: build(rust): mimalloc-safe/no_opt_arch on aarch64 (@cyyynthia)
4.46.4
2025-08-20
Bug Fixes
- Do not omit synthetic namespaces when only accessed via
in
operator (#6052)
Pull Requests
- #6052: fix: don't optimize
in
with syntheticNamedExports
(@hi-ogawa)
- #6074: Update transitive dependency to fix audit (@lukastaegert)
4.46.3
2025-08-18
Bug Fixes
- Resolve illegal instruction error on arm64 architectures (#6055)
- Resolve sourcemap generation performance regression (#6057)
Pull Requests
- #6043: Avoid
generated by
comment diff on Windows (@sapphi-red)
- #6048: chore(deps): update dependency cross-env to v10 (@renovate[bot], @lukastaegert)
- #6049: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #6055: Fix illegal instruction error on arm64 by enabling
no_opt_arch
feature for mimalloc-safe (@sapphi-red)
- #6057: fix: tweak the fallback logic for tracing segment (@TrickyPi, @lukastaegert)
- #6062: docs: update Rust toolchain instructions (@situ2001, @lukastaegert)
- #6063: fix(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #6067: chore(deps): update actions/checkout action to v5 (@renovate[bot], @lukastaegert)
- #6068: chore(deps): update actions/download-artifact action to v5 (@renovate[bot])
- #6069: fix(deps): update rust crate swc_compiler_base to v31 (@renovate[bot], @lukastaegert)
4.46.2
2025-07-29
Bug Fixes
- Fix in-operator handling for external namespace and when the left side cannot be analyzed (#6041)
Pull Requests
- #6041: Correct the logic of include in BinaryExpression and don't optimize external references away (@TrickyPi, @cyyynthia, @lukastaegert)
4.46.1
2025-07-28
Bug Fixes
- Do not fail when using the
in
operator on external namespaces (#6036)
Pull Requests
- #6036: disables optimization for external namespace when using the in operator (@TrickyPi)
4.46.0
2025-07-27
Features
- Optimize
in
checks on namespaces to keep them treeshake-able (#6029)
Pull Requests
- #5991: feat: update linux-loongarch64-gnu (@wojiushixiaobai, @lukastaegert)
- #6029: feat: optimize
in
checks on namespaces to keep them treeshake-able (@cyyynthia, @lukastaegert)
- #6033: fix(deps): update swc monorepo (major) (@renovate[bot], @lukastaegert)
4.45.3
2025-07-26
Bug Fixes
- Do not fail build if a const is reassigned but warn instead (#6020)
- Fail with a helpful error message if an exported binding is not defined (#6023)
Pull Requests
- #6014: chore(deps): update dependency @vue/language-server to v3 (@renovate[bot])
- #6015: chore(deps): update dependency vue-tsc to v3 (@renovate[bot], @lukastaegert)
- #6016: fix(deps): update swc monorepo (major) (@renovate[bot], @lukastaegert)
- #6017: fix(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #6020: Make const reassignments only a warning (@lukastaegert)
- #6023: Throw descriptive error message for used export is not defined (@TrickyPi)
- #6027: feat: upgrade to NAPI-RS 3 stable (@Brooooooklyn)
- #6028: Update eslint-plugin-unicorn to resolve vulnerability (@lukastaegert)
- #6034: fix(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
4.45.1
2025-07-15
Bug Fixes
- Resolve crash when using certain conditional expressions (#6009)
Pull Requests
- #6009: Add hasDeoptimizedCache flag for ConditionalExpression (@TrickyPi)
4.45.0
2025-07-12
Features
- Improve tree-shaking when both branches of a conditional expression return the same boolean value (#6000)
- In environments that support both CJS and ESM, prefer the ESM build of Rollup (#6005)
Bug Fixes
- Ensure static blocks do not prevent tree-shaking if they access
this
(#6001)
Pull Requests
- #6000: feat: improve get literal value for conditional expression (@ahabhgk, @lukastaegert)
- #6001: Correct the parent scope for static blocks (@TrickyPi, @lukastaegert)
- #6005: fix: export field order prefer esm (@DylanPiercey)
4.44.2
2025-07-04
Bug Fixes
- Correctly handle
@__PURE__
annotations after new
keyword (#5998)
- Generate correct source mapping for closing braces of block statements (#5999)
Pull Requests
- #5998: Support
@__PURE__
when nested after new in constructor invocations (@TrickyPi)
- #5999: Add location info for closing brace of block statement (@TrickyPi)
- #6002: chore(deps): update dependency vite to v7 (@renovate[bot], @lukastaegert)
- #6004: fix(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
4.44.1
2025-06-26
Bug Fixes
- Reinstate maxParallelFileOps limit of 1000 to resolve the issue for some (#5992)
Pull Requests
- #5988: fix(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #5992: Set maxParallelFileOps to 1000 (@lukastaegert)
4.44.0
2025-06-19
Features
- Remove limit on
maxParallelFileOps
as this could break watch mode with the commonjs plugin (#5986)
Bug Fixes
- Provide better source mappings when coarse intermediate maps are used (#5985)
Pull Requests
- #5984: fix(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #5985: Improve approximation of coarse sourcemap segments (@TrickyPi)
- #5986: Remove limit on max parallel file ops (@lukastaegert)
4.43.0
2025-06-11
Features
- Provide new
fs
option and this.fs
API to replace file system (#5944)
Pull Requests
- #5944: feat(options): Add an option for overriding the file system module in the JS API (@EggDice, @lukastaegert)
4.42.0
2025-06-06
Features
- Add option to allow the input to be located in the output in watch mode (#5966)
Pull Requests
- #5966: feat: watch mode add
allowInputInsideOutputPath
option (@btea, @lukastaegert)
4.41.2
2025-06-06
Bug Fixes
- Detect named export usages in dynamic imports with
then
and non-arrow function expressions (#5977)
- Do not replace usages of constant variables with their values for readability (#5968)
Pull Requests
- #5968: fix: preserve constant identifiers in unary expressions instead of magic numbers (@OmkarJ13, @lukastaegert)
- #5969: chore(deps): update dependency yargs-parser to v22 (@renovate[bot], @lukastaegert)
- #5970: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5971: chore(deps): lock file maintenance (@renovate[bot])
- #5976: Update README.md (@ftlno, @lukastaegert)
- #5977: fix: consider function expression in thenable when tree-shaking dynamic imports (@TrickyPi)
- #5981: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5982: Debug/fix watch pipeline (@lukastaegert)
4.41.1
2025-05-24
Bug Fixes
- If a plugin calls
this.resolve
with skipSelf: true
, subsequent calls when handling this by the same plugin with same parameters will return null
to avoid infinite recursions (#5945)
Pull Requests
- #5945: Avoid recursively calling a plugin's resolveId hook with same id and importer (@younggglcy, @lukastaegert)
- #5963: fix(deps): update swc monorepo (major) (@renovate[bot])
- #5964: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
4.41.0
2025-05-18
Features
- Detect named exports in more dynamic import scenarios (#5954)
Pull Requests
- #5949: ci: use node 24 (@btea, @lukastaegert)
- #5951: chore(deps): update dependency pretty-bytes to v7 (@renovate[bot])
- #5952: fix(deps): update swc monorepo (major) (@renovate[bot], @lukastaegert)
- #5953: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5954: enhance tree-shaking for dynamic imports (@TrickyPi, @renovate[bot], @lukastaegert)
- #5957: chore(deps): update dependency lint-staged to v16 (@renovate[bot], @lukastaegert)
- #5958: fix(deps): update rust crate swc_compiler_base to v20 (@renovate[bot], @lukastaegert)
- #5959: fix(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #5960: Use spawn to run CLI tests (@lukastaegert)
4.40.2
2025-05-06
Bug Fixes
- Create correct IIFE/AMD/UMD bundles when using a mutable default export (#5934)
- Fix execution order when using top-level await for dynamic imports with inlineDynamicImports (#5937)
- Throw when the output is watched in watch mode (#5939)
Pull Requests
- #5934: fix(exports): avoid "exports is not defined"
ReferenceError
(@dasa)
- #5937: consider TLA imports have higher execution priority (@TrickyPi)
- #5939: fix: watch mode input should not be an output subpath (@btea)
- #5940: chore(deps): update dependency vite to v6.3.4 [security] (@renovate[bot])
- #5941: chore(deps): update dependency eslint-plugin-unicorn to v59 (@renovate[bot])
- #5942: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5943: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
4.40.1
2025-04-28
Bug Fixes
- Limit hash size for asset file names to the supported 21 (#5921)
- Do not inline user-defined entry chunks or chunks with explicit file name (#5923)
- Avoid top-level-await cycles when non-entry chunks use top-level await (#5930)
- Expose package.json via exports (#5931)
Pull Requests
- #5921: fix(assetFileNames): reduce max hash size to 21 (@shulaoda)
- #5923: fix: generate the separate chunk for the entry module with explicated chunk filename or name (@TrickyPi)
- #5926: fix(deps): update rust crate swc_compiler_base to v18 (@renovate[bot])
- #5927: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5928: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5930: Avoid chunks TLA dynamic import circular when TLA dynamic import used in non-entry modules (@TrickyPi)
- #5931: chore: add new
./package.json
entry (@JounQin, @lukastaegert)
- #5936: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
4.40.0
2025-04-12
Features
- Only show
eval
warnings on first render and only when the call is not tree-shaken (#5892)
- Tree-shake non-included dynamic import members when the handler just maps to one named export (#5898)
Bug Fixes
- Consider dynamic imports nested within top-level-awaited dynamic import expressions to be awaited as well (#5900)
- Fix namespace rendering when tree-shaking is disabled (#5908)
- When using multiple transform hook filters, all of them need to be satisfied together (#5909)
Pull Requests
- #5892: Warn when eval or namespace calls are rendered, not when they are parsed (@SunsetFi, @lukastaegert)
- #5898: feat: treeshake dynamic import chained member expression (@privatenumber, @lukastaegert)
- #5900: consider the dynamic import within a TLA call expression as a TLA import (@TrickyPi)
- #5904: fix(deps): update swc monorepo (major) (@renovate[bot])
- #5905: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5908: Fix
treeshake: false
breaking destructured namespace imports (@Skn0tt)
- #5909: Correct the behavior when multiple transform filter options are specified (@sapphi-red)
- #5915: chore(deps): update dependency @types/picomatch to v4 (@renovate[bot])
- #5916: fix(deps): update rust crate swc_compiler_base to v17 (@renovate[bot])
- #5917: chore(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #5918: chore(deps): update dependency vite to v6.2.6 [security] (@renovate[bot], @lukastaegert)
4.39.0
2025-04-02
Features
- Do not create separate facade chunks if a chunk would contain several entry modules that allow export extension if there are no export name conflicts (#5891)
Bug Fixes
- Mark the
id
property as optional in the filter for the resolveId
hook (#5896)
Pull Requests
- #5891: chunk: merge allow-extension modules (@wmertens, @lukastaegert)
- #5893: chore(deps): update dependency vite to v6.2.4 [security] (@renovate[bot])
- #5896: fix: resolveId id filter is optional (@sapphi-red)
4.38.0
2025-03-29
Features
- Support
.filter
option in resolveId
, load
and transform
hooks (#5882)
Pull Requests
- #5882: Add support for hook filters (@sapphi-red)
- #5894: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5895: chore(deps): update dependency eslint-plugin-unicorn to v58 (@renovate[bot])
4.37.0
2025-03-23
Features
- Support Musl Linux on Riscv64 architectures (#5726)
- Handles class decorators placed before the
export
keyword (#5871)
Bug Fixes
- Log Rust panic messages to the console when using the WASM build (#5875)
Pull Requests
- #5726: Add support for linux riscv64 musl (@fossdd, @leso-kn)
- #5871: feat: support decorators before or after export (@TrickyPi)
- #5875: capture Rust panic messages and output them to the console. (@luyahan, @lukastaegert)
- #5883: Pin digest of 3rd party actions (@re-taro)
- #5885: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
4.36.0
2025-03-17
Features
- Extend
renderDynamicImport
hook to provide information about static dependencies of the imported module (#5870)
- Export several additional types used by Vite (#5879)
Bug Fixes
- Do not merge chunks if that would create a top-level await cycle between chunks (#5843)
Pull Requests
- #5843: avoiding top level await circular (@TrickyPi, @lukastaegert)
- #5870: draft for extended renderDynamicImport hook (@iczero, @lukastaegert)
- #5876: Update axios overrides to 1.8.2 (@vadym-khodak)
- #5877: chore(deps): update dependency eslint-plugin-vue to v10 (@renovate[bot])
- #5878: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5879: fix: export types (@sxzz)
4.35.0
2025-03-08
Features
- Pass build errors to the closeBundle hook (#5867)
Pull Requests
- #5852: chore(deps): update dependency eslint-plugin-unicorn to v57 (@renovate[bot], @lukastaegert)
- #5862: fix(deps): update swc monorepo (major) (@renovate[bot], @lukastaegert)
- #5867: feat(5858): make closeBundle hook receive the last error (@GauBen)
- #5872: chore(deps): update dependency builtin-modules to v5 (@renovate[bot])
- #5873: chore(deps): update uraimo/run-on-arch-action action to v3 (@renovate[bot])
- #5874: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
4.34.9
2025-03-01
Bug Fixes
- Support JSX modes in WASM (#5866)
- Allow the CustomPluginOptions to be extended (#5850)
Pull Requests
- #5850: Revert CustomPluginOptions to be an interface (@sapphi-red, @lukastaegert)
- #5851: Javascript to JavaScript (@dasa, @lukastaegert)
- #5853: chore(deps): update dependency pinia to v3 (@renovate[bot])
- #5854: fix(deps): update swc monorepo (major) (@renovate[bot])
- #5855: fix(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #5860: chore(deps): update dependency @shikijs/vitepress-twoslash to v3 (@renovate[bot])
- #5861: chore(deps): update dependency globals to v16 (@renovate[bot])
- #5863: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5864: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5866: Add jsx parameter to parseAsync in native.wasm.js (@TrickyPi)
4.34.8
2025-02-17
Bug Fixes
- Do not make assumptions about the value of nested paths in logical expressions if the expression cannot be simplified (#5846)
Pull Requests
- #5846: return UnknownValue if the usedbranch is unkown and the path is not empty (@TrickyPi)
4.34.7
2025-02-14
Bug Fixes
- Ensure that calls to parameters are included correctly when using try-catch deoptimization (#5842)
Pull Requests
- #5840: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5842: Fix prop inclusion with try-catch-deoptimization (@lukastaegert)
4.34.6
2025-02-07
Bug Fixes
- Retain "void 0" in the output for smaller output and fewer surprises (#5838)
Pull Requests
- #5835: fix(deps): update swc monorepo (major) (@renovate[bot], @lukastaegert)
- #5838: replace undefined with void 0 for operator void (@TrickyPi)
4.34.5
2025-02-07
Bug Fixes
- Ensure namespace reexports always include all properties of all exports (#5837)
Pull Requests
- #5836: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5837: Include all paths of reexports if namespace is used (@lukastaegert)
4.34.4
2025-02-05
Bug Fixes
- Do not tree-shake properties if a rest element is used in destructuring (#5833)
Pull Requests
- #5833: include all properties if a rest element is destructed (@TrickyPi)
4.34.3
2025-02-05
Bug Fixes
- Ensure properties of "this" are included in getters (#5831)
Pull Requests
- #5831: include the properties that accessed by this (@TrickyPi)
4.34.2
2025-02-04
Bug Fixes
- Fix an issue where not all usages of a function were properly detected (#5827)
Pull Requests
- #5827: Ensure that functions provided to a constructor are properly deoptimized (@lukastaegert)
4.34.1
2025-02-03
Bug Fixes
- Ensure throwing objects includes the entire object (#5825)
Pull Requests
- #5825: Ensure that all properties of throw statements are included (@lukastaegert)
4.34.0
2025-02-01
Features
- Tree-shake unused properties in object literals (re-implements #5420) (#5737)
Pull Requests
- #5737: Reapply object tree-shaking (@lukastaegert, @TrickyPi)
4.33.0
2025-02-01
Features
- Correctly detect literal value of more negated expressions (#5812)
Bug Fixes
- Use the correct with/assert attribute key in dynamic imports (#5818)
- Fix an issue where logical expressions were considered to have the wrong value (#5819)
Pull Requests
- #5812: feat: optimize the literal value of unary expressions (@TrickyPi)
- #5816: fix(deps): update swc monorepo (major) (@renovate[bot], @lukastaegert)
- #5817: fix(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #5818: support for changing the attributes key for dynamic imports (@TrickyPi)
- #5819: Return UnknownValue if getLiteralValueAtPath is called recursively within logical expressions (@TrickyPi)
- #5820: return null (@kingma-sbw)
4.32.1
2025-01-28
Bug Fixes
- Fix possible crash when optimizing logical expressions (#5804)
Pull Requests
- #5804: fix: set hasDeoptimizedCache to true as early as possible (@TrickyPi)
- #5813: Fix typo (@kantuni)
4.32.0
2025-01-24
Features
- Add watch.onInvalidate option to trigger actions immediately when a file is changed (#5799)
Bug Fixes
- Fix incorrect urls in CLI warnings (#5809)
Pull Requests
- #5799: Feature/watch on invalidate (@drebrez, @lukastaegert)
- #5808: chore(deps): update dependency vite to v6.0.9 [security] (@renovate[bot])
- #5809: fix: avoid duplicate rollupjs.org prefix (@GauBen, @lukastaegert)
- #5810: chore(deps): update dependency @shikijs/vitepress-twoslash to v2 (@renovate[bot])
- #5811: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
4.31.0
2025-01-19
Features
- Do not immediately quit when trying to use watch mode from within non-TTY environments (#5803)
Bug Fixes
- Handle files with more than one UTF-8 BOM header (#5806)
Pull Requests
- #5792: fix(deps): update rust crate swc_compiler_base to v8 (@renovate[bot])
- #5793: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5794: chore(deps): lock file maintenance (@renovate[bot])
- #5801: chore(deps): update dependency eslint-config-prettier to v10 (@renovate[bot])
- #5802: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5803: Support watch mode in yarn, gradle and containers (@lukastaegert)
- #5806: fix: strip all BOMs (@TrickyPi)
4.30.1
2025-01-07
Bug Fixes
- Prevent invalid code when simplifying unary expressions in switch cases (#5786)
Pull Requests
- #5786: fix: consider that literals cannot following switch case. (@TrickyPi)
4.30.0
2025-01-06
Features
- Inline values of resolvable unary expressions for improved tree-shaking (#5775)
Pull Requests
- #5775: feat: enhance the treehshaking for unary expression (@TrickyPi)
- #5783: Improve CI caching for node_modules (@lukastaegert)
4.29.2
2025-01-05
Bug Fixes
- Keep import attributes when using dynamic ESM
import()
expressions from CommonJS (#5781)
Pull Requests
- #5772: Improve caching on CI (@lukastaegert)
- #5773: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5780: feat: use picocolors instead of colorette (@re-taro)
- #5781: fix: keep import attributes for cjs format (@TrickyPi)
4.29.1
2024-12-21
Bug Fixes
- Fix crash from deoptimized logical expressions (#5771)
Pull Requests
- #5769: Remove unnecessary lifetimes (@lukastaegert)
- #5771: fix: do not optimize the literal value if the cache is deoptimized (@TrickyPi)
4.29.0
2024-12-20
Features
- Treat objects as truthy and always check second argument to better simplify logical expressions (#5763)
Pull Requests
- #5759: docs: add utf-8 encoding to JSON file reading (@chouchouji)
- #5760: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5763: fix: introduce UnknownFalsyValue for enhancing if statement tree-shaking (@TrickyPi)
- #5766: chore(deps): update dependency @rollup/plugin-node-resolve to v16 (@renovate[bot])
- #5767: fix(deps): lock file maintenance minor/patch updates (@renovate[bot])
4.28.1
2024-12-06
Bug Fixes
- Support running Rollup natively on LoongArch (#5749)
- Add optional
debugId
to SourceMap
types (#5751)
Pull Requests
- #5749: feat: add support for LoongArch (@darkyzhou)
- #5751: feat: Add
debugId
to SourceMap
types (@timfish, @lukastaegert)
- #5752: chore(deps): update dependency mocha to v11 (@renovate[bot])
- #5753: chore(deps): update dependency vite to v6 (@renovate[bot])
- #5754: fix(deps): update swc monorepo (major) (@renovate[bot])
- #5755: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5756: Test if saving the Cargo cache can speed up FreeBSD (@lukastaegert)
4.28.0
2024-11-30
Features
- Allow to specify how to handle import attributes when transpiling Rollup config files (#5743)
Pull Requests
- #5743: fix: supports modify the import attributes key in the config file (@TrickyPi, @lukastaegert)
- #5747: chore(deps): update codecov/codecov-action action to v5 (@renovate[bot])
- #5748: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
4.27.4
2024-11-23
Bug Fixes
- Update bundled magic-string to support sourcemap debug ids (#5740)
Pull Requests
- #5740: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
4.27.3
2024-11-18
Bug Fixes
- Revert object property tree-shaking for now (#5736)
Pull Requests
- #5736: Revert object tree-shaking until some issues have been resolved (@lukastaegert)
4.27.2
2024-11-15
Bug Fixes
- Ensure unused variables in patterns are always deconflicted if rendered (#5728)
Pull Requests
- #5728: Fix more variable deconflicting issues (@lukastaegert)
4.27.1
2024-11-15
Bug Fixes
- Fix some situations where parameter declarations could put Rollup into an infinite loop (#5727)
Pull Requests
- #5727: Debug out-of-memory issues with Rollup v4.27.0 (@lukastaegert)
4.27.0
2024-11-15
Features
- Tree-shake unused properties in object literals (#5420)
Bug Fixes
- Change hash length limit to 21 to avoid inconsistent hash length (#5423)
Pull Requests
- #5420: feat: implement object tree-shaking (@TrickyPi, @lukastaegert)
- #5723: Reduce max hash size to 21 (@lukastaegert)
- #5724: fix(deps): update swc monorepo (major) (@renovate[bot])
- #5725: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
4.26.0
2024-11-13
Features
- Allow to avoid
await bundle.close()
via explicit resource management in TypeScript (#5721)
Pull Requests
- #5721: feat: support
using
for RollupBuild
(@shulaoda)
4.25.0
2024-11-09
Features
- Add
output.sourcemapDebugIds
option to add matching debug ids to sourcemaps and code for tools like Sentry or Rollbar (#5712)
Bug Fixes
- Make it easier to manually reproduce base16 hashes by using a more standard base16 conversion algorithm (#5719)
Pull Requests
- #5712: feat: Add support for injecting Debug IDs (@timfish)
- #5717: fix(deps): update swc monorepo (major) (@renovate[bot])
- #5718: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5719: Use a less surprising base-16 encoding (@lukastaegert)
4.24.4
2024-11-04
Bug Fixes
- Ensure mutations by handlers in Proxy definitions are always respected when tree-shaking (#5713)
Pull Requests
- #5708: Update configuration-options document (@sacru2red, @lukastaegert)
- #5711: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5713: fix: Deoptimize the proxied object if its property is reassigned in the handler functions (@TrickyPi)
4.24.3
2024-10-29
Bug Fixes
- Slightly reduce memory consumption by specifying fixed array sizes where possible (#5703)
Pull Requests
- #5703: perf: use pre-allocated arrays for known result sizes (@GalacticHypernova)
4.24.2
2024-10-27
Bug Fixes
- Add missing build dependency (#5705)
Pull Requests
- #5705: Fix "Couldn't find package" error when installing rollup using yarn (@tagattie)
4.24.1
2024-10-27
Bug Fixes
- Support running Rollup natively on FreeBSD (#5698)
Pull Requests
- #5689: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5690: chore(deps): update dependency @inquirer/prompts to v7 (@renovate[bot])
- #5691: chore(deps): update dependency eslint-plugin-unicorn to v56 (@renovate[bot])
- #5692: chore(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #5695: fix(deps): update swc monorepo (major) (@renovate[bot])
- #5696: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5698: Add support for FreeBSD (x64 and arm64) (@tagattie, @lukastaegert)
4.24.0
2024-10-02
Features
- Support preserving and transpiling JSX syntax (#5668)
Pull Requests
- #5668: Introduce JSX support (@lukastaegert, @Martin-Idel, @felixhuttmann, @AlexDroll, @tiptr)
4.23.0
2024-10-01
Features
- Collect all emitted names and originalFileNames for assets (#5686)
Pull Requests
- #5686: Add names and originalFileNames to assets (@lukastaegert)
4.22.5
2024-09-27
Bug Fixes
- Allow parsing of certain unicode characters again (#5674)
Pull Requests
- #5674: Fix panic with unicode characters (@sapphi-red, @lukastaegert)
- #5675: chore(deps): update dependency rollup to v4.22.4 [security] (@renovate[bot])
- #5680: chore(deps): update dependency @rollup/plugin-commonjs to v28 (@renovate[bot], @lukastaegert)
- #5681: chore(deps): update dependency @rollup/plugin-replace to v6 (@renovate[bot])
- #5682: chore(deps): update dependency @rollup/plugin-typescript to v12 (@renovate[bot])
- #5684: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
2.79.2
2024-09-26
Bug Fixes
- Fix a vulnerability in generated code that affects IIFE, UMD and CJS bundles when run in a browser context (#5671)
Pull Requests
- #5671: Fix DOM Clobbering CVE (@lukastaegert)
3.29.5
2024-09-21
Bug Fixes
- Fix a vulnerability in generated code that affects IIFE, UMD and CJS bundles when run in a browser context (#5671)
Pull Requests
- #5671: Fix DOM Clobbering CVE (@lukastaegert)
4.22.4
2024-09-21
Bug Fixes
- Fix a vulnerability in generated code that affects IIFE, UMD and CJS bundles when run in a browser context (#5671)
Pull Requests
- #5670: refactor: Use object.prototype to check for reserved properties (@YuHyeonWook)
- #5671: Fix DOM Clobbering CVE (@lukastaegert)
4.22.3
2024-09-21
Bug Fixes
- Ensure that mutations in modules without side effects are observed while properly handling transitive dependencies (#5669)
Pull Requests
- #5669: Ensure impure dependencies of pure modules are added (@lukastaegert)
4.22.2
2024-09-20
Bug Fixes
- Revert fix for side effect free modules until other issues are investigated (#5667)
Pull Requests
- #5667: Partially revert #5658 and re-apply #5644 (@lukastaegert)
4.22.1
2024-09-20
Bug Fixes
- Revert #5644 "stable chunk hashes" while issues are being investigated
Pull Requests
- #5663: chore(deps): update dependency inquirer to v11 (@renovate[bot], @lukastaegert)
- #5664: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5665: fix: type in CI file (@YuHyeonWook)
- #5666: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
4.22.0
2024-09-19
Features
- Add additional known global values to avoid access side effects (#5651)
Bug Fixes
- Ensure deterministic chunk hash generation despite async renderChunk hook (#5644)
- Improve side effect detection when using "smallest" treeshaking preset when imports are optimized away (#5658)
Pull Requests
- #5644: fix: apply final hashes deterministically with stable placeholders set (@mattkubej, @lukastaegert)
- #5646: chore(deps): update dependency @mermaid-js/mermaid-cli to v11 (@renovate[bot])
- #5647: chore(deps): update dependency concurrently to v9 (@renovate[bot])
- #5648: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5651: feat: add
AggregateError
, FinalizationRegistry
, WeakRef
to knownGlobals (@re-taro)
- #5653: Fix example selection in REPL (@lukastaegert)
- #5657: chore(deps): update dependency vite to v5.4.6 [security] (@renovate[bot])
- #5658: Detect variable reassignments in modules without side effects (@lukastaegert)
4.21.3
2024-09-12
Bug Fixes
- Always respect side effects in left-hand side of optional chain (#5642)
- Update stack trace for augmented errors to not hide relevant information (#5640)
Pull Requests
- #5636: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5637: chore(deps): lock file maintenance (@renovate[bot])
- #5640: fix: keep the message of stack up-to-date (@TrickyPi)
- #5642: fix: include left-side effect of optional chaining in the end of hasEffectsAsChainElement (@TrickyPi)
4.21.2
2024-08-30
Bug Fixes
- Handle IIFE/UMD namespace definitions conflicting with a builtin property (#5605)
Pull Requests
- #5605: fix: Wrong namespace property definition (@thirumurugan-git, @lukastaegert)
- #5630: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5631: chore(deps): lock file maintenance (@renovate[bot])
- #5632: chore(deps): lock file maintenance (@renovate[bot])
4.21.1
2024-08-26
Bug Fixes
- Ensure
closeWatcher
hook is called when watch mode is aborted via Ctrl+C (#5618)
- Do not produce invalid code for
import.meta.url
in compact mode (#5624)
- Do not throw when generating chunk names when preserving modules in Windows (#5625)
Pull Requests
- #5591: chore(deps): update dependency @types/eslint to v9 (@renovate[bot], @lukastaegert)
- #5618: preload the WASM file even though the version is undefined. (@TrickyPi)
- #5619: Call and await closeWatcher hooks on exit signals (@lukastaegert)
- #5622: chore(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #5624: fix: add space for DOCUMENT_CURRENT_SCRIPT template (@TrickyPi)
- #5625: fix: get the right chunk name for preserve modules in Windows (@TrickyPi, @lukastaegert)
4.21.0
2024-08-18
Features
- Add option to configure directory for virtual modules when preserving modules (#5602)
Pull Requests
- #5602: feat: introduce the virtualDirname option to customize the virtual directory name (@TrickyPi)
- #5607: chore(deps): update typescript-eslint monorepo to v8 (major) (@renovate[bot], @lukastaegert)
- #5608: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5611: chore: fix the
noConflict
option in REPL. (@7086cmd)
- #5613: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5614: chore(deps): lock file maintenance (@renovate[bot])
4.20.0
2024-08-03
Features
- Allow plugins to specify the original file name when emitting assets (#5596)
Pull Requests
- #5596: Add originalFIleName property to emitted assets (@lukastaegert)
- #5599: chore(deps): update dependency eslint-plugin-unicorn to v55 (@renovate[bot], @lukastaegert)
- #5600: chore(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
4.19.2
2024-08-01
Bug Fixes
- Avoid "cannot get value of null" error when using optional chaining with namespaces (#5597)
Pull Requests
- #5597: Fix retrieval of literal values for chained namespaces (@lukastaegert)
4.19.1
2024-07-27
Bug Fixes
- Do not remove parantheses when tree-shaking logical expressions (#5584)
- Do not ignore side effects in calls left of an optional chaining operator (#5589)
Pull Requests
- #5584: fix: find whitespace from operator position to start (@TrickyPi)
- #5587: docs: improve command by code-group (@thinkasany, @lukastaegert)
- #5589: Fix side effect detection in optional chains (@lukastaegert)
- #5592: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5593: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5594: chore(deps): lock file maintenance (@renovate[bot])
- #5595: chore(deps): lock file maintenance (@renovate[bot])
4.19.0
2024-07-20
Features
- Implement support for decorators (#5562)
Bug Fixes
- Improve soucemap generation when tree-shaking logical expressions (#5581)
Pull Requests
- #5562: feat: implementing decorator support (@TrickyPi, @lukastaegert)
- #5570: refactor(finalisers): condition branch (@Simon-He95, @zhangmo8)
- #5572: Improve chunk and asset type information in docs (@lukastaegert)
- #5573: Switch to audit resolver to ignore requirejs vulnerability (@lukastaegert)
- #5575: chore(deps): update dependency inquirer to v10 (@renovate[bot], @lukastaegert)
- #5576: chore(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #5580: chore(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #5581: When tree-shaking logical expression, make sure to remove all trailing white-space. (@lukastaegert)
4.18.1
2024-07-08
Bug Fixes
- Prevent "%" in generated file names to ensure imports resolve (#5535)
Pull Requests
- #5524: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5525: chore(deps): lock file maintenance (@renovate[bot])
- #5526: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5527: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5529: Use Spanned trait to simplify logic (@lukastaegert)
- #5530: Fix typos in ARCHITECTURE.md (@younggglcy)
- #5532: Use Rust macros for converters where possible (@lukastaegert)
- #5535: fix: escape
%
if URI malformed (@baseballyama, @lukastaegert)
- #5536: chore(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #5541: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5542: chore(deps): lock file maintenance (@renovate[bot])
- #5543: Watch rust files and rebuild during dev (@lukastaegert)
- #5544: Refactor AST converters (@lukastaegert)
- #5545: chore(deps): update dependency @rollup/plugin-commonjs to v26 (@renovate[bot])
- #5546: chore(deps): update dependency nyc to v17 (@renovate[bot])
- #5547: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5548: chore(deps): lock file maintenance (@renovate[bot])
- #5549: chore(deps): lock file maintenance (@renovate[bot])
- #5550: chore(deps): update dependency eslint-plugin-unicorn to v54 (@renovate[bot], @lukastaegert)
- #5551: chore(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #5555: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5556: chore(deps): lock file maintenance (@renovate[bot])
- #5558: Consider that the body of ClassBody might be of type StaticBlock (@TrickyPi)
- #5565: refactor(ast): conditional branch (@Simon-He95)
- #5566: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5567: chore(deps): lock file maintenance (@renovate[bot])
4.18.0
2024-05-22
Features
- Resolve import.meta.filename and .dirname in transpiled plugins (#5520)
Pull Requests
- #5504: Auto generate node index (@lukastaegert)
- #5507: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5508: chore(deps): lock file maintenance (@renovate[bot])
- #5510: Split up converter.rs into AST nodes (@lukastaegert)
- #5512: chore(deps): update dependency builtin-modules to v4 (@renovate[bot], @lukastaegert)
- #5514: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5518: chore(deps): update dependency eslint-plugin-unicorn to v53 (@renovate[bot], @lukastaegert)
- #5519: chore(deps): lock file maintenance minor/patch updates (@renovate[bot], @lukastaegert)
- #5520: Resolve import.meta.{filename,dirname} in files imported from config (@BPScott)
- #5521: docs: correct base32 to base36 in documentation (@highcastlee)
4.17.2
2024-04-30
Bug Fixes
- Fix tree-shaking problems when using spread arguments (#5503)
Pull Requests
- #5501: Slightly improve perf report (@lukastaegert)
- #5503: fix: rest element should deoptimize parameter values (@liuly0322)
4.17.1
2024-04-29
Bug Fixes
- Prevent infinite recursions for certain constructor invocations (#5500)
Pull Requests
- #5500: fix: parameter variable infinite recursion error (@liuly0322)
4.17.0
2024-04-27
Features
- Track function call arguments to optimize functions only called once or with the same literal values (re-release from 4.16.0) (#5483)
Bug Fixes
- Reduce browser WASM size to a fraction by changing optimization settings (#5494)
Pull Requests
- #5483: feature(fix): function parameter tracking (@liuly0322)
- #5488: Report performance in CI (@TrickyPi)
- #5489: Create FUNDING.json (@BenJam)
- #5492: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5493: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5494: Use opt-level=z for browser wasm (@sapphi-red)
4.16.4
2024-04-23
Bug Fixes
- Revert function parameter tracking logic introduced in 4.16.0 to work on some remaining issues (#5487)
Pull Requests
- #5487: Revert function parameter tracking logic for now (@lukastaegert)
4.16.3
2024-04-23
Bug Fixes
- Do not optimize IIFEs that have a name and are again referenced inside their definition (#5486)
Pull Requests
- #5486: fix: only optimize annoymous iife (@liuly0322)
4.16.2
2024-04-22
Bug Fixes
- Resolve a situation condition where reassignments of function parameters were not tracked properly (#5482)
- Make sure that for armv7 packages, only one package is downloaded for the user (musl or gnu) (#5479)
Pull Requests
- #5479: Add libc field to armv7 packages (@sapphi-red)
- #5482: fix: function parameter reassigned update (@liuly0322)
4.16.1
2024-04-21
Bug Fixes
- Fix crash when rendering logical or conditional expressions (#5481)
Pull Requests
- #5481: fix: conditional/logical expression should request a new tree-shaking (@liuly0322)
4.16.0
2024-04-21
Features
- Track function call arguments to optimize functions only called once or with the same literal values (#5443)
Pull Requests
- #5443: feat: improve tree-shaking by propagate const parameter (@liuly0322, @lukastaegert)
4.15.0
2024-04-20
Features
- Add output.importAttributesKey option to select whether to use "with" or "assert" for import attributes (#5474)
Pull Requests
- #5474: Add ImportAttributesKey to choose keyword ("with" | "assert") (@doubleaa93, @lukastaegert)
- #5475: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5477: Try to run emulated smoke tests for Linux environments (@lukastaegert)
4.14.3
2024-04-15
Bug Fixes
- Support Alpine Linux and other MUSL builds on ARM (#5471)
Pull Requests
- #5471: Add linux arm musl build (@sapphi-red)
4.14.2
2024-04-12
Bug Fixes
- Do not create invalid code when reexporting both a namespace and the default export from that namespace (#5466)
- Ensure ppc64 platform is properly detected (#5460)
Pull Requests
- #5456: Add high-level architecture documentation (@lukastaegert)
- #5460: Fix ppc64le target (@lukastaegert)
- #5463: chore: tweak the comment about files should not be edited (@TrickyPi)
- #5466: Ensure reexported namespaces do not prevent creation of default export helpers (@lukastaegert)
- #5468: chore(deps): update dependency eslint-plugin-unicorn to v52 (@renovate[bot], @lukastaegert)
- #5469: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5470: chore(deps): lock file maintenance (@renovate[bot])
4.14.1
2024-04-07
Bug Fixes
- Show better error when running on musl Linux where the musl build is not supported (#5454)
Pull Requests
- #5451: chore: generate string constants from config (@TrickyPi)
- #5452: chore(deps): lock file maintenance minor/patch updates (@renovate[bot])
- #5453: chore(deps): lock file maintenance (@renovate[bot])
- #5454: Improve error message when running on unsupported MUSL Linux (@lukastaegert)
- #5455: Remove inlining logic in AST (de-)serializer (@lukastaegert)
4.14.0
2024-04-03
Features
- Display error causes in Rollup CLI (#5422)
- Add basic support for explicit resource management via "using" and "await using" (#5423)
Pull Requests
- #5422: feat: show all cause in Error (@devohda, @lukastaegert)
- #5444: feat: support explicit-resource-management (@TrickyPi)
- #5445: docs: add
@shikiji/vitepress-twoslash
(@sapphi-red)
- #5447: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5448: chore(deps): lock file maintenance (@renovate[bot])
4.13.2
2024-03-28
Bug Fixes
- Ensure accessing module info is cached after the build phase for improved performance (#5438)
- Support powerpc64le CPUs (#5350)
Pull Requests
- #5350: Add support for ppc64le (@pavolloffay, @lukastaegert)
- #5438: Cache module info getters before output generation (@bluwy, @lukastaegert)
4.13.1
2024-03-27
Bug Fixes
- Add new linux-s390x-gnu native binary package (#5346)
Pull Requests
- #5346: Add support for linux s390x gnu (@edlerd)
- #5430: chore(deps): update dependency @vue/eslint-config-typescript to v13 (@renovate[bot], @lukastaegert)
- #5431: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5432: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5436: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5437: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
4.13.0
2024-03-12
Features
- Ensure that the location of parse errors and other logs is encoded in the error message as well (#5424)
Pull Requests
- #5417: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5418: chore(deps): lock file maintenance (@renovate[bot])
- #5419: chore: fix typo (@OnlyWick)
- #5424: Add locations to logs, warnings and error messages ( @lukastaegert)
4.12.1
2024-03-06
Bug Fixes
- Escape special characters in file references (#5404)
Pull Requests
- #5398: Rename
getRollupEror
to getRollupError
(@MrRefactoring)
- #5399: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5404: fix: escape ids in
import.meta.ROLLUP_FILE_URL_referenceId
correctly (@sapphi-red)
- #5406: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5407: chore(deps): lock file maintenance (@renovate[bot])
- #5411: Chunk assignment - Fix comment line breaks and typo (@yoavweiss, @lukastaegert)
4.12.0
2024-02-16
Features
- Improve raw bundling performance by 10-15% when not using the cache or plugins that return an AST (#5391)
Pull Requests
- #5391: Improve performance by directly constructing AST from buffer ( @lukastaegert)
- #5393: chore(deps): update dependency eslint-plugin-unicorn to v51 ( @renovate[bot])
- #5394: chore(deps): update typescript-eslint monorepo to v7 (major) ( @renovate[bot])
- #5395: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
4.11.0
2024-02-15
Features
- Add
output.reexportProtoFromExternal
option to disable special code for handling __proto__
reexports (#5380)
Bug Fixes
- Ensure namespace reexport code can be parsed by cjs-module-lexer (#5380)
- Throw when trying to reassing
const
variables (#5388)
Pull Requests
- #5380: fix: separately export
__proto__
for compatibility with CJS Transpiler Re-exports (@TrickyPi)
- #5388: Add const reassign rule (@TrickyPi)
4.10.0
2024-02-10
Features
- Support base-36 and base-16 hashes again via new
output.hashCharacters
option (#5371)
Bug Fixes
- Do not crash process for panics in native code but throw them as JavaScript errors (#5383)
Pull Requests
- #5359: chore(deps): update actions/cache action to v4 (@renovate[bot])
- #5360: chore(deps): update dependency pretty-ms to v9 (@renovate[bot])
- #5366: chore(deps): update dependency husky to v9 (@renovate[bot])
- #5367: chore(deps): update peter-evans/create-or-update-comment action to v4 (@renovate[bot])
- #5368: chore(deps): update peter-evans/find-comment action to v3 ( @renovate[bot])
- #5369: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5370: Fix dependency range for Node types (@lukastaegert)
- #5371: Implement "output.hashCharacters" option to define character set for file hashes (@lukastaegert)
- #5372: Roll back vitepress as 1.0.0-rc.40 breaks the development build ( @lukastaegert)
- #5382: Update documentation (@TrickyPi)
- #5383: Catch Rust panics and then throw them in JS (@TrickyPi)
- #5384: chore(deps): update codecov/codecov-action action to v4 ( @renovate[bot])
- #5385: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5386: Resolve all rollup imports to node_modules to avoid type conflict (@TrickyPi)
4.9.6
2024-01-21
Bug Fixes
- Detect side effects when an element that was pushed into an array is modified via the array (#5352)
Pull Requests
- #5337: Generate AST transformers from config (@lukastaegert)
- #5340: Also type-check d.ts files (@lukastaegert)
- #5348: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5351: chore(deps): update dependency vite to v5.0.12 [security] ( @renovate[bot])
- #5352: Track mutations of elements pushed into arrays (@lukastaegert)
4.9.5
2024-01-12
Bug Fixes
- Fix issue where on Windows, Rollup would not load due to problems with the MSVC executable (#5335)
Pull Requests
- #5334: Fix typo in commondir.ts (@akiomik)
- #5335: build: static link msvc runtime on Windows x64 platform ( @Brooooooklyn)
- #5338: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
4.9.4
2024-01-06
Bug Fixes
- Use quotes for keys in namespaces that are only numbers but are not valid integers (#5328)
- Allow to have comments between pure annotations and the annoted node (#5332)
Pull Requests
- #5328: Correctly handling number key (@LongTengDao)
- #5332: Handle pure annotations that are separated by a comment ( @lukastaegert)
4.9.3
2024-01-05
Bug Fixes
- Support
__proto__
as export/import name (#5313)
- Use ESTree AST type over custom type in user-facing types (#5323)
Pull Requests
- #5313: Correctly handling proto export as module object key ( @LongTengDao)
- #5323: fix: Add estree.Program type to rollup.d.ts (@TrickyPi)
- #5326: docs: fix grammar (@gigabites19)
- #5329: chore(deps): update dependency @vue/eslint-config-prettier to v9 (@renovate[bot])
- #5330: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
4.9.2
2023-12-30
Bug Fixes
- Extend support for arbitrary namespace identifiers in SystemJS (#5321)
- Do not wrongly flag functions without side effects as side effects if moduleSideEffects is false (#5322)
Pull Requests
- #5305: Add JSDoc types to internal scripts (@lukastaegert)
- #5309: chore(deps): update actions/download-artifact action to v4 ( @renovate[bot])
- #5311: chode: add node badge (@btea)
- #5312: Remove rollup-plugin-thatworks from devDeps (@TrickyPi)
- #5318: chore(deps): update dependency eslint-plugin-unicorn to v50 ( @renovate[bot])
- #5319: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5321: Handle arbitrary namespace identifiers in some SystemJS scenarios (@lukastaegert)
- #5322: Do not handle declarations in modules without side effects as TDZ (@lukastaegert)
4.9.1
2023-12-17
Bug Fixes
- Fix an issue where break statements could include the wrong label (#5297)
Pull Requests
- #5297: fix: use a new includedLabels in the body of the LabeledStatement (@TrickyPi)
- #5300: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
4.9.0
2023-12-13
Features
- Fully support arbitrary strings as import and export identifiers (#5298)
Pull Requests
- #5296: Do not assume setTimeout return type (@kapouer)
- #5298: Fully support arbitrary module namespace identifiers for all formats (@lukastaegert)
4.8.0
2023-12-11
Features
- Improve
experimentalMinChunkSize
to take already loaded modules from dynamic imports into account (#5294)
Pull Requests
- #5294: Find more merge targets for experimentalMinChunkSize ( @lukastaegert)
4.7.0
2023-12-08
Features
- Add build for Linux riscv64 architecture (#5288)
Bug Fixes
- Improve error message when native Windows build does not start (#5284)
Pull Requests
- #5278: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5281: Add logs and experimentalLogSideEffects to REPL (@lukastaegert)
- #5284: Add friendly error for missing MSVC redistributable (@sapphi-red)
- #5285: chore(deps): update dependency vite to v5.0.5 [security] ( @renovate[bot])
- #5288: Add support for linux riscv64 gnu (@kxxt)
- #5290: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
4.6.1
2023-11-30
Bug Fixes
- Resolve a situation where declaring the same
var
several times was considered a conflict (#5276)
Pull Requests
- #5275: Add TNG as special sponsor (@lukastaegert)
- #5276: Allow to redeclare parameters multiple times in nested scopes ( @lukastaegert)
4.6.0
2023-11-26
Features
- Allow
this.addWatchFile
in all plugin hooks (#5270)
Bug Fixes
- Show helpful error when native binaries are not installed due to an
npm
issue (#5267)
- Do not access
this
context in this.addWatchFile
so it does not need to be bound when passed around (#5270)
Pull Requests
- #5267: Add friendly error for npm bug (@sapphi-red)
- #5270: Allow this.addWatchFile in all hooks (@lukastaegert)
- #5272: Debug deployed graphs (@lukastaegert)
4.5.2
2023-11-24
Bug Fixes
- Handle files with UTF-8 BOM when using the commonjs plugin (#5268)
Pull Requests
- #5268: fix: strip BOM before calling transform hook (@TrickyPi)
- #5269: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
4.5.1
2023-11-21
Bug Fixes
- Do not error when a function expression uses the same name for a parameter and its id (#5262)
Pull Requests
- #5257: Fix graphs in docs, improve REPL colors (@lukastaegert)
- #5262: Allow function expression parameters to shadow the function id ( @lukastaegert)
4.5.0
2023-11-18
Bug Fixes
- Show a proper error when using native Rollup on armv7 musl Linux (#5255)
Pull Requests
- #5251: doc fix import assertions to attributes in API plugin development page (@lhapaipai)
- #5253: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5255: Error for armv7 musl build (@lukastaegert)
4.4.1
2023-11-14
Bug Fixes
- Do not flag duplicate function declarations in function scopes as syntax errors (#5248)
Pull Requests
- #5248: Allow functions to redeclare vars and functions in function scopes (@lukastaegert)
4.4.0
2023-11-12
Features
- Replace SWC linting with faster internal linting to error on duplicate declarations etc. (#5207)
Bug Fixes
- Show proper error when an entry exports non-existing bindings (#5207)
Pull Requests
- #5207: perf: run lint while constructing nodes (@sapphi-red)
4.3.1
2023-11-11
Bug Fixes
- Fix rename error when handling errors in watch mode (#5240)
- Prevent warning when using
--forceExit
(#5245)
Pull Requests
- #5240: fix: allow the name of Rollup Error to be modified (@TrickyPi)
- #5243: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5245: Ensure --forceExit works without warning (@lukastaegert)
4.3.0
2023-11-03
Features
- Add
forceExit
CLI flag for situations where the CLI does not exit gracefully (#5195)
Bug Fixes
- Properly catch errors when removing a temporary config file fails (#5198)
Pull Requests
- #5195: Add
forceExit
CLI flag (@raphael-theriault-swi)
- #5198: fix: prevent
ENOENT
error on temp config removal (@jzempel)
- #5237: chore: remove unused files and deps (@TrickyPi)
- #5238: chore(deps): update dependency eslint-plugin-unicorn to v49 ( @renovate[bot])
- #5239: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
4.2.0
2023-10-31
Features
- Run parsing in multiple threads and introduce
parseAstAsync
helper function (#5202)
Pull Requests
- #5202: perf: introduce
parseAstAsync
and parallelize parsing AST ( @sapphi-red)
4.1.6
2023-10-31
Bug Fixes
- Fix a bug where emtpy block comments in certain positions could freeze Rollup (#5231)
Pull Requests
- #5228: build: ensure rust toolchain components for linting are installed (@jerome-benoit)
- #5231: Render emtpy block comments after tree-shaken statements ( @lukastaegert)
- #5232: Revert specifying rustfmt and clippy in toolchain file as it breaks REPL build (@lukastaegert)
4.1.5
2023-10-28
Bug Fixes
- Fix an issue where actual entries that were also implicit entries could remain implicit (#5220)
Pull Requests
- #5209: Document Vite workaround for browser build (@curran)
- #5215: chore(deps): update dependency lint-staged to v15 ( @renovate[bot])
- #5216: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5218: Update license plugin (@lukastaegert)
- #5219: Fix error highlight in REPL (@lukastaegert)
- #5220: Fix race condition when emitting implicitly dependent entries ( @lukastaegert)
- #5224: chore(deps): update actions/setup-node action to v4 ( @renovate[bot])
- #5225: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
4.1.4
2023-10-16
Bug Fixes
- Reduce sizes @rollup/browser and @rollup/wasm-node WASM artifacts (#5204)
Pull Requests
- #5204: perf: shrink wasm size by avoid importing browserslist ( @sapphi-red)
4.1.3
2023-10-15
Bug Fixes
- Fix WASM build as hash function was not exported (#5203)
Pull Requests
- #5203: fix: export xxhashBase64Url from wasm (@sapphi-red)
4.1.2
2023-10-15
Release did not finish successfully
4.1.1
2023-10-15
Bug Fixes
- Improve Node parsing performance (#5201)
Pull Requests
- #5201: perf: use mimalloc for bindings_napi (@sapphi-red)
4.1.0
2023-10-14
Features
- Reduce memory usage of Rollup builds (#5133)
Pull Requests
- #5133: perf: reducing ast node memory overhead (@thebanjomatic)
- #5177: chore: explicitly set rust toolchain channel (@cijiugechu)
- #5179: Update migration guide for Rollup 4 (@lukastaegert)
- #5180: Resolve clippy errors (@cijiugechu)
- #5183: Add clippy to pipeline and fix remaining issues (@lukastaegert)
- #5184: docs: fix code example for
onLog
(@tjenkinson)
- #5186: Improve wording for native artifacts in migration guide ( @lukastaegert)
- #5190: test: add verifyAst type (@TrickyPi)
- #5196: chore(deps): update dependency rollup to v4 (@renovate[bot])
- #5197: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
4.0.2
2023-10-06
Bug Fixes
- Fix annotation detection logic to not fail when a non-ASCII character precedes a double underscore (#5178)
Pull Requests
- #5178: Handle special characters before double underscores ( @lukastaegert)
4.0.1
2023-10-06
Bug Fixes
- Do not panic on trailing semicolons after class methods (#5173)
- Add artifact for arm64 linux musl target (#5176)
Pull Requests
- #5172: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5173: fix: ignores empty statements in class body that is returned by SWC parser (@TrickyPi)
- #5176: Fix linux arm musl build (@lukastaegert)
4.0.0
2023-10-05
BREAKING CHANGES
General Changes
- The minimal required Node version is now 18.0.0 (#5142)
- The browser build now relies on a WASM artifact that needs to be provided as well (#5073)
- The NodeJS build now relies on an optional native binary; for unsupported platforms, users can use the
@rollup/wasm-node
package that has the same interface as Rollup but relies on WASM artifacts (#5073)
- The
INVALID_IMPORT_ASSERTION
error code has been replaced with INVALID_IMPORT_ATTRIBUTE
(#5073)
- Rollup will now warn for
@__PURE__
and @__NO_SIDE_EFFECTS__
annotations in invalid locations (#5165)
- If an entry module starts with a shebang comment
#!...
, this comment will be prepended to the output for es
and cjs
formats (#5163)
- File hashes will now use url-safe base64 encoded hashes (#5155)
- The maximum hash length has been reduced to 22 characters (#5155)
- The
RollupWarning
type has been removed in favor of the RollupLog
type (#5147)
Changes to Rollup Options
- Acorn plugins are no longer supported, the
acornInjectPlugins
option has been removed (#5073)
- The
acorn
option has been removed (#5073)
output.externalImportAssertions
has been deprecated in favor of output.externalImportAttributes
(#5073)
inlineDynamicImports
, manualChunks
and preserveModules
have been removed on input option level: Please use the corresponding output options of the same names (#5143)
- Removed output options (#5143):
output.experimentalDeepDynamicChunkOptimization
: This option is no longer needed as Rollup now always runs the full chunking algorithm
output.dynamicImportFunction
: Use the renderDynamicImport
plugin hook instead
output.namespaceToStringTag
: Use output.generatedCode.symbols
instead
output.preferConst
: Use output.generatedCode.constBindings
instead
Plugin API Changes
- For
this.resolve
, the default of the skipSelf
option is now true
(#5142)
this.parse
now only supports the allowReturnOutsideFunction
option for now (#5073)
- Import assertions now use the new import attribute AST structure ( #5073)
- "assertions" have been replaced with "attributes" in various places of the plugin interface (#5073)
- If the import of a module id is handled by the
load
hook of a plugin, rollup.watch
no longer watches the actual file if the module id corresponds to a real path; if this is intended, then the plugin is responsible for calling this.addWatchFile
for any dependency files (#5150)
- The normalized input options provided by
buildStart
and other hooks no longer contain an onwarn
handler; plugins should use onLog
instead (#5147)
this.moduleIds
has been removed from the plugin context: Use this.getModuleIds()
instead (#5143)
- The
hasModuleSideEffects
flag has been removed from the ModuleInfo
returned by this.getModuleInfo()
: Use moduleSideEffects
on the ModuleInfo
instead (#5143)
Features
- Improve parsing speed by switching to a native SWC-based parser (#5073)
- Rollup will now warn for
@__PURE__
and @__NO_SIDE_EFFECTS__
annotations in invalid locations (#5165)
- The parser is now exposed as a separate export
parseAst
(#5169)
Bug Fixes
- Rollup no longer tries to watch virtual files if their name corresponds to an actual file name; instead, plugins handle watching via
this.addWatchFile()
(#5150)
Pull Requests
- #5073: [v4.0] Switch parser to SWC and introduce native/WASM code ( @lukastaegert)
- #5142: [v4.0] Set the default of skipSelf to true (@TrickyPi)
- #5143: [v4.0] Remove deprecated features (@lukastaegert)
- #5144: [v4.0] Imporve the performance of generating ast and rollup ast nodes (@TrickyPi)
- #5147: [v4.0] Remove onwarn from normalized input options ( @lukastaegert)
- #5150: [v4.0] feat: Do not watch files anymore if their content is returned by the load hook (@TrickyPi)
- #5154: [v4.0] Add parse option to allow return outside function ( @lukastaegert)
- #5155: [v4.0] feat: implement hashing content in Rust (@TrickyPi)
- #5157: [v4.0] Handle empty exports (@lukastaegert)
- #5160: chore(deps): lock file maintenance minor/patch updates ( @renovate[bot])
- #5163: [v4.0] feat: preserve shebang in entry module for CJS and ESM outputs (@TrickyPi)
- #5164: [v4.0] fix: also strip BOM from code strings in JS (@TrickyPi)
- #5165: [v4.0] warn for invalid annotations (@lukastaegert)
- #5168: [v4.0] Ensure we support new import attribute "with" syntax ( @lukastaegert)
- #5169: [v4.0] Expose parser (@lukastaegert)
For previous changelogs, see