So, my proposal is to add full support for CBOR and/or MessagePack at the native browser level. You would have CBOR.encode and CBOR.decode methods (or msgpack.decode and msgpack.encode) just as we have JSON.stringify and JSON.parse.
I think that this would provide a significant improvement in transmission and encoding/decoding speed.
I’m not entirely sure about MessagePack (I haven’t read up on it and haven’t used it personally), but CBOR can have some interesting interoperability issues.
CBOR also allows explicit precision for float types, which has a risk of lossy conversion.
This could mean subsetting features to find the most interoperable common denominator, which could be problematic as CBOR at least has already been published as a RFC.
In applications that need to interwork with JSON-based applications, keys probably should be limited to UTF-8 strings only; otherwise, there has to be a specified mapping from the other CBOR types to Unicode characters, and this often leads to implementation errors.
I think that choosing the interoperable common denominator is already explicitly allowed by the CBOR spec.
(I’m reviving this topic since it’s all I can find on this idea. Since CBOR is now an official Internet Standard it would, IMO, be sensible for browsers to expose it natively.)