I am working on some Go (golang) bindings for the LMDB library and I
have some interest in exposing the functionality of mdb_set_compare (and
mdb_set_dupsort). But it is proving difficult and I have a question about
Calling mdb_set_compare from the Go runtime is challenging. Using C APIs
with callbacks comes with restrictions. I believe it impossible to
bind these functions way that is flexible, as one would expect. A potential
change to LMDB that would make binding drastically easier is having
MDB_cmp_func to take a third "context" argument with type void*. Then a
binding could safely use an arbitrary Go function for comparisons.
Is it possible for future versions of LMDB to add a third argument to the
MDB_cmp_func signature? Otherwise would it be acceptable for a variant API
to be added using a different function type, one accepting three arguments?
Thanks for the consideration.
 Go bindings -- https://github.com/bmatsuo/lmdb-go
 Cgo pointer restrictions --
 Cgo documentation -- https://golang.org/cmd/cgo/