* Doesn't have a sister text format for human editing.
* Uses raw uncompressed types for integers and floats, which wastes space
* Doesn't support arbitrary sized/precision numeric types
* Timestamp format uses seconds instead of Gregorian fields (which means that your implementation must keep a leap second database, and time conversions are complicated)
* No time zones
* Doesn't have metadata, comments, or references
* Container types have an unnecessary length field
* Stores data in big endian byte order (an unnecessary expense since all popular modern chips are little endian)
* Wastes an extra bit for negative integers
* 32-bit limitations on length (so max 4gb payload sizes)
* No versioning of documents
Regarding the point about having a sister text format, I suppose I'd tend to view JSON as filling that role. Not to bother you for a second comparison, but if you happen to have it handy seeing how CTE compares to JSON in terms of encoding efficiency would be interesting to me.
Edit: I found a list of MessagePack <--> JSON limitations that I hadn't really thought about! (https://github.com/ludocode/msgpack-tools#differences-betwee...)