A quarter of the Hurd, Q4 of 2011: Nix-based builds and bounty: slab allocator merged.

This quarter, Ludovic Courtès contributed a continuously-built Nix-based QEMU image, raising the count of GNU/Hurd distributions to three: Debian GNU/Hurd, Arch Hurd, and now Nix. His build is still pretty basic, but a step into the right direction: continuous integration is a great facility for automated testing.

Samuel Thibault followed suit with a new Debian GNU/Hurd disk set as a christmas gift, and identified three easy porting cases with solutions:

  • undefined reference to dl_*: add -ldl for building
  • undefined reference to main: missing gnu* case in the linking part of configure.ac or .in
  • undefined reference to clock_gettime or crypt: add -lrt or -lcrypt

These should help all those who want to help porting packages.

Maksym Planeta and Richard Braun finished integration of the slab allocator. From IRC, freenode, #hurd, 2011-11-14:

<braunr> there shouldn't be any noticeable difference [...]
<braunr> a bit less fragmentation  
<braunr> more memory can be reclaimed by the VM system  
<braunr> there are debugging features  
<braunr> it's SMP ready  
<braunr> and overall cleaner than the zone allocator  
<braunr> although a bit slower on the free path (because of
  what's performed to reduce fragmentation)  
<braunr> but even "slower" here is completely negligible

This also concludes our first FOSS Factory project -- one bounty has been redeemed, more are waiting.

Sergio Lopez documented his work on better memory management and memfs, making it easier for other hackers to join in working on that topic.

Our hackers also used the quarter for porting a good number of packages and fixing bugs. After fixing quirks in the Hurd's memory management system, Sergio Lopez reported success building webkitgtk+, whose build stresses the available memory resources on a 32-bit architecture to a large extent. Svante Signell was busy, too: pax, abiword, syslog-ng, ecl, fakeroot, daemon, and procps, e2fsprogs' quota. Samuel Thibault handled packagekit, evolution, emacs23, gcc-4.7, and iceweasel (firefox). Bouju Alain submitted a patch to support /proc/cpuinfo. Ludovic Courtès contributed a patch to allow for /hurd/init being symlink, made the Hurd build with glibc 2.14+, and worked with the GNU coreutils team on a few issues. Pino Toscano improved recvfrom with NULL address ports. Maksym Planeta continued working on tmpfs. Samuel Thibault turned /dev/random and /dev/urandom into native translators, modernized libtool's configuration, mknod's cleanup in error cases, fixed POSIX 2008 visibility, and fixed an issue in setresuid that broke sudo. Pino Toscano and Thomas Schwinge improved key handling in libpthread. Guillem Jover fixed Mach's int vs. long discrepancy, which takes us the first step towards porting the system to x86 64.

If you want to join us in our journey to realize more of the promises of the architecture of the Hurd, please get in contact -- and maybe already grab the source code and have fun hacking on Free Software!


The GNU Hurd is the GNU project's replacement for the Unix kernel. It is a collection of servers that run on the Mach microkernel to implement file systems, network protocols, file access control, and other features that are implemented by the Unix kernel or similar kernels (such as Linux). More detailed.

GNU Mach is the microkernel upon which a GNU Hurd system is based. It provides an Inter Process Communication (IPC) mechanism that the Hurd uses to define interfaces for implementing in a distributed multi-server fashion the services a traditional operating system kernel provides. More detailed.