From 6f44d0af1fea8f5388b3d92c812f5da76fcc0751 Mon Sep 17 00:00:00 2001 From: Pete Bacon Darwin Date: Sun, 22 Feb 2026 20:30:27 +0000 Subject: [PATCH] Graduate remaining experimental nodejs_compat module flags Set a default enable date (2026-03-10) for the remaining experimental Node.js compatibility flags: perf_hooks, v8, tty, child_process, worker_threads, readline, and repl modules. Also graduate enable_global_performance_classes as implied by enableNodeJsPerfHooksModule. Similar to #5880 and #5567, these flags are replaced from $experimental to $impliedByAfterDate so they become automatically enabled for workers with nodejs_compat and a compatibility date >= 2026-03-10. --- .../tests/child_process-nodejs-test.wd-test | 2 +- .../api/node/tests/tty-nodejs-test.wd-test | 2 +- .../api/node/tests/v8-nodejs-test.wd-test | 2 +- .../tests/worker_threads-nodejs-test.wd-test | 2 +- src/workerd/io/compatibility-date.capnp | 19 ++++++++----------- 5 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/workerd/api/node/tests/child_process-nodejs-test.wd-test b/src/workerd/api/node/tests/child_process-nodejs-test.wd-test index 4d619591767..e236728c9bc 100644 --- a/src/workerd/api/node/tests/child_process-nodejs-test.wd-test +++ b/src/workerd/api/node/tests/child_process-nodejs-test.wd-test @@ -7,7 +7,7 @@ const unitTests :Workerd.Config = ( modules = [ (name = "worker", esModule = embed "child_process-nodejs-test.js") ], - compatibilityFlags = ["nodejs_compat", "nodejs_compat_v2", "enable_nodejs_child_process_module", "experimental"], + compatibilityFlags = ["nodejs_compat", "nodejs_compat_v2", "enable_nodejs_child_process_module"], ) ), ], diff --git a/src/workerd/api/node/tests/tty-nodejs-test.wd-test b/src/workerd/api/node/tests/tty-nodejs-test.wd-test index 32d6b5acfd2..4fe6c81c0f7 100644 --- a/src/workerd/api/node/tests/tty-nodejs-test.wd-test +++ b/src/workerd/api/node/tests/tty-nodejs-test.wd-test @@ -7,7 +7,7 @@ const unitTests :Workerd.Config = ( modules = [ (name = "worker", esModule = embed "tty-nodejs-test.js") ], - compatibilityFlags = ["nodejs_compat", "nodejs_compat_v2", "enable_nodejs_tty_module", "experimental"] + compatibilityFlags = ["nodejs_compat", "nodejs_compat_v2", "enable_nodejs_tty_module"] ) ), ], diff --git a/src/workerd/api/node/tests/v8-nodejs-test.wd-test b/src/workerd/api/node/tests/v8-nodejs-test.wd-test index c2b4374c0bf..43b75728e84 100644 --- a/src/workerd/api/node/tests/v8-nodejs-test.wd-test +++ b/src/workerd/api/node/tests/v8-nodejs-test.wd-test @@ -7,7 +7,7 @@ const unitTests :Workerd.Config = ( modules = [ (name = "worker", esModule = embed "v8-nodejs-test.js") ], - compatibilityFlags = ["nodejs_compat", "nodejs_compat_v2", "enable_nodejs_v8_module", "experimental"] + compatibilityFlags = ["nodejs_compat", "nodejs_compat_v2", "enable_nodejs_v8_module"] ) ), ], diff --git a/src/workerd/api/node/tests/worker_threads-nodejs-test.wd-test b/src/workerd/api/node/tests/worker_threads-nodejs-test.wd-test index 3c50dfc1526..eb2d3d7d059 100644 --- a/src/workerd/api/node/tests/worker_threads-nodejs-test.wd-test +++ b/src/workerd/api/node/tests/worker_threads-nodejs-test.wd-test @@ -7,7 +7,7 @@ const unitTests :Workerd.Config = ( modules = [ (name = "worker", esModule = embed "worker_threads-nodejs-test.js") ], - compatibilityFlags = ["nodejs_compat", "nodejs_compat_v2", "enable_nodejs_worker_threads_module", "experimental", "global_navigator"] + compatibilityFlags = ["nodejs_compat", "nodejs_compat_v2", "enable_nodejs_worker_threads_module", "global_navigator"] ) ), ], diff --git a/src/workerd/io/compatibility-date.capnp b/src/workerd/io/compatibility-date.capnp index 83bba3ca604..66d7a3d39a1 100644 --- a/src/workerd/io/compatibility-date.capnp +++ b/src/workerd/io/compatibility-date.capnp @@ -1064,15 +1064,14 @@ struct CompatibilityFlags @0x8f8c1b68151b6cef { enableNodeJsPerfHooksModule @122 :Bool $compatEnableFlag("enable_nodejs_perf_hooks_module") $compatDisableFlag("disable_nodejs_perf_hooks_module") - $experimental; - # $impliedByAfterDate(name = "nodeJsCompat", date = "2025-10-01"); + $impliedByAfterDate(name = "nodeJsCompat", date = "2026-03-10"); # Enables the Node.js perf_hooks module. It is required to use this flag with # nodejs_compat (or nodejs_compat_v2). enableGlobalPerformanceClasses @123 :Bool $compatEnableFlag("enable_global_performance_classes") $compatDisableFlag("disable_global_performance_classes") - $experimental; + $impliedByAfterDate(name = "enableNodeJsPerfHooksModule", date = "2026-03-10"); # Enables PerformanceEntry, PerformanceMark, PerformanceMeasure, PerformanceResourceTiming, # PerformanceObserver and PerformanceObserverEntryList global classes. @@ -1086,16 +1085,14 @@ struct CompatibilityFlags @0x8f8c1b68151b6cef { enableNodeJsV8Module @125 :Bool $compatEnableFlag("enable_nodejs_v8_module") $compatDisableFlag("disable_nodejs_v8_module") - $experimental; - # $impliedByAfterDate(name = "nodeJsCompat", date = "2025-10-15"); + $impliedByAfterDate(name = "nodeJsCompat", date = "2026-03-10"); # Enables the Node.js non-functional stub v8 module. It is required to use this flag with # nodejs_compat (or nodejs_compat_v2). enableNodeJsTtyModule @126 :Bool $compatEnableFlag("enable_nodejs_tty_module") $compatDisableFlag("disable_nodejs_tty_module") - $experimental; - # $impliedByAfterDate(name = "nodeJsCompat", date = "2025-10-15"); + $impliedByAfterDate(name = "nodeJsCompat", date = "2026-03-10"); # Enables the Node.js non-functional stub tty module. It is required to use this flag with # nodejs_compat (or nodejs_compat_v2). @@ -1116,14 +1113,14 @@ struct CompatibilityFlags @0x8f8c1b68151b6cef { enableNodeJsChildProcessModule @129 :Bool $compatEnableFlag("enable_nodejs_child_process_module") $compatDisableFlag("disable_nodejs_child_process_module") - $experimental; + $impliedByAfterDate(name = "nodeJsCompat", date = "2026-03-10"); # Enables the Node.js non-functional stub child_process module. It is required to use this # flag with nodejs_compat (or nodejs_compat_v2). enableNodeJsWorkerThreadsModule @130 :Bool $compatEnableFlag("enable_nodejs_worker_threads_module") $compatDisableFlag("disable_nodejs_worker_threads_module") - $experimental; + $impliedByAfterDate(name = "nodeJsCompat", date = "2026-03-10"); # Enables the Node.js non-functional stub worker_threads module. It is required to use this # flag with nodejs_compat (or nodejs_compat_v2). @@ -1165,14 +1162,14 @@ struct CompatibilityFlags @0x8f8c1b68151b6cef { enableNodeJsReadlineModule @136 :Bool $compatEnableFlag("enable_nodejs_readline_module") $compatDisableFlag("disable_nodejs_readline_module") - $experimental; + $impliedByAfterDate(name = "nodeJsCompat", date = "2026-03-10"); # Enables the Node.js non-functional stub readline module. It is required to use this # flag with nodejs_compat (or nodejs_compat_v2). enableNodeJsReplModule @137 :Bool $compatEnableFlag("enable_nodejs_repl_module") $compatDisableFlag("disable_nodejs_repl_module") - $experimental; + $impliedByAfterDate(name = "nodeJsCompat", date = "2026-03-10"); # Enables the Node.js non-functional stub repl module. It is required to use this # flag with nodejs_compat (or nodejs_compat_v2).