Repository navigation
Enable the new module registry by default from 2026-11-08 - #7799
irvinebroque wants to merge 3 commits into
Conversation
44e588e to
468f632
Compare
4442cca to
f51bc6c
Compare
Compatibility decision: use the new JavaScript module registry for compatibility dates on or after 2026-11-01, including import.meta, URL-based resolution, import attribute validation, and Node.js require(esm) semantics. Earlier dates retain the opt-in behavior and legacy_module_registry remains an opt-out. Python Workers retain the legacy registry. Allow the scheduled Sunday date in the existing weekday guard. Remove the standalone server experimental-mode restriction so date-enabled Workers can start without --experimental.
f51bc6c to
9113db3
Compare
jasnell
left a comment
There was a problem hiding this comment.
the default on date may need to be pushed out another week or two
Compatibility decision: use the new JavaScript module registry for compatibility dates on or after 2026-11-08, one week after the previously scheduled date. Keep the Sunday exception aligned with the enable date.
|
💬 Approved with comments — The change is small and correct. Python Workers stay on the legacy registry and the Findings: 1 warning · 2 suggestions The decision is advisory: this comment never approves, blocks or requests changes on the pull request. 🔧 Fix with your agentPaste the following into your coding agent to investigate and fix these issues. 📋 Code Quality:
|
|
Since last review: 0 resolved, 2 still open, 0 new. Enables the module registry by compatibility date and removes its startup experimental gate. Carried forward from the last review: tests (no author changes in their files since then; earlier findings stand) Not re-run: api-compat, docs, compat-flags, design-simplicity, jsg-gc, kj-style, memory-safety (no author changes in their files since the last review) Reviewed commit: c1ad2c13 · github run |
| @@ -1569,9 +1569,6 @@ kj::Promise<kj::Own<CompiledWorker>> factory_new_worker(const WorkerFactory& con | |||
| bool usingNewModuleRegistry = isNewModuleRegistryEnabled(featureFlags); | |||
| kj::Maybe<kj::Arc<jsg::modules::ModuleRegistry>> newModuleRegistry; | |||
| if (usingNewModuleRegistry) { | |||
There was a problem hiding this comment.
[WARNING] A moduleFallback is still an experimental feature, but this branch now bypasses its only --experimental check. newWorkerdModuleRegistry() receives moduleFallback at lines 1577-1580 and adds an active fallback bundle when it is present (workerd-api.c++:944-983), while the remaining check is inside if (!usingNewModuleRegistry) at lines 1666-1670. Therefore a worker at the new default date can make fallback-service requests without --experimental.
| if (usingNewModuleRegistry) { | |
| if (usingNewModuleRegistry) { | |
| KJ_REQUIRE(experimental || moduleFallback == kj::none, | |
| "The module fallback service is an experimental feature. " | |
| "You must run workerd with `--experimental` to use the module fallback service."); |
| $compatEnableFlag("new_module_registry") | ||
| $compatDisableFlag("legacy_module_registry"); | ||
| $compatDisableFlag("legacy_module_registry") | ||
| $compatEnableDate("2026-11-08"); |
There was a problem hiding this comment.
[WARNING] The only accompanying test change exempts this field from weekday validation; it does not depend on the enable-date annotation. Existing date-boundary coverage in compatibility-date-test.c++ covers a different flag (lines 578-588), and the existing new-registry server tests all call allowExperimental() (for example, server-test.c++:1002-1016). Removing this annotation, selecting an incorrect boundary, or restoring the factory-level experimental requirement would therefore pass the test suite. Add coverage for the day before and the day of the default, the legacy_module_registry opt-out, and startup of a default-date module worker without experimental mode.
JavaScript Workers currently require
new_module_registryto use URL-based module resolution,import.meta, validated import attributes, and the newrequire(esm)semantics. Make the registry the default for compatibility dates on or after 2026-11-08. Earlier dates retain their current behavior,legacy_module_registryremains an opt-out, and Python Workers retain the legacy registry.Remove the standalone server requirement for
--experimentalso Workers using the default registry can start normally.The companion docs PR includes an October 17 advance announcement, an example, migration guidance, and a link to the September 2026 blog announcement.