JavaScript
JavaScript is specified as ECMAScript by TC39, a committee of Ecma International. ECMAScript 2026 (ES2026), the 17th edition, was approved June 30, 2026, adding Math.sumPrecise, Iterator.concat, Array.fromAsync, Error.isError, new default-value methods on Map/WeakMap, and JSON.parse/JSON.rawJSON enhancements. Notably, the long-awaited Temporal API (an immutable replacement for the long-criticized Date object) did NOT make this edition — it was deferred to ES2027 at the earliest, alongside `using` and `import defer`; and the oft-cited Set methods (union/intersection/difference), RegExp.escape, and Promise.try had already shipped a year earlier, in ES2025. The spec is a free, royalty-free open standard; runtimes are licensed separately — V8 is BSD-3-Clause, Node.js is MIT. Under the hood it still runs a single-threaded event loop with prototypal (not classical) inheritance. Adoption: 66% of developers used it per Stack Overflow's 2025 survey — the most-used language in nearly every survey since 2011, with SQL the lone exception at #1 in 2013 and 2014; npm, its default registry, serves 4M+ packages to 17M+ developers. Current version/status: ECMAScript 2026 (ES2026) — 17th edition, approved by Ecma International June 30, 2026. License: Language spec (ECMA-262) is a free, royalty-free open standard from Ecma International — not license-encumbered itself. Runtimes vary: V8 = BSD-3-C
Pick JavaScript when you're shipping anything that runs in a browser — it's not a preference, it's the only language browsers natively execute, and paired with Node.js it also covers your backend so one team can own the full stack. Skip it for large, long-lived codebases where runtime type errors are unacceptable: reach for TypeScript instead, which is now the de facto standard for serious JS projects precisely because plain JS's dynamic typing lets bugs slip past review. Even TC39 acknowledges this — years of "the good parts" advice exist because loose equality, implicit coercion, and `this` binding still bite experienced developers. Known weakness: Dynamic typing and implicit coercion (loose == equality, surprising `this` binding) are long-acknowledged footguns — the core reason TypeScript, not plain JS, is now the default choice for larger codebases.