Therefore, there should be little to distinguish the use of an extension from that of the core protocol. To avoid having to initialize extensions explicitly in application programs, it is also important that extensions perform lazy evaluations, automatically initializing themselves when called for the first time.
This appendix describes techniques for writing extensions to Xlib that will run at essentially the same performance as the core protocol requests.
It is expected that a given extension to X consists of multiple requests. Defining ten new features as ten separate extensions is a bad practice. Rather, they should be packaged into a single extension and should use minor opcodes to distinguish the requests.
The symbols and macros used for writing stubs to Xlib are listed in X11/Xlibint.h.