You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
nightlies for next were on my TODO list sorry, I'm obviously overstretched at the moment but I'll try and get to this ASAP cause this is pretty important (and fun)
@iojs/build / @Fishrock123 I've adjusted iojs+release+nightly on Jenkins to take an additional parameter: buildtype which can be either next or next-nightly, it's primarily used to put the nightlies into the right place and set their version name appropriately, it won't do any checks that you are giving it a commit on the next branch though so you still need to use your brain a little when making a nightly.
"use strict"classDude{constructor(){this.rnd=Math.random()}toString(){return'Whoooooooa dude!'}}classWhoaextendsDude{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]}}}newWhoa()
Java me up scotty!
{"http_parser":"2.3.0","node":"2.0.0-next-nightly2015041138225a7203","v8":"4.2.77.13","uv":"1.4.2","zlib":"1.2.8","ares":"1.10.0-DEV","modules":"44","openssl":"1.0.1m"}
{"0.6709401244297624":"eh?","foo":"bar"}
Whoooooooa dude!
+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?
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 ('\u{xxxx}') are new and behind flags. There is a separate flag for Unicode escapes in regular expressions.
@mzgol does chrome that releases every 6 weeks feels unstable to you?
Also, breaking ABI does not nessesairly mean apps breakage, npm rebuild is not so hard to do.
At last, if you can't update every 6 weeks, it is fine, just stay at release that works for you, thought you might miss security patches, but they may also break ABI, so choice is yours.
@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.
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. npm rebuild only works if the whole compiler chain is installed on the host - which isn't necessarily true on application hosts. If there's not major bump, it would be great to have some other visible sign for "you can just copy the artifact between hosts". Maybe a wiki page with a list of ABI compatible versions would be enough?
@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.
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.
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.
Activity
cjihrig commentedon Apr 10, 2015
+1. Are there any semver major PRs remaining that can go into the
nextbranch?Are there nightlies or anything for the
nextbranch? If not, some sort of preview release would be nice.rvagg commentedon Apr 11, 2015
nightlies for
nextwere on my TODO list sorry, I'm obviously overstretched at the moment but I'll try and get to this ASAP cause this is pretty important (and fun)cjihrig commentedon Apr 11, 2015
@rvagg I'd be glad to offer help if you can use it.
rvagg commentedon Apr 11, 2015
@iojs/build / @Fishrock123 I've adjusted iojs+release+nightly on Jenkins to take an additional parameter:
buildtypewhich can be eithernextornext-nightly, it's primarily used to put the nightlies into the right place and set their version name appropriately, it won't do any checks that you are giving it a commit on thenextbranch though so you still need to use your brain a little when making a nightly.First nightly built using this has landed here: https://iojs.org/download/next-nightly/ and the rest will go in the same place.
Wait, what language is this?
/cc @iojs/evangelism
rvagg commentedon Apr 11, 2015
@othiym23 does npm not like my extended prerelease here?
yosuke-furukawa commentedon Apr 11, 2015
yay! v8 4.2 shipped
classsyntax by default.YurySolovyov commentedon Apr 11, 2015
I thought M43 already branched
Fishrock123 commentedon Apr 11, 2015
@rvagg I think npm sometimes warns for pre-releases.
oooo, 4.2 supports spread by default? :D
Edit: is that just
--harmony-rest-parameters?bricss commentedon Apr 11, 2015
+1
leecade commentedon Apr 12, 2015
Looking forward 👍
shekhei commentedon Apr 12, 2015
+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?
bnoordhuis commentedon Apr 12, 2015
Classes and object literals are no longer behind a flag.
Rest parameters, computed property names and Unicode escapes (
'\u{xxxx}') are new and behind flags. There is a separate flag for Unicode escapes in regular expressions.Preliminary support for strong mode (tracking bug).
hrishikeshs commentedon Apr 12, 2015
👍 Really looking forward to this!! Can promises be subclassed with the new V8?
24 remaining items
YurySolovyov commentedon Apr 17, 2015
@mzgol does chrome that releases every 6 weeks feels unstable to you?
Also, breaking ABI does not nessesairly mean apps breakage,
npm rebuildis not so hard to do.At last, if you can't update every 6 weeks, it is fine, just stay at release that works for you, thought you might miss security patches, but they may also break ABI, so choice is yours.
mgol commentedon Apr 17, 2015
@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.
mgol commentedon Apr 17, 2015
Well, if all that's needed is
npm rebuildthen it may not be worth bumping the major, saving it for changes that will require changes in the code.kkoopa commentedon Apr 17, 2015
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
hybrist commentedon Apr 20, 2015
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.
npm rebuildonly works if the whole compiler chain is installed on the host - which isn't necessarily true on application hosts. If there's not major bump, it would be great to have some other visible sign for "you can just copy the artifact between hosts". Maybe a wiki page with a list of ABI compatible versions would be enough?trevnorris commentedon Apr 20, 2015
@jkrems You can check
NODE_MODULE_VERSIONwithin your modules, though that might not be what you're looking for?hybrist commentedon Apr 20, 2015
@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.
trevnorris commentedon Apr 20, 2015
You should never experience ABI brake in a patch version. The discussion here is whether to increment major or minor.
hybrist commentedon Apr 20, 2015
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.
Fishrock123 commentedon Apr 20, 2015
I suppose, but it'd basically only be for v8.
hybrist commentedon Apr 20, 2015
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.
trevnorris commentedon Apr 20, 2015
@jkrems good idea. That sounds like a documentation thing. Though probably easier if it lived on the wiki then in official docs?
Fishrock123 commentedon Apr 29, 2015
4.2 has landed in
masteras per #1506