L4 is a family of second-generation microkernels which is characterised by high performance, more than an order of magnitude better than its predecessors.
L4 is characterised by:
As such, L4 is almost a true microkernel. It violates the strict definition of a microkernel by containing a scheduler (and some scheduling policy) and typically drivers for serial ports and timers.
L4 was designed and implemented around 1995 by Jochen Liedtke, originally on i486 and Pentium machines. This implementation was all written in assembler and implemented what is called the V2 spec of L4.
During 1996–8, 64-bit implementations were developed for MIPS at UNSW, and for Alpha at Dresden University of Technology (later completed and made SMP-capable at UNSW). Those versions also implemented the V2 API with some extensions.
During his time at IBM Watson (1997–1999) Liedtke produced experimental versions of the API, generally referred to as X.0. He implemented this in his assembler kernel.
In the meantime, Michael Hohmuth in Dresden implemented Fiasco, the first version of L4 that was almost exclusively written in a higher-level language (C++). This kernel was originally written for x86 but has later been ported to ARM. It is still in active use and maintained by the Dresden group.
After Liedtke moved to Karlsruhe in 1999, his group implemented the first portable version of L4, called Hazelnut, which ran on x86 and ARM processors. Hazelnut was written in C.
In 2001, after Liedtke's tragic death, the group started the design of a new version of the API, called X.2 (or Beta V4), released early 2002. Its implementation, designed for portability from the beginning, was called L4Ka::Pistachio and was written mostly in C++. It was developed by the Karlsruhe team on x86 and 32-bit PowerPC and with some delay on Itanium. It was ported to ARM, MIPS PowerPC-64 and Alpha by UNSW/NICTA. We also dramatically improved the performance of the Itanium version. In 2003 Pistachio matched the performance of the V2 x86 assembler kernel and the UNSW 64-bit MIPS kernel, demonstrating that a portable yet high-performance microkernel was possible.
In 2004 we commenced work on the a new API aimed at embedded systems, the N1 API and its successors which is an adaptation of the X.2 API. Its implementation, NICTA::Pistachio-embedded, was based on L4Ka::Pistachio and formed the basis of our embedded OS platform. This became the basis of our first commercial deployments.
When Open Kernel Labs span out from NICTA in 2006, the company took over commercial support and deployment of the system, which became OKL4 (still available under an open-source license). NICTA::Pistachio-embedded is now no longer supported, and no longer used inside NICTA.
The main repository of information about and relating to L4 is L4HQ.