The committee is now using yearly releases, so the "newest version" is outdated every year in June. The 7th edition is ES2016, and was superseded by the 8th edition (ES2017) finalised in June 2017.
I think it would be a bit more "correct" to say that each spec is outdated as soon as it is cut :) At least no one in the committee considers the last released spec "current" -- they prefer everyone point to the github repo.
All one can say about it is that it was promoted to Stage 1 18 days ago, that the spec is not currently written, and that it has two dozen issues opened against it.
It would be more useful if in the version they could use the year that most people will likely have a browser that supports these, rather than the year they were introduced
Right. While this is an open process, and browser vendors are well aware of these when the spec is announced, the only way to enforce this in a meaningful way would be for all the vendors to coordinate... which I don't exactly see happening. There's no reason for vendors to delay a feature just because their competitors aren't ready yet.
As for availability of these two features: stable Chrome supported Array.prototype.includes in Dec 2015 and in Jul 2016; stable Firefox supported these in Dec 2015 and Mar 2017, respectively. I guess you could say that these features were widely available in 2016, _just if you use Chrome_, but that's not a satisfying answer.
It's honestly pretty irrelevant. Even if management doesn't require you to still support IE11, you're still almost certainly going to have babel in your pipeline, which means you can use brand new features before browsers support them.
The ES committee has decided to do yearly releases instead of feature-based releases. No more waiting for things to get finished; if it's not ready, it gets postponed to the next version of the standard.
Hence the official terminology is ES2015, ES2016 etc. "ES6" stayed there in dev parlance because it was the initial name while the work was in progress.
> The ES committee has decided to do yearly releases instead of feature-based releases. No more waiting for things to get finished
Indeed, and so that people understand the concept of "finished", "TC39" (ECMAScript) proposals have 5 stages:
* Stage 0 (strawman), having an idea
* Stage 1 (proposal), making a formal proposal explaining the problem, the general shape of a solution, an example high-level API, and identifying cross-cutting concerns and issues
* Stage 2 (draft) is the writing of the formal specification
* Stage 3 (candidate) is the completion of the formal specification and its sign-off by reviewers and the ECMAScript editor, no further work is possible without implementation feedback
* Stage 4 (finished) is a test262 acceptance test suite and two independent compatible implementations, the feature will be included in the next ECMAScript standard revision
If I remember correctly, the array methods `.includes`, `.every`, and `.some` were renamed because of collision with prototype.js's `.contains`, `.all`, and `.any` respectively.
Then the two implementations would probably be incompatible (different signatures, different implementation / return values) and would cause unexpected errors down the chain. So, essentially, breaking the web and making it difficult to fix it.
Would it be bad though? A lot of APIs change in the browser space. WebRTC was broken a hundred times. Libraries depending on Prototype would probably be old, maybe insecure. You need to break it from time to time, you can't be backwards compatible all the time.
Lodash switched to using includes when it became clear the standard was going to use includes. See e.g. Lodash 2 docs which had contains as the standard name, and `include` as the alias: https://lodash.com/docs/2.4.2#contains
Serious point: you should pay attention to the content of jokes. People often use them to say things they can't say. This holds true of depressed people, racist people and, I imagine, Harvey Weinstein.
They do -- but self deprecating humor is also a thing in geek circles, without necessarily pointing to some deep seated anxiety. And I'm not sure the author would appreciate people discussing his personal life because of that.
Being able to still joke about things is a good sign anyway -- even if you feel those things.
up to 12% of internet users still use IE11, and even more if you count lower versions. It will take them about a decade to upgrade to a "modern browser". There are still large companies who want browser compatibility down to IE 8.
That's not a matter of "browser compatibility" which is what GP complained about. The browsers are compatible, if you decide not to use them, you can hardly fault the browsers.
49 comments
[ 3.7 ms ] story [ 43.5 ms ] thread* async functions
* shared buffers (between workers) and atomic operations for these buffers
* additional native object methods (Object.values, Object.entries, Object.getOwnPropertyDescriptor, string padding)
* trailing commas in function argument lists (definition & callsite)
* unicode case folding in /ui
All one can say about it is that it was promoted to Stage 1 18 days ago, that the spec is not currently written, and that it has two dozen issues opened against it.
As for availability of these two features: stable Chrome supported Array.prototype.includes in Dec 2015 and in Jul 2016; stable Firefox supported these in Dec 2015 and Mar 2017, respectively. I guess you could say that these features were widely available in 2016, _just if you use Chrome_, but that's not a satisfying answer.
MDN pages:
[0] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
[1] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
Dates for corresponding browser versions drawn from the wikipedia pages:
[2] https://en.wikipedia.org/wiki/Firefox_version_history
[3] https://en.wikipedia.org/wiki/Google_Chrome_version_history
Hence the official terminology is ES2015, ES2016 etc. "ES6" stayed there in dev parlance because it was the initial name while the work was in progress.
Indeed, and so that people understand the concept of "finished", "TC39" (ECMAScript) proposals have 5 stages:
* Stage 0 (strawman), having an idea
* Stage 1 (proposal), making a formal proposal explaining the problem, the general shape of a solution, an example high-level API, and identifying cross-cutting concerns and issues
* Stage 2 (draft) is the writing of the formal specification
* Stage 3 (candidate) is the completion of the formal specification and its sign-off by reviewers and the ECMAScript editor, no further work is possible without implementation feedback
* Stage 4 (finished) is a test262 acceptance test suite and two independent compatible implementations, the feature will be included in the next ECMAScript standard revision
"Contains" is used everywhere else - the DOM API included (Element.classList.contains).
> life.includes('girlfriend') // false
That are some depressing code examples, is the author ok?
What did you expect? Louis CK?
Being able to still joke about things is a good sign anyway -- even if you feel those things.
In fact, aside from Edge which lags a bit behind (and FF 52 ESR) all of them seem to have full ES2017 support already in their latest stable.