Attached is my latest stab at an out-of-tree module. This one is simple and links to libuuid from e2fsprogs, using header files from zsh 4.3.4. To use, build and load the module, then run 'zuuid' and it will output a 128-bit universally unique ID (per RFC 4122). config.h and zsh.mdh are munged from a zsh 4.3.4 build, which is suboptimal. uuid.mdh (in the tarball, "hand-crafted") includes zsh.mdh, zsh.mdh includes system.h, and system.h needs config.h . One thing to do would be to ship some kind of include file for autoconf so that the out-of-tree module can set all the necessary defines (such as HAVE_STDARG_H or HAVE_VARARGS_H) needed by system.h Alternately, the portions of system.h that require config.h but don't need to be exported for out-of-tree modules could be split out to a different header or guarded with #ifdefs.