|Stable release||50.10 (MorphOS) / March 9, 2015|
|Operating system||AmigaOS, MorphOS|
The ixemul.library is a BSD 4.3 Unix kernel running under the Amiga OS or MorphOS where the system API calls are then internally converted to native Amiga kernel calls. The API is specifically modeled against NetBSD, providing a similar system for process control, multitasking, file operations, signals, pipes and other messaging methods. The library provides this with low overhead, requiring roughly 200KB of memory.
Because the library resembles BSD Unix very closely most Unix-like programs can be compiled without modification (see limitations below). Programs that require BSD Sockets networking can use the related ixnet.library. Programs that include X Window client support can use the Amiga port of X.
There is no general restriction against using both ixemul and Amiga native API calls simultaneously if the programmer takes necessary precautions.
The library was originally developed around 1991-92 by Markus Wild as an aid in porting the GNU Compiler Collection and PDKsh. Several incomplete source snapshots were made available online while he continued to release new binaries. When Markus shifted his attention to NetBSD development full-time, development of the library stalled.
Around 1994, Rafael W. Luebbert produced a fork of the project, gluing together different working parts of the public source code. This version soon became the de facto standard within the Amiga community.
A second fork of the project was later started by Leonard Norrgard. Due to overlapping version numbers, this resulted in some ambiguity between projects. The projects were later merged under a single maintainer, which is its current state.
MorphOS has adopted ixemul.library as part of its system libraries.
The library does not emulate the BSD system API in its entirety. Some of the signals, such as SIGSTOP, are missing. The use of some process control functions, such as fork(), cannot be fully implemented due to the Amiga's lightweight, non-virtual memory system; instead, more lightweight versions, such as vfork(), are utilized.
The library does not claim POSIX compliance.
The library does not act as emulator for BSD system calls when using pre-compiled binaries from other operating systems. Binaries from NetBSD/m68k and SunOS/m68k remain incompatible.