Invariably, with the exception of 1%, I'll find a mess. It is just a fact, people can't program, or programming is too hard.
I read the Python source to see how they handle dynamical loading of shared libraries. I wasn't sure I actually needed a cache for the handles.
Surprisingly, an array of 128 handles are allocated. I am a conservative programmer, I grow the area of handles when needed.
But thinking of it: Who's right? Python will crash when more than 128 libraries are loaded; but that will not happen very fast. My code will handle a lot of libraries; but if my code is abused, it is not thread-save, or contains a bug, it will silently keep growing and keep using memory.
There is a point in coding with hard constants.