The gist proposes a generic dynamic array in C that avoids a dedicated struct entirely. The public handle is just a small array, and the current capacity is not stored as a field. Instead it is recomputed from length using the next power of two. That saves one piece of metadata and keeps the element pointer typed, which is the author’s main reason for not using a `void*`-based struct.
The useful part people took seriously was the implicit-capacity trick. If length is the only state you track, then `bit_ceil(len)` gives you the allocation size for a grow-on-powers-of-two vector. Several comments noted this is a real technique, not nonsense, and linked it to bit operations now standardized in
C23 via `<stdbit.h>`. But that idea landed as narrower than the gist suggests. Once a vector can both grow and shrink, or once you want `reserve`, you either lose
amortized O(1) behavior or you end up reallocating much more often. In practice that means the trick works best for append-heavy, tightly constrained cases, not as a general-purpose replacement for a normal vector.
Most of the heat was aimed at the API shape, not the bit math. People thought replacing a named struct with magic indexes made the code harder to read, easier to misuse, and worse to debug. Multiple comments said a macro-generated struct gives you almost all the same genericity with better field names and some type checking. Others pointed out that established C libraries like `
stb_ds.h` already solve this more cleanly by exposing a plain element pointer while storing metadata adjacent to the allocation. The bottom line was blunt: inferring capacity is an interesting low-level trick, but deleting the struct buys very little and makes the interface worse.