I first wrote it the dumbest way possible, one big array with padding at the back. Worked fine actually for most modern use cases, but as this is also a learning experience, I want it to be best in class in performance.
I think I'll settle on gap buffer because the performance is great and it doesn't hurt my head.