Nom for socks, a case study.
I've experimented with nom as a way to learn more about it and get more familiar with Arti. I'm really proud of the results, it was quite difficult, but this adds a few hundred lines to the codebase(not what I was expecting).
From my research, everybody seems to indicate nom is the right tool for this job. Serde is what everyone uses for deserialization, but it's generalized nature make it ill suitable for the tasks Arti needs to accomplish. Of note, the maintainer of nom is quitting or has quit, and the nom_bufreader crate has some rather nasty features. That combined with nom's small if nonexistent user base is worrying. I can see nom and nom_bufreader being assimilated into tor-bytes
.
About the patch, handshake.rs gets almost completely re-done and the patch is just ugly, so I've renamed it to prevent that. It is hard to get a side-by-side comparison, the only parts that line-up are the assert
s in tests.
As this helps me understand Arti I'll continue.