--- news/2026-q2.mdwn | 328 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 328 insertions(+) create mode 100644 news/2026-q2.mdwn
diff --git a/news/2026-q2.mdwn b/news/2026-q2.mdwn new file mode 100644 index 00000000..4b2adccf --- /dev/null +++ b/news/2026-q2.mdwn @@ -0,0 +1,328 @@ +[[!meta copyright="Copyright © 2026 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 +License|/fdl]]."]]"""]] + +<!-- TODO before committing + +These wiki pages need to be added to hurd.gnu.org: + +hurd/translator/9pfs +hurd/translator/eth-multiplexer +logo/ethernet-multiplexor.svg + +--> + +Hello and welcome to another Qoth! Here's what's been happening in Q2 +of 2026! + +Joshua Branson added a pretty cool svg logo for our [[ethernet +multiplexor|hurd/translator/eth-multiplexer]]. He built that image +with Inkscape whilst using a Hurd laptop (Thinkpad 420) running on +real iron! The Hurd wiki could certainly use more artwork. Perhaps +you have a favorite Hurd translator that you believes needs some +artwork! + +Sergey Bugaev announced his [WIP +9pfs](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00012.html) +([source code](https://github.com/bugaevc/9pfs)), +and it has a [[wiki page|hurd/translator/9pfs]]! He writes: + + Some years ago, I experimented with implementing a 9P translator for + the Hurd. Hopefully there is no need to tell this list what 9P is :) + + Besides just browsing files on the few existing servers out there, a + potential use case is virtio-9p, to enable shared directory trees + between VMs and the host. But that would need someone to implement + virtio support in the Hurd. + + I wanted to complete 9pfs before publishing, but that ultimately + didn't happen, so now it's time to turn it over to the community. I + now went and made the repository public on GitHub: + https://github.com/bugaevc/9pfs + + What's implemented is basic browsing (readdir, stat), path resolution + (dir_lookup), and reading files (io_read). And below that, the whole + tracking for nodes, peropens, protids, fids, tags, and 9p RPCs. + + Improvements are welcome, send patches to this list with [PATCH 9pfs] + in the subject. A good starting point would be to continue porting + things that I had implemented in the old netfs-based version (see + netfs.c) but didn't yet port to the new one. + +He then got a little more motivated, and he added some write support! + +Etienne Brateau added +[validation](https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00098.html) +to [msync](https://man7.org/linux/man-pages/man2/msync.2.html), so +that the Hurd better follows POSIX. + +Diego Nieto Cid worked on allowing privileged users to set their task +priority (nice value). His patches landed in +[glibc](https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00100.html) +and [GNU +Mach](https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00099.html). +He also fixed a [tiny +bug](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00232.html) +in our test suite. He fixed an adjtime bug, which is helpful to [the +OpenNTPD +port](https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00061.html), +and he fixed +[two more](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00133.html) +[bugs](https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00117.html). + + +Paulo Duarte sent a RFC patch series trying to commit Sergey’s +previous AArch64 work. He writes: + + This series adds the gnumach kernel-side implementation for the + aarch64 ABI Sergey landed in April 2024, plus the test-suite arms. + Patch 01 brings in the aarch64-only sources from bugaevc/wip-aarch64 + verbatim, with Sergey as Author; the rest is mine. + + The meaningful divergence from wip-aarch64 is what I left out: + roughly 150 files of cross-arch refactoring across kern/, ipc/, vm/, + device/intr.{c,h}, and the i386 tree. Each got replaced with a + smaller per-arch shim under aarch64/ so kern/bootstrap.c, + device/intr.{c,h}, kern/lock.h, and the i386 trees all stay + bit-identical to current master. The shared-file footprint outside + aarch64/ is four files: a new ELF constant, two missing decls plus + their include, and a linker-symbol filter extension... + + Tested: 12/12 pass on x86_64, i686, and aarch64 under qemu. No + bare-metal validation yet. I plan to build bootable images and boot + the kernel on Apple M1 / Raspberry Pi (aarch64) and an x86_64 box + (x86_64 + i686). Help on any of these welcome. + + +He also fixed a [tiny cross compilation issue](https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00077.html). + + +gfleury fixed some [tmpfs +typos](https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00038.html). +He also fixed a [kernel crash on a null pointer +deference](https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00101.html). + +Almudena Garcia is developing a [WIP trivfs implementation in +rust](https://gitlab.com/AlmuHS/hurd-translator-in-rust). The work is +not complete yet, but it is possible to write Hurd translators in Rust! + +Mikhail Karpov added some checks for [mmap in several places](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00165.html). +He also worked on adding storeio to the [bootstrap +chain](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00221.html). +This is actually quite interesting. Currently the Hurd sets device +entries in `/dev/` statically. For example, I am writing this qoth on +a Hurd machine that is using two `/dev/` entries for my filesystem: +`/dev/wd0s1` for swap and `/dev/wd0s5` for my root filesystem. +However, `/dev/wd0s1` through `/dev/wd0s16` exist on my computer! +Once Mikhail's project is done, then the Hurd will dynamically +populate SATA devices at boot time! No more need for static +translators! [He +writes](https://lists.gnu.org/archive/html/bug-hurd/2026-05/msg00041.html): + + + I've expanded the functionality of the partfs translator to work + with multiple disks and their partitions. Thus, by running the + command: + settrans -c partfs /hurd/partfs /root/disk1.img /root/disk2.img /root/disk3.img + + + The translator directory will have the following directory tree: + partfs + ├── 0 + │ ├── 1 + │ ├── 2 + │ └── ... + ├── 1 + │ ├── 1 + │ ├── 2 + │ └── ... + ├── 2 + │ ├── 1 + │ ├── 2 + │ └── ... + Since the disks are directories, the cd and ls commands work in the translator node. + + I also tested mounting, reading, and writing using the commands: + `settrans -c ext01 /hurd/ext2fs -w -T typed file:/root/partfs/0/1` + and + `settrans -c ext1_1 /hurd/ext2fs -w -T typed part:1:file:/root/partfs/1` + +It actually is even cooler! Samuel (our fearless leader) is [seeking +feedback](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00187.html) +for how to name these newer `/dev` entries. Samuel [writes](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00187.html): + + One thing that would be really needed for efficiency is to implement + netfs_file_get_storage_info, so that libstore would be able to get the + underlying storage information, and directly get data from there rather + than partfs having to pass data with io_read/write. + + I'm then wondering how this would fit in the "grand scheme". Our current + approach, /dev/hd0s* being always there, is indeed not really good + because it doesn't easily tell the user which partitions are actually + there. We used to have to have this because partitions used to be + handled by the kernel, and then we have moved to + storerio+parted-supported partitions, which brings much more + flexibility. + + Perhaps we could use + + settrans -c /dev/hd0s /hurd/partfs /dev/hd0 + + and then we'd have /dev/hd0s/1, which is almost like before, but allows + the entries to be dynamic. Actually, we could even have some + + settrans -c /dev/hd /hurd/probedisk hd + + and then we'd have /dev/hd/0, and we could have /dev/hd/0s being partfs, + so we'd eventually have + + /dev/hd/0s/1 + + But I'm also thinking that perhaps it could be integrated more with + storeio, i.e. /dev/hd0 can as well also act as a directory with partfs + behavior, so you could have + + /dev/hd0/1 + + and with the probedisk translator, you could have + + /dev/hd/0/1 + + What do people think about it? + + +Mike Kelly has been hard at work [porting OpenBSD’s +OpenNTPD](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00185.html), +which required some glibc work. The Hurd doesn't currently have a +NTP daemon, so thanks Mike! + +He also debugged a [weird memory error with +rump](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00029.html), +and he provided a ["brown-tape" +solution](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00136.html) +for it. Hopefully, he (or you dear reader), can reach out to the +NetBSD people to fix this bug. This just goes to show that when two +projects use the same code, both projects benefit! + +He also got a [glibc patch +committed](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00012.html). +Essentially `SIGSTOP`/`SIGCONT` was duplicating portions of files, +which is now fixed. However, there are still some [other +issues](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00149.html) +with building some haskell packages. + +Joan Lledó continued his work +[on](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00067.html) +[porting](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00146.html) +[dhcpcd](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00028.html). +Also Roy Maples, the dhcpcd maintainer did a lot of helpful work to +help us out. Thanks Roy! + +Bradley Morgan fixed a [tiny implementation bug with +cat](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00120.html). He +also tweaked procfs to [show hidden +files](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00122.html), +and he [allowed passing “-s” to +init](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00082.html). +Previously, passing "-s" to init was silently ignored. + +Johannes Schauer Marin Rodrigues has been working on getting [s-build +to run on amd64 +Hurd](https://lists.debian.org/debian-hurd/2026/06/msg00000.html). It +is a rather long email thread, so grab some popcorn and dig in! + +Milos Nikic ported +[Neovim](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00141.html). +He also worked on +[bug](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00179.html) +[fixes](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00195.html) +to +[libdiskfs](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00020.html), +and he fixed a deadlock bug in the [“ext3/ext4” filesystem +journal](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00171.html). + + +In the last qoth we had talked about how the Milos was working on +adding an ext3/ext4 binary compatible journal. Samuel has committed +it! Samuel wrote: + + There is a couple things that I fixed on the fly: + + - We want to use pthread_cond_clockwait rather than + pthread_cond_timedwait, to be able to use CLOCK_MONOTONIC instead of + CLOCK_REALTIME, to avoid being hit by ntpdate and such. + + - In diskfs_S_dir_rename, there was an addition of: + + pthread_mutex_unlock (&fnp->lock); + + which was clearly bogus: we were unlocking it again below. + + There are a couple things that we'd want to fix now: + + - when calling diskfs_file_update, don't we have to be inside a + transaction? Otherwise if we pass wait=1 and use a journal, we won't + be waiting AIUI? Notably, in diskfs_S_dir_rmdir we don't use a + transaction. And ideally we'd have an assertion that makes sure we + respect this. + + - we should define some helper for this recurring pattern: + + if ((docommit) && (diskfs_synchronous || diskfs_journal_needs_sync (txn))) + diskfs_journal_commit_transaction (txn); + else + diskfs_journal_stop_transaction (txn); + + - journal_drain_deferred_blocks should document what it does, not just + its call conditions :), and more generally the functions that are + not already documented in a .h and not just a _locked variant of a + documented function. + +Leonardo Lopes Pereira did some [spring +cleaning](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00083.html) +to remove some [dead +code](https://lists.gnu.org/archive/html/bug-hurd/2026-04/msg00084.html). + + + +Samuel Thibault mentioned [in an +email](https://lists.debian.org/debian-hurd/2026/04/msg00016.html) +that the Hurd can support nvmes with rump, but that the work was just +not done yet. Perhaps you, dear reader, would like to help us +accomplish this task? + +The mysterious user yelini worked on [porting the D language compiler](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00069.html). + + +Damien Zammit worked on [tweaking the Hurd’s WIP +CI](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00139.html). +He also +[fixed](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00106.html) +[several](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00100.html) +[bugs](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00117.html) +to make it possible to run the Hurd’s test suite from GNU/Linux +running on an AArch64 computer. He also is working on integrating +qemu’s Hurd support into [upstream qemu’s +CI](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00102.html), +so that the support does not bitrot. + + +Sophiel Zhou fixed [a tiny pfinet permission checking +issue](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00027.html) +and taught [pfinet to not fail under memory pressure](https://lists.gnu.org/archive/html/bug-hurd/2026-06/msg00043.html): + + This series fixes two latent crash bugs in pfinet where mmap + return values go unchecked, may causing crash when memory is tight. + + Both bugs follow the same pattern: mmap is called to grow a buffer, + but the returned pointer is dereferenced before (or without) checking + for MAP_FAILED. Under normal operation mmap rarely fails, so these + have gone unnoticed, but under address-space pressure pfinet would + crash. + -- 2.53.0
