Description
Trying to document what went wrong with v12.16.0 (regressions) and what could be done in the future to reduce the risks.
ESM: Package self-resolution not behind --experimental-modules
flag #31754.
- The feature initially landed with its own flag,
--experimental-resolve-self
(module: resolve self-references node#29327). - The flag was then removed in module: unflag resolve self node#31002 but
--experimental-conditional-exports
was still required to use the feature. - module: unflag conditional exports node#31001 removed the
--experimental-conditional-exports
flag. - When #31002 and #31001 landed, ESM was already unflagged on master/v13.x.
v12.16.0 included a lot of changes related to ESM and because the unflagging is the only thing that we did not backport, we couldn't know exactly which code paths will work differently.
For future ESM backports, I suggest that we actively focus on making sure it is flagged.
V8 WASM bug #31752
Uncovered after nodejs/node#30909 landed in v12.16.0. The change was initially released in v13.5.0 but no issue was reported before we included it in v12.16.0.
Because this is a V8 bug that we were not aware of at the time of the release, I don't think we could have done better here, especially since the original change was supposed to fix a regression.
large pages change breaks the build in some cases #31249, #31520
Introduced by nodejs/node#30954.
The second issue was fixed on master in nodejs/node#31547 but isn't released yet. There seems to be no fix for the first issue at the moment.
The problem here is that none of the issues were linked back to the PR that introduced them. They do not appear in the PR's timeline.
To avoid this happening again, I think we need somehow to instruct collaborators to do these when a regression is found:
- Comment on the PR with a link to the new issue
- If the PR is not going to be reverted on master, add the backport-blocked label
- If the PR is going to be reverted on master, add the dont-land-on label to both the original and the revert PRs.
async_hooks change causes Node process to crash #31783
Introduced in nodejs/node#30965.
That bug was only reported to us after it landed in v12.16.0 and is now fixed.
http response listener throwing does not result in emit of uncaughtException #31796
Introduced in nodejs/node#30236.
That bug was only reported to us after it landed in v12.16.0 and is now fixed.
New enumerable and nonwritable field on EventEmitter caused issues #30932
Introduced in nodejs/node#30932.
That was only reported to us after it landed in v12.16.0.
It is not obvious to me what we could have done better about the last three issues. They only affect specific cases that we did not test for and were not detected by people who use or run their tests on v13.x Current.