[[!meta copyright="Copyright © 2013 Free Software Foundation, Inc."]]
[[!meta license="""[[!toggle id="license" text="GFDL 1.2+"]][[!toggleable
id="license" text="Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation License, Version 1.2 or
any later version published by the Free Software Foundation; with no Invariant
Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license
is included in the section entitled [[GNU Free Documentation
<!-- Date when the news item is (to be) pulished (important for RSS feeds).
Will be set by tschwinge when publishing.
[[!meta date="YYYY-MM-DD HH:MM UTC"]]
<!-- This is just a skeleton. Use it to create a new QotH. -->
A quarter of the Hurd, Q3/Q4 of 2012: *pthreads*, *installation CDs*, *hardware* and *porting*.
[[!if test="included()" then="""[[!toggle id=full_news
text="Details."]][[!toggleable id=full_news text="[[!paste id=full_news]]"]]"""
[[!cut id="full_news" text="""
At the end of the last 2 quarters, Samuel Thibault pushed the [pthread patches](http://lists.gnu.org/archive/html/bug-hurd/2012-11/msg00088.html) from Vicente Hernando Ara, Barry de Freese, Thomas Schwinge, Richard Braun and Samuel and others to the different upstream packages, finally enabling modern pthreads for the Hurd, which makes it possible to implement full Hurd bindings for languages which require pthreads, so for example [PyHurd](http://savannah.nongnu.org/projects/pyhurd/) can profit from the Hurd libraries instead of having to rely on low-level Mach bindings to implement Hurd features like translators.
The switch to pthreads has been attempted multiple times, but in the past it always hit some tricky issues which proved to be a roadblock. Last year, Richard Braun took up the task again and finished the transition of the Hurd libraries and glibc to pthreads with libpthread.
As followups, Thomas Schwinge [debugged and fixed](http://lists.gnu.org/archive/html/bug-hurd/2012-12/msg00044.html) a deadlock with child threads resulting from a regression due to earlier fixes, and Cyril Roelandt shared a [patch series](http://lists.gnu.org/archive/html/bug-hurd/2012-12/msg00018.html) to fix double mutex unlocking with pthreads. We will likely see more fixes like these, given that the whole threading interface changed, which will expose previously invisible bugs.
Also Samuel Thibault [provided](http://lists.gnu.org/archive/html/bug-hurd/2012-12/msg00052.html) new [installation CDs](http://people.debian.org/~sthibault/hurd-i386/installer/cdimage/current) and a new [qemu image](http://people.debian.org/~sthibault/hurd-i386/). Additionally to using pthreads, these now offer keyboard layout configuration.
Pino Toscano [implemented syncfs](http://lists.gnu.org/archive/html/bug-hurd/2012-11/msg00046.html) which ensures that all data in the filesystem gets written to disk, as well as [statfs](http://lists.gnu.org/archive/html/bug-hurd/2012-12/msg00005.html), which adds additional statistics to procfs.
Thomas Schwinge and Samuel Thibault improved the hardware compatibility of the Hurd by fixing [some errors](http://lists.gnu.org/archive/html/bug-hurd/2012-11/msg00077.html) which caused a miscalculation of the size of medium sized disks reporting 15 heads instead of 16 and adding [network-card detection](http://lists.debian.org/debian-hurd/2012/07/msg00011.html) network-card detection on busses other than 0 and 2.
And several people ported and fixed packages, further increasing the number of debian packages which work on the Hurd: *Svante Signell* ported [mlocate-0.25](http://lists.debian.org/debian-hurd/2012/07/msg00015.html), [gnat-gps](http://lists.debian.org/debian-hurd/2012/07/msg00011.html), [libpst](http://lists.debian.org/debian-hurd/2012/08/msg00039.html), [libetpan](http://lists.debian.org/debian-hurd/2012/08/msg00046.html), [spl](http://lists.debian.org/debian-hurd/2012/09/msg00004.html), [dovecot](http://lists.debian.org/debian-hurd/2012/09/msg00007.html), [xplc](http://lists.debian.org/debian-hurd/2012/08/msg00054.html) and [parrot](http://lists.debian.org/debian-hurd/2012/08/msg00056.html), [x86info](http://lists.debian.org/debian-hurd/2012/09/msg00008.html), [atlas](http://lists.debian.org/debian-hurd/2012/09/msg00009.html), [rrdtool](http://lists.debian.org/debian-hurd/2012/09/msg00011.html) and [gdb](http://lists.debian.org/debian-hurd/2012/09/msg00018.html). Also he fixed [yodl](http://lists.debian.org/debian-hurd/2012/08/msg00030.html), fixed [ntpdate](http://lists.debian.org/debian-hurd/2012/12/msg00002.html) to work again and [improved](http://lists.gnu.org/archive/html/bug-hurd/2012-11/msg00062.html) the error handling in pflocal. *Pino Toscano* added patches for [procfs](http://lists.gnu.org/archive/html/bug-hurd/2012-09/msg00004.html), [ptrace](http://lists.gnu.org/archive/html/bug-hurd/2012-10/msg00035.html), [fsync on stdout](http://lists.gnu.org/archive/html/bug-hurd/2012-10/msg00046.html), [muntrace](http://lists.gnu.org/archive/html/bug-hurd/2012-11/msg00033.html), [ulimit](http://lists.gnu.org/archive/html/bug-hurd/2012-11/msg00034.html), [glibc](http://lists.gnu.org/archive/html/bug-hurd/2012-11/msg00029.html) which among others improve POSIX conformance, making it easier to write programs which work on the Hurd and GNU/Linux. And he made the test pass for [FIFO sockets](http://lists.gnu.org/archive/html/bug-hurd/2012-09/msg00053.html) with mknod and [added](http://lists.gnu.org/archive/html/bug-hurd/2012-09/msg00005.html) a size parameter to tmpfs for easier usage in scripts and a [version suffix option](http://lists.gnu.org/archive/html/bug-hurd/2012-10/msg00009.html) for gnumach configure. *Cyril Roelandt* fixed a [ps](http://lists.gnu.org/archive/html/bug-hurd/2012-12/msg00012.html) bug, a documentation typo [in ps](http://lists.gnu.org/archive/html/bug-hurd/2012-10/msg00032.html) and a missing linker flag [in procfs](http://lists.gnu.org/archive/html/bug-hurd/2012-10/msg00025.html). *Matthew Leach* [fixed](http://lists.gnu.org/archive/html/bug-hurd/2012-11/msg00037.html) a compilation error with older GCC versions due to duplicate type definition. *Ole Streicher* fixed a bug in the Makefile of ftools-fv which was [exposed](http://lists.debian.org/debian-hurd/2012/10/msg00059.html) by testing on Hurd. And *Samuel Thibault* [removed](http://lists.debian.org/debian-hurd/2012/12/msg00005.html) the out-of-date floppy-warnings in the debian installer.
So if you want to test if your favorite packages work on the Hurd and
contribute towards making the full GNU system usable for a wider range
of people, please [[get in contact|contact_us]] -- and maybe already
grab the [[source code|source_repositories]].
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
**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
<!--see [[contributing/web_pages/news/writing_the_qoth]] for additional information on writing the QotH.-->