copy-on-write transactions for qp tries
I took a week off for a beer festival, and you won't believe what happened next!
_________________
< CONCURRENT TRIE >
-----------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||
You can get my code from https://git.uis.cam.ac.uk/x/uis/u/fanf2/knot-dns.git branch u/fanf2/cow head commit 4b2a0c16c086dcb049317bb92861a2fe28c30c0a
There are two commits, a refactoring commit (no functional change) and a feature commit. The tests should all pass after both commits.
I have not done any benchmarking. I have been fairly liberal with helper functions and assertions, assuming that they will be compiled away in a production build so there shouldn't be a performance regression. However I have not verified this.