Interop with systems that use 64b ints is not a .001% issue. On Sun, Mar 18, 2018, 11:40 AM Anders Rundgren < [email protected]> wrote:
> On 2018-03-18 15:47, Michał Wadas wrote: > > JSON supports arbitrary precision numbers that can't be properly > > represented as 64 bit floats. This includes numbers like eg. 1e9999 or > 1/1e9999. > > rfc7159: > Since software that implements > IEEE 754-2008 binary64 (double precision) numbers [IEEE754] is > generally available and widely used, good interoperability can be > achieved by implementations that expect no more precision or range > than these provide, in the sense that implementations will > approximate JSON numbers within the expected precision > > If interoperability is not an issue you are free to do whatever you feel > useful. > Targeting a 0.001% customer base with standards, I gladly leave to others > to cater for. > > The de-facto standard featured in any number of applications, is putting > unusual/binary/whatever stuff in text strings. > > Anders > > > > > > > On Sun, 18 Mar 2018, 15:30 Anders Rundgren, < > [email protected] <mailto:[email protected]>> > wrote: > > > > On 2018-03-18 15:08, Richard Gibson wrote: > >> On Sunday, March 18, 2018, Anders Rundgren < > [email protected] <mailto:[email protected]>> > wrote: > >> > >> On 2018-03-16 20:24, Richard Gibson wrote: > >>> Though ECMAScript JSON.stringify may suffice for certain > Javascript-centric use cases or otherwise restricted subsets thereof as > addressed by JOSE, it is not suitable for producing canonical/hashable/etc. > JSON, which requires a fully general solution such as [1]. Both its number > serialization [2] and string serialization [3] specify aspects that harm > compatibility (the former having arbitrary branches dependent upon the > value of numbers, the latter being capable of producing invalid UTF-8 octet > sequences that represent unpaired surrogate code points—unacceptable for > exchange outside of a closed ecosystem [4]). JSON is a general > /language-agnostic/interchange format, and ECMAScript JSON.stringify is > *not*a JSON canonicalization solution. > >>> > >>> [1]: _http://gibson042.github.io/canonicaljson-spec/_ > >>> [2]: > http://ecma-international.org/ecma-262/7.0/#sec-tostring-applied-to-the-number-type > >>> [3]: > http://ecma-international.org/ecma-262/7.0/#sec-quotejsonstring > >>> [4]: https://tools.ietf.org/html/rfc8259#section-8.1 > >> > >> Richard, I may be wrong but AFAICT, our respective > canoncalization schemes are in fact principally IDENTICAL. > >> > >> > >> In that they have the same goal, yes. In that they both achieve > that goal, no. I'm not married to choices like exponential notation and > uppercase escapes, but a JSON canonicalization scheme MUST cover all of > JSON. > > > > Here it gets interesting... What in JSON cannot be expressed > through JS and JSON.stringify()? > > > >> That the number serialization provided by JSON.stringify() is > unacceptable, is not generally taken as a fact. I also think it looks a > bit weird, but that's just a matter of esthetics. Compatibility is an > entirely different issue. > >> > >> > >> I concede this point. The modified algorithm is sufficient, but > note that a canonicalization scheme will remain static even if ECMAScript > changes. > > > > Agreed. > > > >> > >> Sorting on Unicode Code Points is of course "technically 100% > right" but strictly put not necessary. > >> > >> > >> Certain scenarios call for different systems to _independently_ > generate equivalent data structures, and it is a necessary property of > canonical serialization that it yields identical results for equivalent > data structures. JSON does not specify significance of object member > ordering, so member ordering does not distinguish otherwise equivalent > objects, so canonicalization MUST specify member ordering that is > deterministic with respect to all valid data. > > > > Violently agree but do not understand (I guess I'm just dumb...) why > (for example) sorting on UCS2/UTF-16 Code Units would not achieve the same > goal (although the result would differ). > > > >> > >> Your claim about uppercase Unicode escapes is incorrect, there > is no such requirement: > >> > >> https://tools.ietf.org/html/rfc8259#section-7 > >> > >> I don't recall ever making a claim about uppercase Unicode escapes, > other than observing that it is the preferred form for examples in the JSON > RFCs... what are you talking about? > > > > You're right, I found it it in the > https://gibson042.github.io/canonicaljson-spec/#changelog > > > > Thanx, > > Anders > > > > _______________________________________________ > > es-discuss mailing list > > [email protected] <mailto:[email protected]> > > https://mail.mozilla.org/listinfo/es-discuss > > > > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

