feat(rolldown_binding): Add configurable max_blocking_threads with environment variable override#5559
Conversation
✅ Deploy Preview for rolldown-rs canceled.
|
Benchmarks Rust |
…t()) Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
3287a7b to
c82c205
Compare
|
@copilot remove the @IWANABETHATGUY let's land this without any modifications firsts, test it thoroughly via |
…lt value (512) Co-authored-by: Boshen <1430279+Boshen@users.noreply.github.com>
Removed the |
## [1.0.0-beta.32] - 2025-08-11 ### 💥 BREAKING CHANGES - advanceChunks: remove interaction between `advanceChunks` and `preserveEntrySignatures` (#5629) by @hyf0 - types: align `TreeshakingOptions` type with Rollup (#5592) by @sapphi-red ### 🚀 Features - rolldown_plugin_manifest: support legacy (#5694) by @shulaoda - rolldown_plugin_vite_css: align load hook logic (#5667) by @shulaoda - rolldown_plugin_transform: throw error for invalid tsconfig (#5657) by @shulaoda - support `context` option (#5631) by @7086cmd - rolldown: oxc v0.81.0 (#5642) by @Boshen - include plugin name in the message of UNHANDLEABLE_ERRORs that happened in plugins (#5636) by @sapphi-red - pass plugin name to log (#5635) by @sapphi-red - rolldown_plugin_import_glob: support glob-safe paths (#5640) by @shulaoda - rolldown_binding: Add configurable max_blocking_threads with environment variable override (#5559) by @Copilot - output better error message for callable plugins (#5632) by @sapphi-red - rolldown_plugin_manifest: support names for asset (#5627) by @shulaoda - rolldown_plugin_manifest: align the logic related to css entries (#5626) by @shulaoda - hmr: handle `import ... from 'external-module'` in rolldown's best (#5599) by @hyf0 - add array support for `treeshake.moduleSideEffects` option (#5593) by @sapphi-red ### 🐛 Bug Fixes - ensure `./` prefix for relative imports starting with `.` (#5687) by @shulaoda - hmr: fix regression test `deconflict_import_bindings` (#5684) by @hyf0 - hmr: only modules in the propagation chain need to re-execute (#5683) by @hyf0 - preserve empty `export {}` to ensure correct ESM detection (#5686) by @shulaoda - vite test failed (#5675) by @IWANABETHATGUY - incorrect module execution order with sideeffectful CJS module (#5661) by @IWANABETHATGUY - rollup-tests: update ignored tests for `option.context` (#5669) by @situ2001 - hmr: ensure correctness of `typeof require === 'function'` (#5651) by @hyf0 - hmr: rewrite `this` to `exports` for cjs modules (#5641) by @hyf0 - don't generate namespace reexport code for reexport external record that has been moved to entry point (#5622) by @IWANABETHATGUY - esm export * from 'externalized-dep' generates unnecessary code (#5612) by @IWANABETHATGUY - hmr: correct runtime behavior for manual reexports (#5614) by @hyf0 - ci: resolve potential sync issue in `this.emitFile` (#5611) by @shulaoda - hmr: support re-assignment on `module.exports` (#5607) by @hyf0 - hmr: rewrite `require(...)` to sensible form (#5604) by @hyf0 - align behavior when returning `undefined` from `treeshake.moduleSideEffects` function (#5595) by @sapphi-red ### 🚜 Refactor - rolldown_binding: improve the use of `FxHashSet` and `FxHashMap` (#5665) by @shulaoda - hmr: move constants to `constants.rs` (#5650) by @hyf0 - hmr: rewrite `exports,module` to `__rolldown_exports__,__rolldown_module__` (#5647) by @hyf0 - hmr: migrate `VisitMut` to `Traverse` (#5646) by @hyf0 - use `bit_index` function to get `RuntimeHelper` bit index (#5634) by @IWANABETHATGUY - improve `JsCallback` and `MaybeAsyncJsCallback` (#5628) by @shulaoda - use bitflags instead of boolean to represent module_namespace included reason (#5621) by @IWANABETHATGUY - rolldown_debug,rolldown_tracing: remove `EnvFilter` (#5231) by @Boshen - align parameter name for `treeshake.moduleSideEffects` (#5594) by @sapphi-red ### 📚 Documentation - contrib-guide: add CPU profile steps (#5677) by @sapphi-red - rollup-tests: update README to correct commands (#5658) by @situ2001 ### ⚡ Performance - reduce memory usage when calc none wrapped modules implicit dependency (#5679) by @IWANABETHATGUY - hmr: do codegen in parallel (#5590) by @hyf0 ### 🧪 Testing - Runtime error when using rolldown to build a page using tinymce (#5678) by @IWANABETHATGUY - rollup: enable testing for `option.context` (#5663) by @situ2001 - hmr: run patch exectution after the normal execution (#5645) by @sapphi-red - hmr: properly execute patch chunks (#5617) by @sapphi-red - rust/hmr: hide unnecessary rolldown runtime, hmr module (#5606) by @hyf0 - rust/hmr: support writting assertion tests (#5598) by @hyf0 - rust: simplify global variable injection logic (#5597) by @hyf0 ### ⚙️ Miscellaneous Tasks - deps: lock file maintenance (#5693) by @renovate[bot] - deps: lock file maintenance (#5692) by @renovate[bot] - deps: lock file maintenance rust crates (#5691) by @renovate[bot] - deps: update github-actions (#5688) by @renovate[bot] - deps: lock file maintenance npm packages (#5690) by @renovate[bot] - deps: update github-actions (major) (#5689) by @renovate[bot] - upgrade NAPI-RS to 3.2 (#5680) by @Brooooooklyn - deps: update dependency tsdown to v0.14.0 (#5681) by @renovate[bot] - clean up basic-vue example (#5676) by @IWANABETHATGUY - deps: update crate-ci/typos action to v1.35.3 (#5674) by @renovate[bot] - remove duplicate hook tracing (#5673) by @IWANABETHATGUY - deps: update dependency tsdown to v0.13.4 (#5668) by @renovate[bot] - deps: update dependency rolldown-plugin-dts to v0.15.6 (#5666) by @renovate[bot] - deps: update crate-ci/typos action to v1.35.2 (#5664) by @renovate[bot] - deps: update dependency rust to v1.89.0 (#5652) by @renovate[bot] - deps: update dependency rolldown-plugin-dts to v0.15.5 (#5649) by @renovate[bot] - deps: update dependency rolldown-plugin-dts to v0.15.4 (#5638) by @renovate[bot] - add `just debug-test` alias to run test without extended test case (#5633) by @IWANABETHATGUY - update lable related to auto labeled documentation ci (#5630) by @IWANABETHATGUY - clippy: allow `case_sensitive_file_extension_comparisons` (#5625) by @shulaoda - fix wasi build failed (#5624) by @sapphi-red - use env variable to control whether run extended tests (#5623) by @IWANABETHATGUY - remove redundant track_caller (#5620) by @IWANABETHATGUY - replace unmaintained goto-bus-stop/setup-zig with mlugg/setup-zig action (#5605) by @Copilot - deps: update crate-ci/typos action to v1.35.1 (#5603) by @renovate[bot] - deps: update crate-ci/typos action to v1.35.0 (#5601) by @renovate[bot] - deps: update dependency tsdown to v0.13.3 (#5602) by @renovate[bot] - deps: update dependency rolldown-plugin-dts to v0.15.3 (#5600) by @renovate[bot] Co-authored-by: shulaoda <165626830+shulaoda@users.noreply.github.com>
This PR adds support for configuring the tokio runtime's
max_blocking_threadssetting in therolldown_bindingcrate to optimize multi-threaded IO performance.Problem
The default tokio runtime configuration may not be optimal for all use cases. Having a configurable
max_blocking_threadssetting allows for performance tuning based on specific deployment requirements and system characteristics.Solution
Added a
module_initfunction to therolldown_bindingcrate that creates a custom tokio runtime with configurablemax_blocking_threads:ROLLDOWN_MAX_BLOCKING_THREADSenvironment variable for manual tuningImplementation Details
The implementation uses
#[napi_derive::module_init]to initialize the runtime before any bundling operations:ROLLDOWN_MAX_BLOCKING_THREADSenvironment variablenapi::bindgen_prelude::create_custom_tokio_runtimeTesting
This approach allows for thorough testing and optimization via the
ROLLDOWN_MAX_BLOCKING_THREADSenvironment variable while maintaining a consistent default behavior across all platforms.Fixes #3754.
💬 Share your feedback on Copilot coding agent for the chance to win a $200 gift card! Click here to start the survey.