On Sun, Sep 13, 2015 at 12:57 PM, Taylan Ulrich Bayırlı/Kammer <xxxxxx@gmail.com> wrote:
 
Entries are ordered according to insertion order.

That won't get rid of many of the Heisenbugs since insertion order itself is likely to be effectively random in any system communicating with the outside world.
 
From what I've been told on #guile(*), it maps keys to indexes in a
regular hash table, and stores the real values in a vector.  That means
lookups involve an additional pointer dereference.  Deleted entries lead
to holes (wasted slots) in the values vector, but the table is compacted
when 50% or more allocated entries are dead.

(*) https://gnunet.org/bot/log/guile/2015-09-13#T750068

Interesting.  An extra indirection can be awfully expensive these days because of cache effects.  This isn't a tradeoff I would make.

Thanks for the background.