[this refers to the 200 API, not 300 which I can't currently build]
I'm helping implement the Python bindings to Newton and one of the nastier problems we have to deal with is callbacks that call from Newton back into Python objects. The problem is how the callback knows what Python object is being manipulated in order to translate the C callback to a Python callback.
In some cases we can attach a Python object to eg. a NewtonBody and then in the callback we can retrieve the object. This isn't possible for NewtonJoints though as there is no user data (as far as I can tell). Also for some other callbacks the code required to get the Python callback can be quite complex (eg. NewtonMaterial contacts_process callback where the callbacks are stored as user data on the NewtonMaterial, but getting to the NewtonMaterial inside the C callback requires several other calls).
What would make it significantly simpler would be to be able to have the Python callback be passed directly to the C level callback as a user data argument.
On a somewhat similar note, is there any reason why the contacts_process callback from NewtonMaterialSetCollisionCallback isn't passed a pointed to the NewtonMaterial as the first argument (like the aabb_overlap callback is)?