It's initialized by memset(&rd, 0, sizeof(rd)). Unfortunately, clang likes to warn when I assign `= { 0 }`, which is a real bummer as it's faster and cleaner.

This `dyn_buffer_t` should be folded into `kvec` I think (we already forked kvec anyway). As you can see, it uses the same growing algorithm. The reason I didn't use `kvec` is because:

1. There's no macro for getting the underlying array (so you'd have to know what its name is, which is not very clean)
2. There's no macro for "ensuring" a bigger size (there's `kv_resize` but that one doesn't do array doubling afaik)