HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
tc39
ecma262
HTML2015–2026
tc39 / ecma262

ecma262

Status, process, and documents for ECMA-262

44Distinct people
46Mentions
1Explicit recommenders
15.7KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Status, process, and documents for ECMA-262

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

It would be interesting if browsers supported more languages but I don't mind the monoculture. I have spent a lot of time investing in languages, frameworks and tools, so much…

benoau used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 3:56:07 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year46 dated mentions

Observed mentions: 2015-05-22 08:40:24 UTC to 2026-10-29 16:46:08 UTC.

02468102015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 5 mentions; 1 submissions, 4 comments20152016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 9 mentions; 1 submissions, 8 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 7 mentions; 3 submissions, 4 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 7 mentions; 3 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 4 mentions; 1 submissions, 3 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 2 mentions; 2 submissions, 0 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC514
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC918
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC734
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC734
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC413
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC303
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC202
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC303
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC220
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC110
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC202
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC101

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
ECMAScript This repo This repository contains the source for the current draft of ECMA-262, the ECMAScript® Language Specification. This source is processed to obtain a human-readable version, which you can view here. If you want to explore how the specification was written, you can also view the source with its history in searchfox. Current Proposals Proposals follow the TC39 process and are tracked in the proposals repository. Finished Proposals Active Proposals Stage 1 Proposals Stage 0 Proposals Inactive Proposals Contributing New Proposals Please see Contributing to ECMAScript for the most up-to-date information on contributing proposals to this standard. Developing the Specification After cloning, do npm install to set up your environment. You can then do npm run build to build the spec or npm run watch to set up a continuous build. The results will appear in the out directory, which you can use npm run clean to delete. Community ES discourse: Forum for ECMAScript discussion and questions Matrix: Chat
Read the full README on GitHub

What Hacker News says

46 sources
benoau·Oct 29, 2026Recommendation phrase
It would be interesting if browsers supported more languages but I don't mind the monoculture. I have spent a lot of time investing in languages, frameworks and tools, so much of that learning is both useless and worthless today. Most of what I have mastered isn't viable to use for anything in 2026. About ten years ago I deliberately started doubling-down on JavaScript instead, it's good-enough for practically any use case and I've been able to leverage it for web, mobile, desktop, server and games. There are things other languages can do better, but I love not having to install them and manage their different versions and dependencies, and stay familiar with their idiomatic approaches, and keep up-to-date with their evolution. There are outcomes where a monoculture can be bad, but structurally I think JavaScript is in a good place - o
Read the rest
pen standard, open governance, open to proposals, massive open source culture. https://github.com/tc39/ecma262/blob/main/CONTRIBUTING.md#ne...
In The Web Can't Afford a JavaScript Runtime Monoculture
Who are "people"? How would all of this start? In terms of standard, the specs already use "ECMAScript" and don't even mention JavaScript (https://github.com/tc39/ecma262/), although TC39 website does use it frequently. I guess they could officially recommend people stop using "JavaScript", but I doubt they care. Otherwise, the petitioner Deno here is only a small part of the ecosystem and barely controls anything (and really nobody other than TC39 controls anything, which is good). They (or anyone else) can't just shout "stop saying JavaScript!" and expect people to follow. Not to mention JavaScript is a simple, easy to pronounce word compared to ECMAScript despite the baggage, which is probably why they chose it in the first place. Let's say the "JavaScript" name is officially deprecated somehow. People will continue to use the name for
Read the rest
as long as it exists. So Deno's petition tackles these problems, addresses the root cause and appears to be legally viable. That is the "right thing to do" here. Avoiding the name does not solve the problem. It never does.
In It’s time to free JavaScript (2024)
Yes, it and WeakRef are exceptions, but they are the only ones, designed to be deniable – if you delete globalThis.WeakRef; and delete globalThis.FinalizationRegistry; you go back to not exposing GC at all. WeakRef even has a special exception in the spec in that the .constructor property is optional, specifically so that handing a weak reference to some code does not necessarily enable it to create more weak references, so you can be also limited as to which objects' GC you can observe. Though another problem is that the spec does not clearly specify when an object may be collected or allow the programmer to control GC in any way, which means relying on FinalizationRegistry may lead to leaks/failure to finalize unused resources (bad, but sometimes tolerable) or worse, use-after-free bugs (outright fatal) – see e.g. https://github.com/tc
Read the rest
In JavaScript's New Superpower: Explicit Resource Management
Safari has tail-call optimisation. We don’t have it elsewhere mostly because Google: 1. Agreed to implement it [it’s in ES6] 2. Implemented and shipped it behind a flag 3. Unshipped it. 4. Proposed something else [ https://github.com/tc39/proposal-ptc-syntax ] Prior to that, Firefox had proposed a carve out for cross-realm calls, but then they didn’t bother implementing anything. While apple is against Syntactic tail calls, they’re mainly just opposed to versions of it that would remove/unrequire the tail-call optimisation they already do: https://github.com/tc39/ecma262/issues/535 For the version of it that is backwards compatible, they wouldn’t need to do anything other than ignore the syntax. Their main concern is that it "could add confusion with very little benefit."
In Tell HN: We are trying to get tail calls into the WebAssembly standard
The spec for STC has a critique of PTC: - performance - developer tools - Error.stack - cross-realm tail calls - developer intent See: https://github.com/tc39/proposal-ptc-syntax#issues-with-ptc Apple's 2016 response as to why they won't implement STC is here: https://github.com/tc39/ecma262/issues/535 - STC is part of the spec and will take too long to change. - Now that they've implemented support for PTC, they don't want to regress web pages that rely on it. - They don't want to discourage vendors from implementing PTC by agreeing to STC. - They don't want to introduce confusion. Some of these arguments about confusion and delays seem wrong hindsight, since on every point things would have been better if they'd just agreed to the compromise of STC. - It would have been part of the spec years ago - STC would have had a clear way for web
Read the rest
pages to know when tail calls could be relied on (and PTC would have been optional) - Other vendors didn't implement PTC in any case, despite no agreement on STC - There's even more confusion as things are now
In What happened to proper tail calls in JavaScript? (2021)
> Although allowed by the spec, it would be very surprising for an implementation to clear a WeakRef at a different time than it calls the FinalizationRegistry callback. (Or did we end up requiring it to be in the same tick? I can't remember. There's some restriction, maybe because the finalizer could check whether the WeakRef target is still there and you wouldn't want them to disagree?) The spec says that both clearing WeakRefs and scheduling finalization callbacks should happen at the same time: <https://tc39.es/ecma262/#sec-weakref-execution>. Of course, since that is merely ‘scheduling’, this means the callback can actually execute in some indefinite future, including never; the callback might as well be scheduled for AD 2101, with the runtime shut down long before then. It has to be done that way, because collection may happen in
Read the rest
the middle of execution, but finalization callbacks cannot possibly interrupt it. The bigger problem with the spec is that when an object becomes eligible for finalization in the first place is… not at all obvious: <https://github.com/tc39/ecma262/issues/2650>.
In JavaScript Garbage Collection with WebAssembly Is Possible Today
> The point is that all code starts as simple text, and is parsed and compiled into some lower layer Yup > What actually does the compilation is irrelevant. Nope. It is relevant. For the stuff you put between script tags there's at the very least https://github.com/tc39/ecma262 that you can look at and tell exactly what's going on with your code. With Vue (and, yes, React and Svelte and Angular): who knows? It might very well evalueate strings at runtime for all we know. > All of these JS frameworks (React+JSX, Vue+HTML, Angular, Svelte, etc) require template compilation into an actual JS render function before a browser ever runs it, Yup. It's an additional, different step before it can even get to the browser. The problem with this step is that for most of this code there's not even a coherent specification of what it is, and how it's c
Read the rest
ompiled. > and Vue's documentation already describes exactly what you can run It really doesn't. For example, here's the "documentation" on v-for: Expects: Array | Object | number | string | Iterable Expects where? Is this correct: <div v-for="{ a: 1, b: 2 }"></div> Answer: no. Because the actual description of what is expected is written in examples. Same goes for every single other directive. I mean, v-bind expects "any (with argument)" (what does this even mean?) and v-if expects "any", and both of these are false statements.
In Vue.js is Wikimedia Foundation's future JavaScript framework
The TC39 minutes are all online [1]. You can see the initial introduction of lookbehind assertions [2], the meeting where they reached stage 3 [3], a status update while waiting for more implementations [4], and then the eventual agreement to move them to stage 4 (full standardization)[5]. They reached that point because: a) everybody agreed that they were a good feature, with precedent in other languages; b) the spec text had been scrutinized by the people who like to spend time scrutinizing spec text; and c) two implementations (Moddable and V8) had successfully implemented them. That's the process, and it was followed to the letter. Does that put a burden on other engines to keep up? Sure. But that's what we signed up for. The webcompat bug you linked is from April 2020, more than two years after lookbehind assertions were standardized
Read the rest
. That's nobody's fault but ours, and we did this project so that we don't end up in a similar situation in the future. I'm not sure what your source is for JS regexps being impossible to implement from the spec, but if you have specific points of concern, you should open an issue [6]. Writing a spec is hard work, and things get missed, but the people working on this are genuinely trying their best. (As far as I can tell, Canonicalize is what everybody thought they were implementing. V8 tried to get clever with ICU and ran facefirst into some of the dark corners of Unicode.) 1: https://github.com/tc39/notes/tree/master/meetings 2: https://github.com/tc39/notes/blob/master/meetings/2016-11/n... 3: https://github.com/tc39/notes/blob/master/meetings/2017-03/m... 4: https://github.com/tc39/notes/blob/master/meetings/2017-05/m... 5: https://github.com/tc39/notes/blob/master/meetings/2018-01/j... 6: https://github.com/tc39/ecma262/issues
In A New RegExp Engine in SpiderMonkey
Yes, thank goodness for Test262. One implements JS-compliant regexps by doing the natural thing, and then making Test262 pass. Some things have indeed improved. The 'u' flag introduced in ES6 provides a much cleaner grammar for example. However the process is still busted. Here is a concrete example. /{1}/ is permitted by the ES6 spec (including Annex B). But in practice, "web browsers" rejected it. Rather than fixing the browsers, the spec was changed in ES8 to reflect "web-reality". https://github.com/tc39/ecma262/pull/303 Browsers could have become ES6 compliant here, with zero compatibility risk. But when there is non-compliance, it is the spec that moves.
In A New RegExp Engine in SpiderMonkey
The "stable Array.sort" proposal was actually made because all major browsers had switched to a stable sort implementation: https://github.com/tc39/ecma262/pull/1340 It was actually proposed by the v8 / chrome people (https://v8.dev/features/stable-sort) after they'd finally come around to implement one of the oldest v8 feature requests: https://bugs.chromium.org/p/v8/issues/detail?id=90 And stable does make for a better default than unstable: it offers stronger guarantees and more reliable behaviour. That's doubly important because by and large developers work to the implementation not the spec. And it's unlikely you'll ever change that. The last one to switch was Chakra (Edge), and that one was weird as it used a stable sort up to 512 elements, and unstable above. Funnily enough, Mozilla had originally switched to a stable sort because
Read the rest
In New Features in ES2019

Showing the 15 most recent of 46 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.