A month of the Hurd: new translators / bug fixing.

Yes, we're a bit late this month. Arne Babenhauserheide, the guy who has started and has been drafting the Month of the Hurd ever since June 2009 (yes, that one and a half years already!), moves on to other duties -- his wife has given birth to our first Hurd developer offspring (as far as I know):

Last friday my son Leandro entered our cold and too bright but friendly world, [...]

We wish them good luck for their new parental duty!

The other guy, Thomas Schwinge, who has been editing and publishing the Month of the Hurd will take over -- at least temporarily (mind you, Arne).

But, we got some Hurd news, too.

Olaf Buddenhagen posted a patch that allows to obtain number of ports in proc and libps by means of adding a new RPC -- and subsequently held a discussion with Samuel Thibault who proposed that instead of adding such functionality on an ad hoc basis, a more generic solution could be found, too. In the end, they agreed that this functionality was useful enough, and the patch was committed.

It is important to spend time on designing proper interfaces (RPCs in this case), but on the other hand what we're doing now need not be set in stone forever, as Olaf explains:

Well, we already have a mechanism for making communication protocols in the Hurd extensible: it's called the RPC mechanism... :-) Let's not try to invent another generic mechanism on top of RPCs.

If ten year down the road we indeed end up with half a dozen miscallaneous info queries, we can still replace them by a new RPC covering all of it...

Thomas Schwinge moved some packages (gopherfs, netio, tarfs) from hurdextras to the Hurd's incubator repository; these are now available as Debian GNU/Hurd packages. Manuel Menal also spent time on actually making tarfs and good ol' gopherfs usable.

Similar treatment has been applied to Jérémie Koenig's new procfs implementation; this one is now used in Debian GNU/Hurd.

Jérémie found some problems with signal delivery -- signals apparently are not delivered as expected. Roland McGrath, this hairy code's original author, provided some insight:

It's not that it's a bug, it's that the Hurd has never had POSIX-1996 multithreaded signal semantics. The Hurd implementation predates those specifications.

He continued to explain:

The Hurd signal semantics are well-defined today. They are not the POSIX-1996 semantics in the presence of multiple threads per process.

This explains for differences comparing to other recent Unixy systems, for example Linux. Neal Walfield, our libpthread's main author, states that he sees no convincing reason to not adopt POSIX/Linux signal semantics and abandon Hurd signal semantics. Jérémie went on to send a first patch. While already working in that area, Samuel Thibault applied some further fixes to our two threading libraries, and among others, he also sent a related glibc patch to fix signal-catching functions. And then, there is still the project about converting the Hurd's libraries and servers to using libpthread instead of Mach's cthreads (libthreads); likely such signalling system moderizations could be done alongside of that.

Manuel Menal fixed a bug that occurred when sending file descriptors with SCM_RIGHTS over PF_LOCAL sockets. He also identified this bug as the reason why the SSH daemon's privilege separation was not working on GNU/Hurd -- now this is fixed and you can use the default of UsePrivilegeSeparation yes.

Michael Banck has, based on user feedback, applied some changes to the crosshurd package, and uploaded a new version.

In other news, the Arch Hurd guys rightfully concluded that now that they're having a package available for almighty GNU Emacs, no further user-land packages need to be ported. If only everyone was using Emacs...

Last, and least, there are rumors about our colleagues over at the Duke Nukem Forever department getting serious again. We shall see. :-)