Looks like _elkai.c implements a CPython-API function "ElkSolve" that parses the Python lists into a C array, calls a pure-C function "InvokeSolver", and puts the result of "InvokeSolver" into a Python list.<p>It should be easy to implement "ElkSolve" in pure Python using ctypes to call a pure-C library that exposes the "InvokeSolver" function. That would make it possible to distribute a single Python wheel that works on both Python 2 and 3 and works across all minor versions of Python 3.<p>Currently, elkai works on 3.5, 3.6 and 3.7, but the build system requires a separate build artifact on each, and when Python 3.8 comes out, elkai won't be available until the author builds it for 3.8. With a pure-C library, elkai would be immediately available in new Python versions.