A definition of canonical that is not tied to JavaScript's current range of values would fit into more standards than the proposal as it stands.
On Sun, Mar 18, 2018, 12:15 PM Anders Rundgren < [email protected]> wrote: > On 2018-03-18 16:47, Mike Samuel wrote: > > Interop with systems that use 64b ints is not a .001% issue. > > Certainly not but using "Number" for dealing with such data would never be > considered by for example the IETF. > > This discussion (at least from my point of view), is about creating stuff > that fits into standards. > > Anders > > > > > On Sun, Mar 18, 2018, 11:40 AM Anders Rundgren < > [email protected] <mailto:[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]> > <mailto:[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]> > <mailto:[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]> <mailto: > [email protected] <mailto:[email protected]>> > > > https://mail.mozilla.org/listinfo/es-discuss > > > > > > > _______________________________________________ > > 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

