too many internal details exposed to user
The user API is mixed up with things that shouldn't be visible to the user. Right now the API is in sds-keyval.h, lines 294 to 310. The rest of this file is used internally. For instance the user is not supposed to see the actual implementation of kv_context_t, or the Mercury processing functions used for serialization. All this should be in a header that remains internal to sds-keyval, is used only when compiling it, and not installed. The user API should also be better documented.