-
-
Couldn't load subscription status.
- Fork 33.6k
2025-10-28, Version 24.11.0 'Krypton' (LTS) #60414
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Notable changes: This release marks the transition of Node.js 24.x into Long Term Support (LTS) with the codename 'Krypton'. It will continue to receive updates through to the end of April 2028. Other than updating metadata, such as the `process.release` object, to reflect that the release is LTS, no further changes from Node.js 24.10.0 are included. PR-URL: #60414
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## v24.x #60414 +/- ##
==========================================
- Coverage 90.04% 90.02% -0.03%
==========================================
Files 663 663
Lines 198537 197905 -632
Branches 38723 38700 -23
==========================================
- Hits 178770 178156 -614
- Misses 12151 12167 +16
+ Partials 7616 7582 -34 🚀 New features to boost your workflow:
|
|
@nodejs/releasers https://github.com/nodejs/node/actions/runs/18811044629/job/53672232661?pr=60414 is failing due to #60050. #60419 will skip the test on macOS on https://github.com/nodejs/node/actions/runs/18811033522/job/53672242950?pr=60414 fails with: which is weird because the release commit is the only commit in the proposal. Is the linter confused because there is no section? |
|
24.x branch currently zero-fills That causes a significant perf drop in some scenarios compared to 22.x, as it also affects internal allocations Zero-filling Upd: see #60423 (comment), I think at this point reverting that is likely semver-major already, regardless of LTS release |
|
Per #60423 (comment) + #60423 (comment), fixing And disabling zero-fill-by-default should be mentioned in significant changes for visibility cc @nodejs/tsc |
|
We should ideally include a fix for #60423, in this PR or immediately after in a patch release. |
That would work too if it won't get blocked and will be released e.g. same day Whatever would prevent ecosystem lock-in on the zero-fill behavior on LTS should work, technical details like patch version number don't matter much (unlike timing) |
|
Ideally isaacs/node-tar#446 also should get in as npm subdep if we disable zero-fill Upd: #60430 |
|
I'm struggling to see that this is a blocker for the LTS transition. The argument seems to be that there code might depend on undocumented behaviour in Node.js, which is a bug in that code. The buffer being zero filled does not break the API description of being uninitialized (it could "just happen" to all be zeros). If the code is depending on the buffer being zero filled then it is already broken on Node.js 22. From a practical point of view, AFAIK there is no fix proposed for #60423 and suggestions that even if a fix was ready we should not land it until node-tar and npm are updated. That all sounds like a lot of unknowns in terms of how soon this can happen and, if we delayed the transition release, it would not be clear when the new transition date would be. Also concerns about reverting the zero filling being semver-major implies to be that we should then only revert as a security fix (i.e. in a security release). We have existing provisions for security fixes that are breaking (i.e. normally semver-major) landing in a semver-minor security release (ideally with a |
#60430 should fix that concern
The problem already happened, we are already in an unoptimal state Fixing it now would be much better for the ecosystem then disabling zero-fill in an LTS
It is definitely not a security fix. It's the opposite - disabling zero-fill will introduce security issues
|
|
Let's say for the sake of argument then that we do agree (I'm not sure I do) that we need to hold up the LTS transition. So we would need to push out fixes into a Node.js 25 release and then wait two weeks before they could go out in a delayed LTS transition. The other worry about delaying the LTS transition is that the transition date has been baked into the release schedule.json for over two years and people are just going to assume that Node.js 24 is LTS once the date (28 October) passes. cc @nodejs/releasers |
|
@ChALkeR How would you feel about this release happening tomorrow without code changes but messaging in the changelog/release blog post that the behaviour would change as a "bug fix" in a subsequent release? That could draw people's attention to the issue and potentially give them time to evaluate their own code. |
|
@richardlau Which percentage of users/lib authors would you expect to read those release notes?
This is actually a very good concern... The problem is what to do if 24 LTS doesn't get it In two weeks, a large portion of the ecosystem will update to a version that zero-fills...
Also a good concern! Delaying for two weeks doesn't seem to be a viable option |
How fast can a fix + #60430 get in if LTS is cut tomorrow without it and includes some messaging about this? |
|
Just a random person passing by. IMHO, the worst decision is to have zero-filling allocUnsafe in v24 medium-to-long term. UPD: Everybody upgrading to the latest LTS (especially from v22) should read the notes, changes are quite big. |
Node.js 25 is scheduled to have a release this week (also tomorrow, but would have less expectations on exact dates). If the fix(es) can get into that then the usual policy would be two weeks after the Node.js 25 release containing the fixes went out. |
|
Reverting zero-filling in an LTS version a month after labeling it LTS is a huge security problem... |
|
I believe we should proceed with the release. It doesnt seem to me a compelling reason enough to block, we can fix it in the next patch |
@marco-ippolito how exactly and in what timeline? |
|
Re. my concerns over the "two weeks in current before LTS" policy, assuming the fix(es) can get into #60436 and that releases tomorrow (or in the next few days) then we're looking at two week's time (i.e. 11 November) to release in Node.js 24 LTS. There appears to be some disagreement in #60423 as to whether reverting the zero-filling is semver-major or patch. If it is semver-major then we likely cannot revert in Node.js 24 (as 24.0.0 was the semver-major release -- any semver-major related reverts have always been within a few weeks of the *.0.0 release). The LTS transition release is not a mechanism for landing semver-majors in a release line. My preference is still to release Node.js 24.11.0 as the LTS transition tomorrow (28 October) as planned, and then either a patch release in two weeks (around 11 November) containing the revert or we never revert at all (and live with the performance penalty). I am still not convinced there is a compelling case to delay the LTS transition. If people want words/warnings/communication to go out in the release blog post or migration document please suggest appropriate words. |
|
What is the performance impact for realistic loads? |
IMHO, reverting zero-filling in allocUnsafe can be classified as a bugfix, meaning it is a patch. |
|
If there's any code or library (and there is, as demonstrated) that has a security issue because of incorrect usage of If 24 LTS ships initially with zero-filled I can see this could have been a problem if the zero-fill behavior has been in Node.js for years, and changing this behavior would suddenly make existing non-vulnerable code become vulnerable for millions or thousands of users. However, in this case, releasing LTS initially with zero-fill behavior won't suddenly bring the ecosystem to a vulnerable state. In my opinion existing applications moving from pre-24 Node.js to 24 LTS is inconsequential of the zero-fill behavior. If they had already existing vulnerable code, they'd stay vulnerable regardless, with just a slight chance of having a blip of an non-vulnerable period. The "risk" of locking-in on the "safe" version and gaining a false sense of security feels like a quite improbable scenario — it would require someone actively checking to gain any sense security in the first place —probably the same kind person that reads docs, release notes, and understand how I'd even wager that any chatter around the flip-flopping of this behavior would actually spur some action into checking and fixing existing security issues. |
Currently, yes. As mentioned earlier, I think if we get this in now it should be likely fine as the usage of 24 is still relatively low. Even if an LTS version is initially released with zero-fill and then patched in the next few days with proper messaging, it would be effectively the same. #60414 (comment) #60414 (comment) drew timeline of about three weeks+, which is more concerning, as by then a major part of users will update already and start building stuff. 22.x LTS transition was rapid (3.5x in a month) |
Yeah, but even if it's a month, I wouldn't say it's a big deal. It's not like people will suddenly start building things with a newfound discovery that
|
|
I happened to check on this issue for a completely unrelated reason, and stumbled into this unexpected drama. I should have just ignored it, but I'm a child in an adult's body, so I ended up writing two-and-a-half rather lengthy responses to "someone," first more vehement, then less vehement, and finally about halfway back to more vehement. However, I'm going to strive diligently now to at least pretend that I somewhat resemble something approximately mistakable for an adult, if you're not looking too hard anyway, and just leave all that noise unsaid. Instead, I will confine myself to an alternative comment. Let me offer my thanks to the core Node.js developers for handling this situation in what now looks like it will probably be a sane fashion. In real life everything is always messy, and clinging too hard to theoretical rules to please angels dancing on the heads of pins is often the worst option. In this case I believe the overall best interest of both JS devs and end users would be to continue with the v24 release and LTS transition as normal, call out this allocUnsafe zero-fill matter in the blog post, and then treat the fix as semver-minor or simply a bugfix. Just push it out to v25 and then v24 like you would any other commit, so it will only take a month to get fixed in v24. Or squeeze in an extra v24 release after two weeks if you really want to, but I doubt more than one single person on earth cares too much. And some peeps will always find another molehill to surmount as if the spiritual heirs of Tenz & Ed, so ya just can't please everybody. It appears that this is exactly how you are likely to proceed. So let me just say, hopefully on behalf of a more general and representative audience of your users... THANK YOU! |
|
Given the fix exists and is reviewed and landed (thanks, @joyeecheung!) I would suggest to get the change into LTS asap, as initially proposed in #60414 (comment), and not waiting for two weeks Not necessary in the very first release (if that is not possible), but at least shortly after it Waiting is just a rule of thumb here that should be bypassable with a TSC decision Turning the zero-filling off two-three weeks into LTS timeline is most likely worse / more risky than bypassing a rule which entire point is to ensure stability, not reduce it
Upd: I consider it a breaking change, but it's better to do that earlier and not later into LTS timeline for that reason |
This comment was marked as off-topic.
This comment was marked as off-topic.
Notable changes: This release marks the transition of Node.js 24.x into Long Term Support (LTS) with the codename 'Krypton'. It will continue to receive updates through to the end of April 2028. Other than updating metadata, such as the `process.release` object, to reflect that the release is LTS, no further changes from Node.js 24.10.0 are included. PR-URL: #60414
Transition Node.js 24 to Active Long Term Support (LTS). Also update status of all in support release lines. Refs: nodejs/node#60414 Refs: nodejs/nodejs-latest-linker#20
* Blog: v24.11.0 release post Refs: nodejs/node#60414 * fixup! Blog: v24.11.0 release post Co-authored-by: Nikita Skovoroda <[email protected]> Signed-off-by: Richard Lau <[email protected]> --------- Signed-off-by: Richard Lau <[email protected]> Co-authored-by: Nikita Skovoroda <[email protected]>
|
@richardlau |
2025-10-28, Version 24.11.0 'Krypton' (LTS), @richardlau
Notable Changes
This release marks the transition of Node.js 24.x into Long Term Support (LTS)
with the codename 'Krypton'. It will continue to receive updates through to
the end of April 2028.
Other than updating metadata, such as the
process.releaseobject, to reflectthat the release is LTS, no further changes from Node.js 24.10.0 are included.
Checklist
Pre-release:
lts-watch-v24.xlabelDay of release:
userland-migration): make up to date nodejs.org#8053