-
Notifications
You must be signed in to change notification settings - Fork 29.9k
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
Release proposal: v3.0.0 #1807
Comments
First release candidate for testing: https://iojs.org/download/next-nightly/v2.1.1-next-nightly2015052770716fdd93/ |
Next seems to fail consistently on an arm7: https://jenkins-iojs.nodesource.com/job/iojs+any-pr+multi/nodes=armv7-wheezy/714/tapTestReport/test.tap-180/ -- might be a pr/issue for it somewhere. If that's the case, sorry for not searching properly. |
not consistent, but probably about as consistent as the OSX one, see https://jenkins-iojs.nodesource.com/job/iojs+any-pr+multi/713/ for a successful one for example |
@rvagg I'm working on finishing the If it is, I'll give you a full list of any API changes that come with it. Though it will be behind a flag, so one one should immediately feel it. |
Yes, every single native addon ever written will need extensive rewriting and it cannot really be automated in a sensible way. Every npm package depending on a native addon will also need updating to pull in the new versions from their upstreams. In total, 64 000 packages may need updating. This is way worse than those crummy |
@kkoopa what's the status of NAN for this? Is it having to wait for 2.0 to make this work? Got an ETA on that (sorry, I've been following but a little detached atm) |
Definitely 2.0, there is not a snowball's chance in hell of NAN 1.x working on io.js 3.0. nan/next builds against iojs/next. What is missing is mostly documentation and a conversion script. The sooner someone writes this, the sooner it can be released. |
My humble suggestion: Maybe it is time to consider adding and maintaining a Foreign Function Interface (FFI) in the core? Something like the node-ffi provides. Not as a replacement for current addon system, but as a less volatile alternative. That wouldn't help the immediate package breakage |
@kkoopa Thanks, missed the FFI PR. Hope it goes through. Soon. |
Simply adding FFI still won't solve anything for many years to come, as people want their addons running on many versions of Node. |
I just hope this doesn't turn in to Python |
The problem with Python 2 vs Python 3 was that they kept on supporting Python 2 and even adding new features to it. They should have cut it off completely and let it die quickly and Python 2 would have died off within a year. Python 2 is strictly inferior to Python 3 and it is a shame that it is still in use. |
Agreed. My 👍 goes for the incredible and fast progress io.js makes. An outstanding team behind it. At the same time I'm also bit worried about the quickly progressing fragmentation of packages only supporting If important enough people outside the core start making choices like "oh, we are going to stick with 2.x.x because 3.x.x migration has been marginal" then it spells Python-like trouble for Node. |
In that case they will eventually get forked and updated by someone else with enough desire to support the future. Unlike the Python transition, by using NAN this will still be backwards compatible once updated, so the only reason for not updating is lack of motivation. Also, while I don't have any figures, I'd imagine that the number of people using io.js 3 will be significantly less than those using any previous release since Node 0.8. For them, there is no imminent need to update every package under the sun the instant a new version is released. It will eventually happen in a gradual fashion as pressure builds up from io.js 3 users. Also, io.js 2 was a bit of an anomaly in the sense that it was already known that all of this breakage would happen with the release of 3.0 a couple of weeks later, but that's what you get if you insist on releasing a new (major) version every time a dependency is updated every six weeks. There will be more breaking changes in another six weeks when io.js 4.0 is released with V8 4.4. I've tried to make sure all of this is accounted for already with the release of io.js 3.0 and NAN 2.0, to prevent such avoidable breakage, but unless packages take this into account when updating for io.js 3.0, some of them will have more fixing to do for 4.0. If this release-a-new-major-every-six-weeks-thing is going to continue, it would be advisable to document what is known to break in future updates. |
It may be worthwhile looking at our plans for LTS: https://github.com/nodejs/LTS/issues Most modules should probably turn to future LTS for what versions(s) they support, except for modules that want to stay ontop of master. It's likely that the 2.x io.js line won't have one and will be recommended not to have one. |
FWIW I also think it is quite important to get the new Buffer impl (flagged or not) into 3.0.0 |
Where does that 64K packages metric come from? Is that the deep dependency analysis of all |
Why hold up on Buffer? Especially since it's flagged, we should be fine introducing in 3.1. Seems like a pretty clear "don't hold the train" scenario. |
Just putting this out there, is there a compelling reason to take the new v8 this time around knowing that we're going to have another big round of breakage for the next one? |
It touches a lot of the codebase, I talked to @trevnorris about this and he wasn't particularly comfortable with doing it that way. |
Ah ok, I figured since it was behind a flag the impact would be minimal, but I can believe maybe not. |
You mean update to v4.3? If we want to get the new Buffer implementation into the wild then absolutely. We can't until at least that version.
I'm trying my best to make sure that doesn't happen. The patch is almost ready for review. Reason is because I'm super (possibly overly) cautious about changes to Buffer. Since so much other code relies on it, any hiccup has a strong ripple effects. And even though it's behind a flag, I've had to conditionally change logic for almost every Buffer method. That's the part that makes me nervous. But if while under review other maintainers say it's fine for release in a minor then I won't prevent that from happening. |
We could continue to do that through RC releases of the next branch for now though right? The thing is, if this breaks the whole native ecosystem this much it won't end up getting much more use than the RC releases get anyway. |
V8 4.2 was the update that should not have been taken, especially since it was late already. |
@mikeal If V8 isn't being updated then there's no need for a v3.0 release until we upgrade to v4.4, correct? |
I want 4.3 badly to fix many vm bugs #1773. 3.0 now. jsdom wants badly. |
Not much wrong with 4.3, but if 3.0 is to be released, it should be in a state where it essentially works with V8 4.4 too, so as to avoid doing all of this again in six weeks. We all already know exactly what is in V8 4.4 and what is not. Essentially, don't release a new major until the next branch has been updated and at least compiles. |
Will this include the DNS changes #1843? I'd really like to see that. |
@snsparrish Unlikely. There are still some things that need to be discussed design-wise and feature-wise. |
I took a detour on my way to RC builds: #1938, we'll get 3.0.0 out soon! |
I think it may be good to do a 2.3.0 beforehand. #1939 |
@miketheprogrammer The "developers of products" I'm referring to aren't on this thread. They are the people @mikeal is passionate about:
I share those goals. I think Node (the JS stack) represents a real revolution not just for developers but for citizens, freedom, and capitalism. An unreliable Node depresses that success. And there is a technical point to be made here, which came to mind while reading Leslie Lamport's recent Turing Lecture "The Computer Science of Concurrency: The Early Years" (http://bit.ly/1GjdHPn). I refer to the following passage:
I really believe locking the STDLIB soon and focusing all efforts on increasing the quality and depth of npm packages is the best way forward. I hesitate to support threads or a new Promise API (in Node core) or anything else that delays stability and degrades predictability. I just hope that many on this list believe the innovation that Node is driving does not descend from the API, but from trust in Node's ability to persist into the long future, and in the kind of high-speed, networked, data-driven software it promotes and simplifies. Side note: V8 is a Google product whose priorities are Google's priorities. |
@sandro-pasquali you say really good words about the node community at large. However, the major discussion here is V8, on which we highly depend on. Locking it down (like node 0.10) make little sense from a performance and security point of view. The key point of discussion is here is how to manage this change, which we all feel is inevitable. |
I forget, should the next branch be rebased on master merge master into next? I can take care of this on Monday. |
Can I suggest we hold off v3.x a little longer until V8 4.4 goes gold? We're already delayed so much that another week or two won't matter much. I can PR an upgrade to 4.4. /cc @chrisdickinson |
Given that 3.x is blocked on nan and stuff anyway that seems fine. But we should upgrade to 4.4 and get all our ducks in a row so that the moment 4.4 drops we can ship 3.0.0. Hopefully the 1-2 weeks until that happens are enough for nan to get its stuff together. |
What's the policy on which V8 versions to follow? V8 4.5.x has been shipping with a whole bunch of ES6 features people have been waiting for (arrow functions, just to name my favorite addition). |
@ronkorving I believe it's still unstable. master branch stays on the stable release. |
Understood. Sorry, Ben already explained to me how this works. I'll have to be patient :) |
stable means “the version in the currently stable chromium”, right? that means upgrading to 4.5 can happen once chromium 45 gets stable? |
Yes. It just branched https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/14zoZnUu5Oc so I'd anticipate another 6-8 weeks. |
great, one doesn’t see an ETA often in the world of open source! |
Chrome 44 stable just went out, which means V8 4.4 is stable. |
4.4 doesn’t seem to have any new ES6 features, though 😊 https://gist.github.com/flying-sheep/02064095595db1f26c11 |
It does - it adds support for computed properties, computed shorthand Michał Gołębiowski |
@flying-sheep true, but it now ships at least two new features:
|
according to the changelog (the thing i linked is simply the filtered original changelog) computed properties are in 4.2 already. btw i don’t want to argue about anything, i just wanted to show you the filtered changelog since i found it interesting 😄 |
Maybe the initial code was in but it definitely wasn't enabled by default. They're in 4.4, they weren't in 4.3. The changelog is apparently not 100% accurate. |
got it, thanks! |
3.0.0 was released in #2299, closing. |
Currently this is a tracking PR for a 3.0.0 release, some discussion continues on from #1805. This proposal doesn't have a timeframe yet, there are too many unknowns at this stage but we may be able to proceed fairly quickly if things come together nicely.
To be honest I'm not sure exactly what the
semver-major
here is except for the V8 upgrade and I don't know the details about what's breaking in the C++ API there, perhaps @kkoopa, @bnoordhuis or @trevnorris could fill us in on the details of the breakage for the CHANGELOG? Is this the one where we get all theMaybe*
API drama that's going to hurt for everyone?V8 on the
next
branch is currently at 4.3.61.21, the CHANGELOG for that is at https://chromium.googlesource.com/v8/v8/+/4.3.61/ChangeLogThe only things on the JS side from scanning the changelog that may be relevant are:
@domenic could I put it on your TODO list to give us a summary of what's changed on the JavaScript end, if anything?
One outstanding item of concern is that I got multiple failures of test-debug-port-from-cmdline.js on OSX, caused by a hanging background process listening on the debug port--I don't know if it was this test on a previous run that caused that hanging process or not, however. If this keeps on showing up then it'll have to hold up a release until we find a fix.
Current log of commits is as follows, but I expect us to get a v2.1.1 out so this will change.
70716fdd93
] - deps: backport 7b24219346 from v8 upstream (Rod Vagg) #1805b65f1ce278
] - deps: update v8 to 4.3.61.21 (Chris Dickinson) iojs/io.js#1632eea96ee2f0
] - _Revert_ "dns: remove AI_V4MAPPED hint flag on FreeBSD" (cjihrig) iojs/io.js#1555137f38dbf1
] - doc: update v8 flags in man page (Michaël Zasso) iojs/io.js#170198649fd31a
] - doc: add documentation for AtExit hook (Steve Sharp) #1014eb1856dfd1
] - doc: clarify stability of fs.watch and relatives (Rich Trott) #1775a74c2c9458
] - doc: state url decoding behavior (Josh Gummersall) #1731ba76a9d872
] - doc: remove bad semver-major entry from CHANGELOG (Rod Vagg) #1782a6a3f8c78d
] - doc: fix changelog s/2.0.3/2.1.0 (Rod Vagg)1eec5f091a
] - http: simplify code and remove unused properties (Brian White) #15725abd4ac079
] - lib: simplify nextTick() usage (Brian White) #1612853a2b3622
] - net: do not set V4MAPPED on FreeBSD (Julien Gilli) iojs/io.js#155593a44d5228
] - src: fix deferred events not working with -e (Ben Noordhuis) #1793b89fd75058
] - test: remove obsolete harmony flags (Chris Dickinson)6dfca71af0
] - test: don't lint autogenerated test/addons/doc-*/ (Ben Noordhuis) #1793c2b8b30836
] - test: remove stray copyright notices (Ben Noordhuis) #1793280fb01daf
] - test: fix deprecation warning in addons test (Ben Noordhuis) #1793The text was updated successfully, but these errors were encountered: