• scarecrw@lemmy.one
    link
    fedilink
    arrow-up
    4
    ·
    edit-2
    2 months ago

    Why restrict to 54-bit signed integers? Is there some common language I’m not thinking of that has this as its limit?

    Edit: Found it myself, it’s the range where you can store an integer in a double precision float without error. I suppose that makes sense for maximum compatibility, but feels gross if we’re already identifying value types. I don’t come from a web-dev/js background, though, so maybe it makes more sense there.

    • lysdexic@programming.devOP
      link
      fedilink
      English
      arrow-up
      3
      arrow-down
      1
      ·
      edit-2
      2 months ago

      Why restrict to 54-bit signed integers?

      Because number is a double, and IEEE754 specifies the mantissa of double-precision numbers as 53bits+sign.

      Meaning, it’s the highest integer precision that a double-precision object can express.

      I suppose that makes sense for maximum compatibility, but feels gross if we’re already identifying value types.

      It’s not about compatibility. It’s because JSON only has a number type which covers both floating point and integers, and number is implemented as a double-precision value. If you have to express integers with a double-precision type, when you go beyond 53bits you will start to experience loss of precision, which goes completely against the notion of an integer.

  • masterspace@lemmy.ca
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    2 months ago

    A summary:

    An old proposal (2015, not sure why OP posted it now), that basically proposes to put some more standards and limitations around JSON formatting to make it more predictable. Most of it seems pretty reasonable:

    • Must be UTF-8 encoded and properly escape Unicode characters
    • Numbers must respect the JavaScript number Type and it’s limitations (i.e. max magnitude of an int etc.)
    • Objects can’t have duplicate keys
    • The order of keys in objects does not matter
    • A JSON file does not need to have a top level object or array, it can be any JSON value (i.e. just a string or a number is still valid JSON).
    • It proposes that when processing JSON, any unrecognized keys should be ignored rather than errored

    It recommends:

    • Specific formats for date-time data
    • That binary data be stored as a bas64url string

    Honestly, the only part of this I dislike is the order of keys not mattering. I get that in a bunch of languages they use dictionary objects that don’t preserve order, but backend languages have a lot more headroom to adapt and create objects that can, vs making a JavaScript thread loop over an object an extra time to reorder it every time it receives data.

    • GTG3000@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      2 months ago

      Personally, I prefer duplicate keys to be eaten by the parser but I can see how it’d be beneficial to prevent them.

      • masterspace@lemmy.ca
        link
        fedilink
        English
        arrow-up
        0
        ·
        edit-2
        2 months ago

        I’m honestly unsure if they intend the ‘must-ignore’ policy to mean to eat duplicate keys without erroring, or just to eat keys that are unexpected based on some contract or schema…

  • WhatAmLemmy@lemmy.world
    link
    fedilink
    English
    arrow-up
    8
    arrow-down
    16
    ·
    2 months ago

    Posting something like this — assuming you actually read the thing and found it to be valuable in some way — without any summary text whatsoever is just lazy af; it’s a low quality effort, and you should feel bad about it.