With Python 2.7 reaching its supported end-of-life in 2020, like some other
Python projects (e.g. IPython / Jupyter) we should seriously contemplate making
pandas 2.0 only support Python 3.5 and higher. In addition to lowering the
development burden at both the C API and pure Python level, we can also finally
look to take advantage of features (things like asyncio, maybe?) only
available in Python 3.

Per the general discussion around changing DataFrame’s internals to contain a
list / std::vector of arrays internally, for me this begs the question of
the benefits of continuing to accommodate strided one-dimensional data.

Not needing to consider a stride different from 1 means simpler low-level
array indexing code (e.g. you can work with plain C arrays). The stride is a
complexity / overhead that leaks to every algorithm that iterates over an
array.

You avoid strange situations where a strided view holds onto a base ndarray
reference to a much larger array