Something we learned through the creation of TigerBeetle:
Static allocation is a forcing function for good design, good taste (and throughout your code base) as your team grows.
The 2nd order value of good design, with realistic limits, trumps even the (many) performance gains.
Dynamic allocation / heap allocation is enemy number one. If your computer program is well designed, you should know how much resources it is going to take up before you run it. If you don't, then it isn't a good program
Allocate everything on the stack