New functionality should be accompanied by a test case which verifies the correctness of p11-kit's operation on successful use of the new functionality, as well as on failure cases. The p11-kit test suite is run on "ninja test" if you use meson for building, or on "make check" if you use autotools.
Bug fixes should also come with a test case that exercises the code path that previously failed to operate. This prevents future regressions.
In general, use the Linux kernel coding style, except that we put a space between function name and open parenthesis.
Use gtk-doc for API documentation.
We use the libtool versioning scheme to ensure ABI compatibility. If you add a new API function, update libp11-kit.map and libp11-kit-*.dll.def accordingly.