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."
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:
0b11101
and0o755
filed as #40Since ES2019, there's also:
1n
filed as #361_000
filed as #23In #23 I see that @jordanbtucker wrote this by way of explanation:
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."