Dynamic Extensions, describes the supported API and mechanisms for writing extensions for gawk. This API was introduced in version 4.1. However, for many years gawk provided an extension mechanism that required knowledge of gawk internals and that was not as well designed.
In order to provide a transition period, gawk version 4.1 continues to support the original extension mechanism. This will be true for the life of exactly one major release. This support will be withdrawn, and removed from the source code, at the next major release.
Briefly, original-style extensions should be compiled by including the awk.h header file in the extension source code. Additionally, you must define the identifier ‘GAWK’ when building (use ‘-DGAWK’ with Unix-style compilers). Otherwise, the definitions in gawkapi.h will cause conflicts with those in awk.h and your extension will not compile.
Just as in previous versions, you load an old-style extension with the
extension() built-in function (which is not otherwise documented).
This function in turn finds and loads the shared object file containing
the extension and calls its
dl_load() C routine.
Because original-style and new-style extensions use different initialization
dlload()), they may safely
be installed in the same directory (to be found by AWKLIBPATH)
The gawk development team strongly recommends that you convert any old extensions that you may have to use the new API described in Dynamic Extensions.