Several compromises were made to reduce the footprint of the library:

  1. The parser isn’t strict and accepts some invalid inputs.
    For example, it doesn’t reject malformed UTF-16 surrogate pairs, like \ud83d\ud83d
  2. Keys containing NUL characters (ASCII code 0, or \u0000) are not supported and get truncated.
  3. The string-to-float conversion is not perfect.
    For example, if the input is 0.123, you’ll get 0.1230000000000001.