-
Notifications
You must be signed in to change notification settings - Fork 29.7k
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
Ready to upgrade to V8 4.2? #1393
Comments
+1. Are there any semver major PRs remaining that can go into the Are there nightlies or anything for the |
nightlies for |
@rvagg I'd be glad to offer help if you can use it. |
@iojs/build / @Fishrock123 I've adjusted iojs+release+nightly on Jenkins to take an additional parameter: First nightly built using this has landed here: https://iojs.org/download/next-nightly/ and the rest will go in the same place.
"use strict"
class Dude {
constructor() {
this.rnd = Math.random()
}
toString() {
return 'Whoooooooa dude!'
}
}
class Whoa extends Dude {
constructor() {
super()
console.log(`
Java me up scotty!
${ JSON.stringify(process.versions) }
${ JSON.stringify(this.derp('foo', 'bar')) }
${ this }
`)
}
derp(...args) {
return {
[this.rnd]: 'eh?'
, [args[0]]: args[1]
}
}
}
new Whoa()
Wait, what language is this? /cc @iojs/evangelism |
@othiym23 does npm not like my extended prerelease here?
|
yay! v8 4.2 shipped |
I thought M43 already branched |
@rvagg I think npm sometimes warns for pre-releases.
oooo, 4.2 supports spread by default? :D Edit: is that just |
+1 |
Looking forward 👍 |
+1 been using classes with the harmony flag for quite a while, code is much cleaner, and it still retains all the prototypal stuff internally, best of both worlds. What else is delivered along with 4.2? anybody's got a link to the list? |
Classes and object literals are no longer behind a flag. Rest parameters, computed property names and Unicode escapes ( Preliminary support for strong mode (tracking bug). |
👍 Really looking forward to this!! Can promises be subclassed with the new V8? |
Promises can already be subclassed even in current V8. |
@rlidwka Thanks! my bad, didn't know I could do that in the current V8. |
@bnoordhuis thanks mate! |
Time has come! Chrome 42 finally released. |
From our roadmap/policy on versioning: and my understanding is that there are no breaking changes in this version of V8 so this there isn't really a justification in a 1.8 unless we're pulling in other breaking changes. But I'd like to hear opinions from @kkoopa and @bnoordhuis on this. 4.3 is looking more like the breaking-change nightmare that we're used to from V8 however. |
We are hopefully going to finally revert the floating patch we have on top of V8 that is in place to avoid breaking changes. |
@rvagg we'd have to major anyways since it's an ABI change... (Which, for the record, is really silly.) |
but that's the point of that clause in ROADMAP.md, NAN should be able to deal with this ABI change as far as I understand so it'd be a minor bump in NAN and a minor bump here |
I thought NAN only dealt with API, not ABI. |
Argument made is that people should 100% never have to recompile addons outside of majors. |
I seem to have missed that discussion, where is that specified? That sounds like a major every 6 weeks thanks to the V8 team's preference for shuffling the deckchairs with every release. |
it's not specified in any one place, it's just been the pervading argument in discussions.
Yeah. |
Well, since this isn't in any of our official documentation then it's not going to drive versioning decisions as far as I'm concerned. So if anyone (@iojs/collaborators) feels strongly enough about the argument that "people should 100% never have to recompile addons outside of majors" then you'd better PR that to the Stability Policy section of ROADMAP.md otherwise this next release with V8 4.2 will be 1.8 rather than 2.0 (unless a semver-major gets in too). |
also /cc @mikeal since he wrote most of the base Stability Policy section of ROADMAP.md. |
I realize that native modules require V8's API, but requiring complete ABI compatibility for all dependencies OR require major release seems excessive. As long as they can recompile without an issue I don't see the need for a major release. |
I have not tested v8 4.2 yet, but according to the changelog there should not be any issues. Only important change mentioned is that support for signatures with arguments was removed. I don't believe anyone was ever using this, apart from our tests, so its removal should be fairly uncontroversial. nodejs/nan#309 It's not worth bumping NAN major for this either. That might come around when v8 4.3 becomes actual, as everything will break then, which is a good opportunity to make breaking changes. |
+1 |
Is classes support stable enough yet? The following two snippets work with io.js 1.7.1 (with "use strict";
class A { }
class B extends A {
constructor () {
this; // Babel throws error: 'this' is not allowed before super()
}
} "use strict";
class A { }
class B extends A {
constructor () {
// Babel throws error: Derived constructor must call super()
}
} |
The ES6 spec lists that behavior under "runtime behavior". Not sure who is right here (not an expert in reading the spec). But when instantiating
This seems to match the behavior described in the spec (e.g. https://people.mozilla.org/~jorendorff/es6-draft.html#sec-super-keyword-runtime-semantics-evaluation). |
Ah, I didn't test with the nightly - you are right, V8's behavior seems fine then. |
Yes, best not to test the previous release when wondering whether the upcoming release has the correct semantics :) |
Yeah, if we're going to have a major release every 6 weeks, no one will seriously consider io.js for stable apps that should require minimal maintenance after finishing. No one wants to fix issues related to various breaking changes every 6 weeks...
Is there sth I could read about what's going to change there so drastically? |
@mzgol does chrome that releases every 6 weeks feels unstable to you? |
@YuriSolovyov Chrome doesn't follow semver, its versions aren't even in the semver format (it has 4 numbers). Also, major Chrome releases generally don't break JS APIs because ECMAScript is trying to be as backwards compatible as possible. |
Well, if all that's needed is |
The v8 changelog usually lists what has changed. The major thing this time around will be introduction of the maybe monad and making every function return them (but nothing takes them as arguments, making it all rather useless) nodejs/nan#310 |
With dedicated build servers ABI breaking is kind-of-a-big-deal because the current assumption (coming from node 0.8 and 0.10) is that building on a different node version than running the app is fine. |
@jkrems You can check |
@trevnorris The setup we have is dedicated build servers creating artifacts that are then just copied to target app hosts. The build host have a compiler chain installed, the app hosts do not. Right now (with node 0.10) it doesn't matter that the patch version of the app host matches the build host. E.g. we can build on 0.10.33 and copy the artifact to a host running 0.10.36. Arguably it would be better not to have global node versions on the build hosts and always building against an exact match and/or including node in the artifact (e.g. via a container). Just describing our current setup. Not sure how common this kind of flow is. |
You should never experience ABI brake in a patch version. The discussion here is whether to increment major or minor. |
Sorry, maybe calling out node "0.8 vs. 0.10" was misleading in this regard - for me "0.8 vs. 0.10" was a major bump (according to semver rules). And node patch versions were "minor bumps" from time to time. My concern here is less about "should ABI bump minor or major" and more about "having a reliable list of what io.js versions are ABI compatible". Given the frequency of minor bumps, assuming that minor bumps break ABI in general seems to be pretty close to assuming that every version breaks ABI. In terms of how helpful it is for reducing maintenance overhead. |
I suppose, but it'd basically only be for v8. |
In terms of ABI compatibility I don't see how that makes a difference - either the ABI is compatible or it's not. It doesn't matter how many errors there are, it's all or nothing. If the assumption is that ABI will break every few weeks and this kind of process (having fixed build server versions that might differ from app server versions) won't be supported, then that's fine. Just wanted to bring it up. :) I'm all for getting v8 upgrades out as quickly as possible. |
@jkrems good idea. That sounds like a documentation thing. Though probably easier if it lived on the wiki then in official docs? |
4.2 has landed in |
Counting down the weeks, Chrome 42 should be coming out any day now... That means it's time for V8 4.2!
#1026 was the last discussion. Looks like this will require a 2.x since everyone will need to recompile their addons?
Selflishly, I want this ASAP... Native classes will be huuuge.
The text was updated successfully, but these errors were encountered: