Two quarters of the Hurd, Q1 and Q2 of 2012: Google Summer of Code, Barrier of Entry, Core, Porting.

Google Summer of Code

Jérémie Koenig released the final report on his Google Summer of Code project Java on Hurd along with a summary of his changes and the challenges he faced. In a similar track, Samuel Thibault merged the slab branch, concluding Maksym Planeta's Goggle Summer of Code project on an improved memory allocator.

Pino Toscano improved the Hurd implementations of nanosleep, ptsname_r, getlogin_r, getgroups, and sendto, for POSIX compliance.

Barrier of Entry

Samuel Thibault, Ludovic Courtès and Thomas Schwinge reduced the barrier of entry into hacking the Hurd.

As part of this, Samuel prepared DDE in incubator, making about half the Linux kernel's network drivers compile on the Hurd, together with a netdde debian package and testing notes.

Ludovic contributed a continuous testing framework using a Nix-based GNU QEMU image. Thanks to his work, we now have automatic tests (background).

Thomas on the other hand moved the translators cvsfs and smbfs into the incubator Git repository, as well as libfuse, reducing the barrier of entry to improving them, so integrating cvs and samba in the filesystem and using FUSE translators can be stabilized more easily. Also he improved the Hurd build system, removing automatically generated files from the source repository, as now running autoreconf is all you need to create them.

Roland McGrath merged many glibc changes for upstream inclusion, reducing the maintenance load for our regular glibc development work.

The Core of the Hurd

Ludovic Courtès, Maksym Planeta, Samuel Thibault and Richard Braun took a dive into the core of the Hurd. Ludovic fixed invalid port deallocation in `symlink' and made console-run resilient against missing /dev/console. Maksym tested the performance of tmpfs, showing a speedup for apt-get calls from 22 seconds with ramdisk and 32 seconds with ext2fs to 16 seconds with tmpfs for apt-get invocations, showing the possible wins due to going deep. An obvious use case for tmpfs are faster Hurd LiveCDs. Samuel made it easier to dive in by improving debugging in GNU Mach. The debugger is now aware of the difference between kernel space and user space. This should substantially reduce the development time for features in Mach by giving nicer stack traces. And in the deepest core of the Mach, Richard improved memory mapping with a red-black tree, which should speed up memory access.


As in the previous quarters, we also saw lots of ported packages, including Richard's work on libpcap which brought wireshark and pcap_inject for easier network testing, libtool thanks to Samuel Thibault and Peter O'Gorman, gnat by Svante Signell for Ada support (a language used in many mission-critical applications such as automotive and aerospace, offering features like strong typing, modularity, run-time checking and parallel processing), and iconx thanks to Samuel Thibault, which fulfills a requirement of tests for many packages, among them glib - and allowed Svante Signell to port the literate programming language noweb and ifupdown. Also Thomas DiModica merged the cthreads to pthreads patch and added a branch for it to make it easier to work on getting Hurd to use the more current pthreads.

With his Debian GNU/Hurd maintainer hat on, Samuel Thibault posted some new bits from the Debian GNU/Hurd porters.

And now, as a final note, we want to share a story about real-life debugging on a Hurd system; IRC, freenode, #hurd, 2012-03-02:

<youpi> yay GNU/Hurd  
<youpi> I have added i_translator check in e2fsck, it was missing  
<youpi> I had a volume that was keeping making ext2fs crash  
<youpi> with a reproductible scenario  
<youpi> could easily work out it was i_translator, then add a
  check to e2fsck, run it, which indeed fixed, them, and voilà,
  ext2fs was working again
<youpi> all that on the same machine with *no* system reboot  
<youpi> just ext2fs restart :)

So if you want to experience enjoyable debugging of code deep in the core of your system, please get in contact -- and maybe already grab the source code.

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.