The promise of POSIX-compliant operating systems has not yet materialised. A few packages are available in Karma to assist portability, and provide a few enhancements.
The a package provides a few convenience routines for displaying warning messages and aborting the execution of the application. It is important to abort and not just exit the application when a fatal error occurs, in order for a debugger to produce a meaningful traceback.
The m package provides an enhanced interface to the standard C library malloc() and associated functions. In particular, periodic checks are made by the memory allocator to see whether something has written past the bounds of an array.
The s package provides portable interfaces to some of the common Unix signal-handling facilities, such as blocking and unblocking of signals. In addition, a few ``standard'' signal handlers are provided.
The dir package provides a portable and more powerful means of scanning directories. As well as being a portable interface, each entry in a directory is analysed (using the stat() system call under Unix-like systems) as it is scanned. This provides the application with more information about a file than just it's name.