json5-spec icon indicating copy to clipboard operation
json5-spec copied to clipboard

Upgrade past ECMAScript 5.1

Open dfabulich opened this issue 10 months ago • 0 comments

JSON5 is defined as "JSON for Humans," but it arbitrarily limits itself to the features available in ECMAScript 5.1.

(Except for unescaped line and paragraph separator characters. So, technically, JSON5 is compatible with ES2019.)

But there have been two other additions to JavaScript's literal syntax that would be applicable to JSON5, in between ECMAScript 5.1 and ES2019:

  • ES2015 Binary and octal literals: 0b11101 and 0o755 filed as #40
  • ES2015 Template literals filed as #34

Since ES2019, there's also:

  • ES2020 BigInt literals 1n filed as #36
  • ES2021 Separators for numeric literals 1_000 filed as #23

In #23 I see that @jordanbtucker wrote this by way of explanation:

We aim to keep JSON5 simple by only adding features from ES5. This keeps JSON5 easy to implement and prevents scope creep.

The TC-39 committee is already committed to minimizing scope creep for JavaScript. In fifteen years, there have only been five new literals introduced, all listed above.

Supporting all of the literals that the current latest version of JavaScript supports isn't "scope creep." It's committing to JSON5's true definition, "JSON for Humans."

dfabulich avatar Apr 18 '24 00:04 dfabulich