Version 1.8 (2016-12-18) The memory management system was extensively reworked. A new type for physical addresses is now used where appropriate, and the system can make use of the high memory segment. Many paging issues have been addressed, and as a result the system handles low memory situations more gracefully now. The virtual memory system now uses a red-black tree for allocations, and as a result it now supports tasks with tens of thousands of mappings. Debugging and error reporting has been improved. Among other things the VM maps are now augmented with names that are used in error messages, panics and assertions point to their locations, the lock debugging mechanism has been fixed, and the kernel debugger can now inspect stack traces reaching into the machine-dependent bits implemented in assembler. As usual, bugs have been fixed throughout the code, including minor issues with the gsync synchronization mechanism which is now used for the internal locks in the GNU C Library (glibc). The deprecated external memory management interface has been removed. The partial ACPI support has been removed. Version 1.7 (2016-05-18) The code has been updated to work with newer versions of GCC, and numerous bugs have been fixed throughout the code, including a pageout deadlock. The code uses integer types from now instead of the old Mach types. The VM cache policy change has been merged. The kernel now caches unreferenced VM objects unconditionally instead of using a fixed limit. The physical page allocator of the X15 kernel has been integrated, and is now used directly by the slab allocator. This increases the kernel heap addressing important scalability issues. The gsync synchronization mechanism was added, similar to the Linux kernel's futexes, to allow efficient and powerful userland synchronization. Support for profiling kernel code from userland through sampling was added. Version 1.6 (2015-10-31) The code has been updated to work with newer versions of the compiler, and numerous bugs have been fixed throughout the code. The lock debugging infrastructure has been revived and improved, and many locking issues have been fixed. The IPC tables and the hash table mapping objects to IPC entries have been replaced by radix trees. This addresses a scalability issue, as IPC tables required huge amounts of continuous virtual kernel memory. The kernel now allows non-privileged users to wire a small amount of memory. A bug hindering the eviction of inactive pages by the pageout daemon has been identified and fixed. The kernel now keeps timestamps relative to the system boot time. Among other things this fixes bogus uptime readings if the system time is altered. A reference leak in the exception handling mechanism has been identified and fixed. ANSI escape sequences are now handled when using `printf'. This fixes the formatting of messages printed by various Linux drivers. Version 1.5 (2015-04-10) Numerous cleanups and stylistic fixes of the code base. Several problems have been identified using static analysis tools and subsequently been fixed. A protected payload can now be associated with capabilities. This payload is attached by the kernel to delivered messages and can be used to speed up the object lookup in the receiving task. The kernel debugger can now parse ELF symbol tables, can be invoked over serial lines, gained two new commands and has received usability improvements. The VM pageout policy has been tuned to accommodate modern hardware. The kernel gained partial ACPI support on x86, enough to power down the system. Version 1.4 (2013-09-27) Really too many to list them individually. Highlight include numerous bug and stability fixes, a Xen port for 32-bit x86 including basic support for Physical Address Extension (PAE), an initial AHCI driver (SATA hard disks), a new SLAB memory allocator to replace the previous zone allocator, support for memory object proxies, access restrictions for x86 I/O ports, support for some PCMCIA devices based on the pcmcia-cs package. Version 1.3 The kernel now directly supports "boot scripts" in the form of multiboot module names with the same syntax as the Hurd's `serverboot' program. That is, instead of telling GRUB "module /boot/serverboot", you can give GRUB a series of command like "module /hurd/ext2fs ${...}" where the syntax after "module" is the same as in boot scripts for Hurd's `serverboot'. The kernel message device `kmsg' is now enabled by default. --disable-kmsg turns it off. Large disks (>= 10GB) are now correctly supported, the new get_status call DEV_GET_RECORDS can return the number of records of a device. Lots of tweaks have been done to the virtual memory management to make it perform better on today's machines. The console supports ANSI escape sequences for colors and attributes. Support for the terminal speeds B57600 and B115200 has been added. Version 1.2 Many bug fixes. The task_basic_info RPC now has an additional field, holding the creation time of the task. Likewise for thread_basic_info. The interface generator `MiG' has been split out. Partition names for disks are now printed in the correct way. Linux drivers are updated to 2.0.36. Many thanks to Okuji Yoshinori for great work here. The Linux emulation support is much improved. The kernel message device `kmsg' is supported. --enable-kmsg turns on the device. The parallel driver is enabled by --enable-lpr. New make targets, install-kernel and install-headers are added. The former will install only the kernel, and the latter will install only the header files. Print out Mach device names instead of Linux ones. Version 1.1 Cross-compilation support is much improved. Any of various popular libc's is now sufficient for building clib-routines.o. New configure option --enable-kdb asks for kernel debugger to be compiled in. Bug in --enable-ncr53c7xx has been fixed. Many thanks go to Marcus G. Daniels (marcus@cathcart.sysc.pdx.edu) for his very helpful testing of the 1.0 release and for his many improvements to the cross-compilation support.