9front "THIS WAS SUPPOSED TO BE FUN" Released

Lobsters Hottest 产品

摘要

9front, a Plan 9 fork, releases a new version codenamed 'THIS WAS SUPPOSED TO BE FUN', featuring updates to affinewarp, a new gdbfs tool, Synaptics driver, SHA3 support in libsec, and more.

<p><a href="https://lobste.rs/s/peqq4p/9front_this_was_supposed_be_fun_released">Comments</a></p>
查看原文
查看缓存全文

缓存时间: 2026/08/03 05:30

# 9FRONT "THIS WAS SUPPOSED TO BE FUN" RELEASED Source: [https://9front.org/releases/2026/08/02/0/](https://9front.org/releases/2026/08/02/0/) ![front](http://9front.org/img/thiswassupposedtobefun.front.png) ## NOTABLE CHANGES In this release: - revised affinewarp API, many programs now using it for scaling/zooming - new: gdbfs\(4\) tool that lets you mount a remote gdb as a /proc - new: Synaptics driver - new: nusb/battery driver \(for UPS\) - new: nusb/dump tool to dump usb descriptors - new: libsec got support for SHA3 - new: awk got a testsuite - new: pc/pc64 kernel now support \*x2apic= ## DOWNLOAD Multiple installation media are provided for PC, Raspberry Pi, MNT Reform, and QEMU\. For PC, burn an \.iso file to CD, or dd it directly to USB media\. For Raspberry Pi or MNT Reform, dd an \.img file directly to sdcard\. The pi\.img file can be used for Raspberry Pi 1, 2, and 3\. The pi3\.img file can be used for Raspberry Pi 3 and 4\. QEMU images are provided in QCOW2 format\. [http://9front\.org/iso/9front\-11952\.386\.iso\.gz\.torrent](http://9front.org/iso/9front-11952.386.iso.gz.torrent) [http://9front\.org/iso/9front\-11952\.amd64\.iso\.gz\.torrent](http://9front.org/iso/9front-11952.amd64.iso.gz.torrent) [http://9front\.org/iso/9front\-11952\.amd64\.qcow2\.gz\.torrent](http://9front.org/iso/9front-11952.amd64.qcow2.gz.torrent) [http://9front\.org/iso/9front\-11952\.arm64\.qcow2\.gz\.torrent](http://9front.org/iso/9front-11952.arm64.qcow2.gz.torrent) [http://9front\.org/iso/9front\-11952\.honeycomb\.img\.gz\.torrent](http://9front.org/iso/9front-11952.honeycomb.img.gz.torrent) [http://9front\.org/iso/9front\-11952\.pi\.img\.gz\.torrent](http://9front.org/iso/9front-11952.pi.img.gz.torrent) [http://9front\.org/iso/9front\-11952\.pi3\.img\.gz\.torrent](http://9front.org/iso/9front-11952.pi3.img.gz.torrent) [http://9front\.org/iso/9front\-11952\.reform\.img\.gz\.torrent](http://9front.org/iso/9front-11952.reform.img.gz.torrent) ``` ; sha1sum -2 256 9front-* b338c4cdf65d9fb8950b22dd21873d27d15254862cb9de8f7cd0c112b2663b05 9front-11952.386.iso.gz 59ba79f1304f02c1aae573b337fa2569fc78027ce8e4c2056c4117e971025b91 9front-11952.amd64.iso.gz 3c1b57c4b609525e76cb0abac48bc657f71187fd3506674dba4e49b42141729c 9front-11952.amd64.qcow2.gz 1199debe5e9cadadb9d143c9f64ef02c8a8010e173ebbff69aeaa23dff1a7457 9front-11952.arm64.qcow2.gz c009cde1200d107c902030126b82d8aaec05356e0afcfed2b27291f68265b247 9front-11952.honeycomb.img.gz 704e87d263a27c5f3077f9aec3126acefcc1bdbc4729584bbd28ec33eedfbc25 9front-11952.pi.img.gz 7bf714dfb6d5a07a3bc64cebf113a1419f15bf9e208214bddcc64d5c6410c84f 9front-11952.pi3.img.gz e7c3dcaf95216a1ce0849947fca61ed75994de5af7dc20bbd1dc386af77a58a6 9front-11952.reform.img.gz ``` ## MIRRORS [https://9front\.org/iso/](https://9front.org/iso/) ## GIT REPOSITORY [http://git\.9front\.org/plan9front/9front/HEAD/info\.html](http://git.9front.org/plan9front/9front/HEAD/info.html) ## DASH 1 MANUAL [http://fqa\.9front\.org/dash1\.thiswassupposedtobefun\.pdf](http://fqa.9front.org/dash1.thiswassupposedtobefun.pdf) dash 1 manual:[http://9front\.org/propaganda/books](http://9front.org/propaganda/books) ## SONGS by qwx [http://9front\.org/mp3/ost\.r12\.flac](http://9front.org/mp3/ost.r12.flac) by hgc [http://9front\.org/mp3/hgc\.i\.feel\.like\.rob\.pike\.flac](http://9front.org/mp3/hgc.i.feel.like.rob.pike.flac) ## THANKS For what? ## KERNEL AND DRIVERS 9boot: Stop PXE stack manually before booting\. 9boot: mkfile: install “bootaa64\.efi” into /arm64, create 9pc64 kernel test image by default aux/acpi: free acpi tables after parsing, if possible aux/vga: igfx: fix DP lane count register for Sandy Bridge bootrc: set $NPROC for gefs devaudio: fix parsing of “in” and “out” ignored options to volume write devdraw: fix devdraw kernel buffer leak \(thanks Arusekk\) devether: always use fixed receive queue sizes devether: don’t drop packets when bypassing devether: don’t print link status from interrupt context devether: inhibit transmission when link is down devether: set Qkick flag in Ether\.oq devip: correctly handle packets where len < hdrsz devip: ensure we have full headers in*iput\(\) and*forward\(\) devip: increase queue size for pktmedium to 1MB, dont block devip: use Ipifc\.loopback queue for pkt interface input \(avoiding recursion\) devkbd: Add \*kbdpoll= boot parameter \(for broken interrupts\) and cleanup the code devmouse: Driver for Synaptics touchpad devmouse: avoid nil pointer crash for absmousetrack\(\) and scrmousetrack\(\) devmouse: export lastmousems\(\) timer for protocol recovery\. devproc: Allow opening /proc/n/note and /proc/n/notepg when sharing same note group devshr: fix missing \*sizeof\(Qid\) in memmove ether8169: don’t mix lock and ilock\(\) in transmit ether82557: Add PCI ID for built\-in LAN adapter on Fujitsu\-Siements Amilo Si 1520 laptops\. \(thanks Yaroslav\) ether82557: add PCIID for Intel 82801CAM \(thanks yarikos\) ether82563: access to i82579 phy1 page 800 \(wake up registers\) ether82563: add a watchdog handling rx dma stuck condition ether82563: add did for i219\-v \(thanks HaveHope\) ether82563: fix “phy wedged” for i219, inhibit transmission until link\-up \(thanks hiro\) ether82563: fix link detection for i82566 \(and possibly others\) ether82563: fix phy handling according to datasheets ether82563: fix transmission getting stuck ether82563: preserve multicast table during reset ether82563: put full 64\-bit PCIWADDR\(\) into registers\. ether82563: receive and transmit descriptor counts are constant, use mallocalign\(\) ether82563: use ethermii for phy access ethermii: set page for mmd register access ethermii: support phy register extension using paging icmpv6: fix some potential out of bounds accesses in valid\(\) ipmux: allow single digit value expressions for single bytes ipmux: check for contradicting \(excluding\) filters ipmux: data\-range can’t exceed 255 bytes in parseop\(\) \(thanks moody\) ipmux: fix memory leak in ipmuxtreefree\(\) kernel: allow building without uarti8250, generating dummy i8250console\(\) function kernel: avoid reacquiering imagealloc\.Lock kernel: don’t hardcode reclaim page target, use palloc\.headroom, kick pager before acquiering pwait queue kernel: fix dropped beagle config for removal of esp kernel: fix newpage\(\) and pager wakeup\(\) kernel: fix typo in freenotes\(\) kernel: fix wrong accounting for imagealloc\.pgidle \(thanks qwx\) kernel: make qiwrite\(\) handle bypass, make local copy of q\-\>bypass before nil check kernel: move Mnt\* out of portdat kernel: nuke devsdp and ip/esp nusb/battery: Add HID battery driver \(for UPS\) nusb/disk: raise usb endpoint timeout nusb/dump: display human\-readable information about usb device nusb/joy: add 2 xbox360 compatible controllers nusbrc: add cdd vid/did for Realtek ‘USB 10/100/1G/2\.5G LAN’ \(thanks edo\) nusbrc: attach rtl8153 devices as cdc ethernet nusbrc: honor $etherargs for devices that also show up as cdc pc, pc64: zero registers on the way out of the kernel pc/pc64: Rename Aintr\.intr to Aintr\.type, remove entry type field\. pc/pc64: allow conflicting ioalloc\(\) resources with ACPI pc/pc64: dont clobber NMI disable bit in port 0x70 when reading rtc/nvram pc/pc64: ensure valid destination lapic, print machno and tbdf in \#P/irqalloc pc/pc64: enumerate \_CRS methods, provide \*noenumcrs= option to disable that pc/pc64: implement x2APIC support pc/pc64: move MP\-table struct definitions out of mp\.h into archmp\.c pc/pc64: print gsi of interrupts for \*apicdebug= pc/pc64: put devkbd*after*devusb in devtab pc/pc64: rework mp interrupt code pc/pc64: use VectorMC instead of constant 18 for machine\-check vector pc/pc64: use linked lists for lapics and ioapics instead of arrays pc/pc64: use x2apic when cpu0 uses it pc64: fix punmap\(\) pc: vmx: fix potential buffer overflow in fpregs write from typo qio: make trimblock\(\) free blocks for negative offset or len, fix missing unlock in rudp sgi/mouse: use lastmousems\(\) uartpci: Oxford Semi OXPCIe952 usbxhci: fix initialization issues \(thanks edo\) vgaradeon: fix KADDR panic on amd64 \(thanks john\) xen: stub out nvramread\(\) to get nmienable\(\) compiled \(never called in xen\) ## COMPILERS, LINKERS, DEBUGGERS 5l: add missing \[F\]HOREG case for register offset class \(thanks qwx\) 9a, 9l, tl: remove unused function declerations acid: don’t let breakpoint instructions mangle asm\(\)’s output cc: bump max include directories limit cc: fix the fix of taking address of incompletely defined types cc: untangle class and type specifiers gdbfs: fix short buffer in gdbwritemem gdbfs: off\-by\-one in arg parsing error msg gdbfs: spawn the gdb processes in the file\-server proc’s note group gdbfs: use encode\(2\) for hex funcs gdbfs: use standard stack size for gdbproc ## LIBRARIES ape: libsec: reduce diff with main libsec\.h ape: libsec: sync sha3 changes draw\.h: add BGR15 chan format libaml: add dropped header defs from previous commit libaml: defer freeing Name objects in gc\(\) until all regions are unmapped libaml: don’t crash when formatting unresolved name \(n\) with Nfmt\(\) libaml: implement Timer opcode, make amldelay argument 64\-bit libaml: implement ToBuffer operation \(0x96\) libauth: correctly terminate nsfile args with nil libc/9sys: avoid a buffer overflow formatting a stat in fcallfmt \(thanks Arusekk\) libc/9sys: make fcallfmt more obviously correct libc/amd64: fix setfcr libc/test/pow\.c: setfcr\(\) for 386 and potentially mips libc: initialize privalloc memory to zero libc: simplify utf\* functions libc: utfwbreak: do not read past end of string libdraw, libmemdraw: increase Warp decimal fixed\-point precision to 13 bits libdraw: add missing error messages in creadimage\(\) libdraw: avoid temporary integer overflow in unitsperline\(\) \(thanks nposting\) libdraw: constrain image rectangles to a subspace of int×int to avoid overflows libgeometry: make centroid3?\(\) right libmemdraw: add missing error messages in unloadmemimage\(\) libmemdraw: add optimized BGR15 \(get\|put\)pixel routines to memaffinewarp\(\) libmemdraw: assert chan type uniqueness except for CIgnore libmemdraw: avoid division in the memaffinewarp\(\) k\[124\] routines libmemdraw: avoid sw cursor for cloadimage and memaffinewarp \(thanks rodri\) libmemdraw: catch integer overflow in allocmemimage\(\) libmemdraw: clean up some parts of draw\.c libmemdraw: finish the special handling of horizontal and vertical lines in memimageline\(2\) libmemdraw: fix intupscalewarp\(\) libmemdraw: fix some of the error reporting libmemdraw: move tests to test/ directory libmemdraw: remove clipped arg from \_memfillpolysc\(\) and do a little cleanup libmemdraw: remove potential race condition from memdraw\(\) libmemdraw: remove unused code frome line\.c libmemlayer: initialize dst and src rectangles correctly in memlaffinewarp\(\) libsec: add sha3*\* and shake*\* libsec: avoid strecpy\(\) and use seprint\(\) instead \(for APE\) libsec: blake2s: fix block chunking libsec: fix off\-by\-one in namedcurves scan \(thanks leimy\) libsec: fix typo in ecdsaverify\(\), failing s<n check \(thanks leimy\) libsec: sand of sharp edges for makeciphers\(\) \(thanks leimy\) libsec: sha3 and sha2 BIGMAC hmac functions libsec: x509: appendaltnames needs to append ## PROGRAMS \*: fix use of strncat Mail: fix some off by one rendering issues acme: resize tag when writing to tag programatically \(thanks nposting\) astro: complete tz fix – we support timezones longer than 3 chars now\. astro: ensure we null\-terminate timezone names astro: fix thinko auth/factotum: Allow reading and iterating over private keys for proto=rsa role=sign protocol \(thanks kws\) awk: add test suite awk: adding missing test files awk: fix setting RLENGTH wrong when there’s no match awk: fix test script permissions bmp: ensure color tab entries are within bounds disk/qcowfs: set refcount of new refcount blocks to 1 ed: fix rune alignment exportfs: kill procs using PNGROUP on exit \(work around “none” user /proc permissions\) games/^\(eui\.c doom rotzoomer\): use new affinewarp api games/doom: fix incomplete shutdown on error or end of demo games/doom: simplify pal2xrgb\(\) games/doom: use affinewarp\(2\) for upscaling \(thanks nposting\) games/gb: store sram in save state as well games/gba: use the BGR15 chan on initemu\(\) games/md: 6 button and 2nd port controller support games/md: SRAMEN is only technically needed for roms \> 2MB \(thanks qwx\) games/md: add support for SEGA mapper games/md: correctly zero out some controller bits games/md: implement TMSS games/md: skip sram if cart doesn’t support it gefs: ‘snap’ messages don’t need to hold an epoch gefs: adjust ctl interface for usablility gefs: back out unintentional portions of previous commit gefs: be extra careful about referring only to committed trees gefs: be stricter about checking wstat parameters gefs: btnext\(\) should not return deleted nodes gefs: clean old snaps when retain is disabled gefs: clean up and fill gaps in error handling gefs: clean up readonly handing in mutator proc gefs: clean up waserror\(\) use gefs: clearer ctl naming gefs: correctly handle short reads from disk gefs: correctly refcount snaps gefs: cosmetic changes, better comments on pass 4\. gefs: count all deadlist nodes in dlcount gefs: defer dlist reclamation gefs: do not treat retention periods without a specified count as disabled gefs: don’t allow creates in files gefs: don’t allow double deletions with ORCLOSE gefs: don’t go read\-only when recovering from broken arena header gefs: ensure we never write to immutable snaps gefs: errors iterating the snap tree are still errors gefs: fix accounting on deadlist cache gefs: fix asserts/spill scan in tree gefs: fix build warning gefs: fix deadlist consistency on crash gefs: fix double free of deadlist blocks gefs: fix message going to wrong leaf when rotating gefs: fix missing waserror\(\) gefs: fix refcount leak when deleting snapshots in some cases gefs: fix tree refcount mismatches gefs: get rid of ‘fs too busy’ error when trimming snaps on mount gefs: hosst loadfs before all places that depend on it gefs: improve check performance gefs: improve ctl file formatting gefs: improve error message for ignored config keys gefs: initialize flags on directory entries to 0 gefs: make check print status at end of check gefs: mark auth fid as open \(thanks noodle\) gefs: match DMEXCL semantics with cwfs on remove gefs: move admin commands to ctl file gefs: move scratch tree to stack gefs: only allow one concurrent epochclean gefs: only print pivot warnings in debug mode gefs: only remove a root node from the tree when we flushed its messages gefs: packsuper does not return nil, and sysfatal is not appropriate here gefs: put the snap deadlist in limbo gefs: reduce debug output gefs: refuse to write config to immutable snaps gefs: remove epochwait\(\) gefs: remove useless memset gefs: rename getmnt to mountlookup gefs: replace assert on buffer size with proactive check gefs: replace bad message train assert\(\) with broke\(\) gefs: respond to Twrite in read\-only fs mode gefs: show callerpc for corrupt block gefs: show default config if no override is set gefs: show value instead of key in showval\(\) fallback gefs: simplify and correct growfs code gefs: stricter consistency checks on deadlists gefs: style fixes, don’t double compute mbits gefs: teach check to verify refcounts gefs: temporarily disable batch snap cleanup gefs: the comment is a lie git/branch: conserve memory by getting rid of $cleanpaths git/branch: ignore touch error \(for /adm\), use touch \-c for bumping mtime git/clone: don’t redirect git/get errors to stdout git/clone: properly quote the output dir when creating branch git/commit: \-p for partial commits git/commit: fix \-p namespacing and new file handling git/commit: fix typo in git/commit \-p git/commit: only include files with modified hunks in commit \-p git/conf: limit the number of config files to nelem\(file\) git/fs: don’t allow walking to ‘\.git’ git/get: check getfields count git/get: correctly skip duplicated refs git/get: don’t silently change protocols from http to https git/hist: fix relative path usage within subdirectories git/import: do not break on no new line messages git/init: run git/conf inside repository git/log: don’t spuriously show files as changed in first commit git/pack: clean up prefix match, look at right nibble git/pull: show change log before we switch branches git/query: add missing ignore for git submodules git/query: handle submodules in ‘git/query \-c’ git/rebase: fix typoed ‘nocommit’ git/serve: HEAD should be zero on empty repos git/serve: correct capping of delta length git/serve: don’t return spurious error, pick best index for new HEAD git/serve: only gitinit after cd'ing into git repo git/serve: we were sending a junk head if we couldn’t read it git: Objset\-\>obj is an Object\*, not a hash git: correct handling packfiles with offsets that have the top bit set git: correctly inherit permissions from the \.git dir for directories git: disallow parsing sketchy names in packs git: don’t leak pipe fd into spawned programs git: dont' mangle ‘/’ in repo urls git: double check for overflows and sign extension in pack parsing git: fix a couple of integer overflows in packfile parsing git: fix and improve subdirectory handling git: fix typo causing partial listings when supplying git/diff \-u with a path git: fix typo in pack\.c \(thanks rransom\.877\) git: fix warning git: remove debug print git: rename types for clarity htmlfmt: also print title htmlfmt: fix title \(only print once\) htmlfmt: output links as footnotes by default image/^\(affinewarp histogram\): use new affinewarp api ip/dhcp6d: Reply to RELEASE message\. ip/tinc: Fix replay filter bug \(thanks moody\) mk: defer unpretended targets until all are unpretended mothra: fix form sumission leaing user’s files \(thanks kristo\) ndb/cs: print address that couldnt be translated ndb/dns: randomize srv records\. page: use affinewarp\(2\) for navigation and zooming page: use new affinewarp api patch: clean up temp files when create fails patch: correctly handle clobbering new files patch: handle almost\-malformed patches patch: refuse patching empty file names plumb: use idle counter in thread pool rc\-httpd: filter out \. for $SERVER\_NAME \(thanks penny and Mark Otzen\) rc: do not print to stderr if whatis does not find something rc: don’t let dups clobber “from” fd of file\-redirects\. rio: don’t treat chords as the start of a double click \(thanks hiro\) rio: fix momentum when scrolling using button 1 and 3 single clicks samterm: don’t treat chords as the start of a double click \(thanks hiro\) samterm: fix momentum when scrolling using button 1 and 3 single clicks samterm: follow rio’s scrolling behavior once and for all service/\!tcp564: remove bad example stats: Add shr/usb/battery to battery file list stats: sum up both battery capacities games/eui\.c: use affinewarp\(2\) for upscaling tlssrv: add \-T timeout option to prevent connection hogging upas/Mail: also change htmlfmt in suggested actions upas/Mail: fix leaks when composiing messages upas/Mail: remove ‘\-a’ flag, footnote URLs are more readable upas/fs: ignore bad thumbprints for TLS connections\. upas/fs; allow clearing the last flag on an imap message \(thanks noodle\) upas/send: allow user to mail themselves if mbox dir isn’t other writable and add more error messages upas/smtp: declare return type of yylex upas/smtp: don’t turn \\r\\n into \\r\\r\\n upas/smtp: limit number of bangs in bangtoat upas/smtpd: declare return type of other yylex upas/smtpd: delete dead and useless code upas/smtpd: handle \\r\\n in pipelines upas/smtpd: syslog\(…\) readcertchain\(…\) failure during starttls\(\) upas/smtpd: when parsing PLAIN auth, only look for nul in bounds\. uptime: use monotonic time vnc: touch the artwork and remove unused mainmem reference \(i’ll regret this\) zuke: fix old cover not getting fully cleared when new cover has a smaller width or height ## DOCUMENTATION /sys/doc/gefs: fix typos \(thanks sleepydog\) /sys/doc: add dp9ik\.txt 9boot\(8\): document bootaa64\.efi, document \*nopxestop= parameter\. 9p\(2\) says remove\(\) should call removefile acmemail\(1\): fix typo “and” \-\> “an” \(thanks eduardo\) allocimage\(2\): document deprecation of dolock flag in \(read\|write\)image\(\) \(thanks umbraticus\) atomic\(2\): note that use is discouraged atomic\(2\): update and clean up cron\(8\): use $ instead of italic for user as it’s clearer on terminals and matches newuser\(8\) crop\(1\): add missing source crop\(1\): see also vcrop draw\(2\): document new behavior of mkwarp\(\) and improve description of affinewarp\(\) \(thanks nposting\) fshalt\(8\): mention gefs games\(1\): add a description for rotzoomer games\(1\): add rotzoomer \(thanks unrznbl\) games\(1\): rotzoomer’s \-s option takes no argument gdbfs\(4\): add manual page gdbfs\(4\): add default port to manual gdbfs\(4\): refine language in manual gefs\(8\): fix typo \(thanks jpm\) gefs\(8\): update manpage to match current state of gefs geometry\(2\): add missing routines in the NAME section \(thanks qwx\!\) git\(1\): add example for rewinding a branch \(thanks noodle\) git\(1\): clarify git/branch \-n ip\(3\): remove references to ESP protocol ipserv\(8\): fix two misspellings kill\(1\): document Kill man\(2\): delete manpage for removed function qball man\(9\): remove useless manpages man: add pdf references to papers pc\(1\): fix typo with \> sign proc\(3\): document “wired \-1” behaviour\. resample\(1\): remove misleading paragraph rsa\(8\): include the full paths for commands in SYNOPSIS runecomp\(2\): fix source references to ucd dir smtp\(8\): document missing flags in SYNOPSIS and fix \-h flag usage message for upas/smtpd totp\(1\): correct typo in example \(thanks akw\) upasfs\(4\): add \-C \(thanks flowerss\) ## OTHER /adm/timezone/README: describe how to generate tz files \(thanks noodle\) /lib/legal: no computer generated code /rc/bin/inst/mountgefs: move to new ctl syntax /rc/bin/inst/mountgefs: update for new ‘retain’ syntax /rc/bin/inst: bail out of ndbsetup if we dont have an ethernet device /sys/games/lib/fortunes: Try, and see\. —John Whiteside Parsons /sys/games/lib/fortunes: mention HERMES\.md /sys/lib/plumb/basic: extend non\-ascii ranges to supplementary unicode planes timezones: fix Egypt DST time zone name remove /rc/bin/E ![back](http://9front.org/img/thiswassupposedtobefun.back.png)

相似文章

OpenBSD 7.9 发布

Lobsters Hottest

OpenBSD 7.9 已发布,包含针对 arm64、amd64、luna88k、riscv64 等架构的平台特定改进,以及各种错误修复和增强的硬件支持。

iwp9 2026

Lobsters Hottest

第 12 届 Plan 9 国际研讨会的幽默注解摘要,涵盖音频制作、安全、工具链等主题的演讲。

FFmpeg 9.0

Hacker News Top

FFmpeg 9.0 是流行的开源多媒体框架的重大版本发布,提供用于音频、视频、字幕和元数据处理的库和命令行工具。