One of the nicest things about low-level languages like Rust, C or D is how easy it is to parse binary formats in them. You just define the structure you want, and then just read bytes into memory. In most higher-level languages like Python or Haskell, this kind of work often requires more parsing and faffing around.
I imagine some people might dislike the Mercurial storage for being a binary format unlike git’s which can avoid being a binary format if you never use any packfiles, but in practice almost never is. We shouldn’t be so afraid of binary formats, even binary logs like systemd. They are not so scary and it’s not so difficult to work with them.