Created originally on Bitbucket by Devin Jeanpierre
Callers may build with -Werror and should not succeed with CPython but fail with cpyext. This forces us to have the same API -- in particular, to use the same pointer types and perform the same casts.