9FRONT “DO NOT INSTALL” RELEASED (2024/04/28)
NOTABLE CHANGES
First in this release:
Ext2srv has been replaced by Ext4srv. Thanks sigrid!
We are now able to handle more USB audio, even ones that do not offer standard 44.1kHz sample rate. (Sigrid!)
We got DNS over TLS support. Thanks moody!
WiFi support for Raspberry PI ported from Richard Miller. Thanks keegan!
I2C support and improved UART support for MT7688. Thanks adventuresin9!
Vdiff, a graphical diff viewer got added! Thanks phil9!
Mixfs now allows switching between audio devices. Thanks cinap_lenrek!
Warning:
- The behaviour of the IP stack has changed in this release. Routes now bound to an interface and will get removed when the interface goes away. And it is illegal to add routes that cannot be assigned to an interface.
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://iso.only9fans.com/release/9front-10522.386.iso.gz.torrent
http://iso.only9fans.com/release/9front-10522.amd64.iso.gz.torrent
http://iso.only9fans.com/release/9front-10522.amd64.qcow2.gz.torrent
http://iso.only9fans.com/release/9front-10522.arm64.qcow2.gz.torrent
http://iso.only9fans.com/release/9front-10522.pi.img.gz.torrent
http://iso.only9fans.com/release/9front-10522.pi3.img.gz.torrent
http://iso.only9fans.com/release/9front-10522.reform.img.gz.torrent
; sha1sum -2 256 9front-10522*gz
1c9ffaa779e6d239ab7be6facea00e338e63cd8a7ca101b0c76952d650565705 9front-10522.386.iso.gz
89f1e35bf735bfc9aeca38286a9a6607f3a40292befa4a30133157790f2edbcc 9front-10522.amd64.iso.gz
54550d09d83aa8223c043ab1e95d3f6d08b781c089ac0d684848c69a4e03e347 9front-10522.amd64.qcow2.gz
a6040e87a9738b44af9394c076384cf65f10e3e7a9198bfc775deaa2e81c5c27 9front-10522.arm64.qcow2.gz
d16439ae8d354a64f09b6656ad4454469da281415d4a1840623573c473821fcf 9front-10522.pi.img.gz
c3d971c51101febd71fb6f0df95619ea2dbf6e2079f569d5544f12f0ceb5c3b4 9front-10522.pi3.img.gz
7191a76660367ae71c347a494db99afbf2d88d75c15a9763672e084d22a8f9ad 9front-10522.reform.img.gz
MIRRORS
https://iso.only9fans.com/release/
GIT REPOSITORY
http://git.9front.org/plan9front/plan9front/HEAD/info.html
DASH 1 MANUAL
http://fqa.9front.org/dash1.donotinstall.pdf
dash 1 manual: http://9front.org/propaganda/books
SONGS
by cinap
http://9front.org/mp3/do_not_install.mp3
by sl
http://9front.org/mp3/donotanswerx3.mp3
THANKS
cover photo by sigrid
do not install logo by prahou
KERNEL AND DRIVERS
arm64/qemu: add xhci usb
arm64/qemu: detect VM configuration
audioac97: add 0x27de did
bcm64: fix build caused by added bootargs file in arm64/
devether: handle bypass case for dmat
devether: make dmatproxy part of devether
devether: use qfull() instead of qwindow()
devip: fix isula()
devip: handle interface spec correctly for writes to /net/iproute
devip: no more wandering routes
devmnt: handle too short or negative message sizes
devpipe: use 256k pipeqsize as default, make sure its a multiple of the i/o unit
devsdp: fix randomization of dial and acceptid
devuart: dont allow ridiculous queue sizes
devuart: should use rts() control only when hw flow control is enabled (modem flag)
ether4330: dmat support
ether4330: ignore join request while bypassed
ether4330: set link status, omit “status:” line from ifstats for aux/wpa when bypassed
ether7688: fix compiler warnings
ether8169: fix rx/tx on more recent realtek models (thanks uramekus)
etherseeq: defer enabling controller until attach(), provide shutdown() function
ethervirtio: make multicast work (thanks Arne)
igmp: maintain timeout per group per interface
imx8, arm64: fix tbdf argumnt position for intrdisable() (thanks cosa)
imx8/sai: run off ref 25MHz clock - no need to turn audio PLL on
imx8: the mpid should not contain other bits from MPIDR_EL1, only the AFF bits
kernel: Fix qio flow control
kernel: Use _Noreturn for gotolabel(), error(), nexterror() and panic()
kernel: add extra “New” process state to catch invalid state transitions
kernel: add pc field in QLock for debugging
kernel: bring back cooperating scheduling
kernel: delcare nalemenerror() and faulterror() as _Noreturn
kernel: do nlocks && delayshed check only for Running state
kernel: don’t sched() for clock interrupt when up->state != Running
kernel: dont zero up->nerrlab in syscall()
kernel: fix EDF scheduler double ready() and more robust double-ready detection
kernel: fix addbroken() race
kernel: fix the semacquire stack corruption on interrupt
kernel: fix typo in sema assert= vs == (thanks moody)
kernel: handle errors in semacquire
kernel: make sure process is in Queueing state in qunlock()
kernel: make trap() handlers consistent and check for stack overflow in kenter() for all archs
kernel: never do sched() in unlock() when not in “Running” state.
kernel: print warning in rlock() and wlock() when we hold spinlocks
kernel: remove some debugging cruft from taslock.c
kernel: remove unused Proc.lockwait Lock pointer
kernel: remove unused variables from arm trap() handler
kernel: zero Proc.lastlock and Proc.lastilock in newproc()
kernel: zero up->ureg on sysexec() and pexit()
mt7688/uart: fix compiler warnings, fixed interrupts
mt7688: add devarch and i2c
nusb/audio: fix division by zero error
nusb/audio: great new features
nusb/audio: name audio device as audioUxxxx/volumeUxxxx (thanks arne)
nusb/audio: pick a different rate if 44.1kHz is not available
nusb/ether: implement link status for a88179
nusb/kb: increase uchar rep from 512 to 1024, makes thinkpad x280 usb touchscreen work
nusb/ptp: transaction IDs are sequences of numbers starting with 0 (thanks unobe)
nusb/usbd: fix typos
nusbrc: ignore ITE RGB LED Controller
pc, pc64: fix rlock: nlocks 1 print from vga
pc, pc64: simplify error handling setscreensize()
pc64: no need to CLI in noteret() and forkret()
pc64: set accessed and dirty bits in PTE to avoid write-back
pc64: use chain of IDIVQ for delayloop() (former aamloop())
pc: fix link order, libc.a after libsec.a (for rand())
pc: use JMPF instead of indirect jump for going to syscall()
qio: fix deadlock with qdiscard()
qio: fix queue bloat blocking condition for qwrite()
qlock: keep the caller pc in the qlock for debugging
rudp: better newgen() function, avoiding the lock
rudp: fix start generation randomization and cleanup
sdide: add pci id for SiS 964 IDE controller (thanks mrunix00)
sgi: fix botched conversion to stacks below Proc.
sgi: make newport graphics work in MAME
tcp: fix limbo entry leaks from hell
tcp: remove “MaxSegment” MIB stat, add InLimbo stat
usbxhci: fix high/super speed iso transfers
zynq: fix missing return argument for intr()
zynq: fix unused argument warning in procrestore()
COMPILERS AND LINKERS
6?, 8?, libc: add JMPF instruction
6[acl], libmach: add 3-byte opcode encoding support for SSE[34] along with some instructions
6c: fix botched “embedded struct conversion codegen”-fix
7c: fix storeprop() sign extension bug
7l: dont dump constant-pool in the middle of switch/case jump table
7l: fix constant pool size for imm14 displacement for TBZ/TBNZ
?c: allow registerizing .ret (thanks rodri)
?c: fix nodret check
cc: don’t rearrange constant scaling across unsigned casts
qc: fix crash, nodet not nused/initialized
LIBRARIES
libc, libthread, ape: mark exit functions as _Noreturn and clean up new warnings
libc: add _callmain to share more initialization code
libc: correct dst transition times
libc: deduplicate fake cycles() imeplementation to port/
libc: remove dead code from main9p.s
libgeometry: add barycentric interpolation routines
libgeometry: add matrix minor and cofactor functions
libgeometry: fix typo from previous commit
libmach: add DPPD decoding for amd64
libmach: add HSUBPD decoding for amd64
libmach: add TBZ and TBNZ instructions for arm64
libndb: do some extra robustness checks around hash files
libpcm: audio/pcmconv-as-a-library
libpcm: fix pcmratio - forgot to adjust for output frame size
libtags/m4a: “gnre” is non-standard id3v1 style (non-text) - check before reading the value
libtags/wav: don’t stop on data (tags may follow after); don’t stop after 8 sections either
libtags/wav: process unknown tags as well
libtags/wav: respect buffer size when reading tag value
libtags: add Tcomposer and Tcomment
libtags: correct 437 codepage
libtags: fix multiple issues found by fuzzing
libtags: separate “album artist” key
libtags: sync with upstream
PROGRAMS
*: make Rerror for non existent files consistent
9boot: use BIOS tick counter instead of INT 0x15 WAIT
9fs: add iso case for nightly iso box
9fs: case 9front: move extra to plan9.stanleylieber.com
9nfs: fix rfork() race with shared pid variable
?i: correct memory access
Mail: add ‘Mark +s’ to default tag
Mail: show cc list in message view
ape: bring in entrypoint changes from libc and fix profiling across the board
audio/flac: remove unused var; add a missing newline
audio/mixfs: allow switching between audio devices (/dev/audio*)
audio/mixfs: convert pcm for devices that are not 44.1kHz
audio/mixfs: fix volume proxying; ignore audioctl and audiostat - not device names
audio/mixfs: resample based on audio dev output format, not just the rate
audio/mkplist: fix wrong pointer being dereferenced
audio/pcmconv: use libpcm
audio/readtags: print Tunknown tags
aux/wpa: continue trying to connect when forked
awk: fix out of bounds write with large fields (thanks kristo)
bootrc: make sure essid and wpapsk are used literally
cifs: fix rfork() race with shard pid variable
cifsd: clarify SMBv1 is supported, not SMB 2/3.
date: remove reference to dead -m flag (thanks Thim Cederlund)
disk/qcow2: fix crash with misaligned sectors
disk/smart: fix a warning
ethermultilink: ignore link-status of primary
ext4srv: add append-only and temp files support
ext4srv: clean up and fix a couple bugs
ext4srv: correct the “not found” walk error
ext4srv: dir/index: disable htree csum checks for now (lwext4 broken); fix a few bugs
ext4srv: disallow fwrite/ftruncate on files not open for writing
ext4srv: ext4_crc32c: use u32int macro
ext4srv: ext4_recover: fix a deadlock on filesystems without a journal
ext4srv: faster crc32c
ext4srv: fix ..-walk from a dir under root
ext4srv: fix a missed size decrement; fix 32-bit int crc32 on big endian
ext4srv: fix dir/idx case when creating new dirs; update mtime on writes; close dirs after create
ext4srv: fix ext4_bmap_bit_find_clr returning the wrong bit index
ext4srv: fix meta csum producing garbage
ext4srv: fix/simplify ext4_bmap_bits_free
ext4srv: generate a uuid when doing mkfs; don’t journal ext2
ext4srv: reduce the number of options, align more with existing filesystems
ext4srv: remove mbr scanning and writing
ext4srv: replace ext2srv with ext4srv
ext4srv: revisit “fix meta csum producing garbage” in a better way
ext4srv: support ORCLOSE
ext4srv: update inode change time on wstat
ext4srv: walk: set QTTMP
fshalt: halt ext4srv as well
g: search .S files
g: search in files with .txt suffix
games/gba: add rtc GPIO implementation
git/branch: don’t add dirs to removed file list
git/fs: don’t unload large objects when inserting into cache
git/get: move ERR handling into protocol code
git/log: ensure we’re starting to log from a commit hash
git/ref.c: check if object is a commit when needed
git/serve: provide better errors
git/walk: skip all paths with ‘.git/’ when creating the index
git: utilize time zone info when present and ignore it when it’s not
imap4d: be consistant with rest of system in log file name
ip/cifsd: dont add pointless logging (already logged when debug is active)
ip/dhcpd: don’t override local address for gateway case
ip/ipconfig: don’t add default route for ULA prefix
ip/ppp: fix race condition with rfork()
ip/ppp: increase echo timeout to 5 periods (25 seconds)
ip/ppp: lower echo timeout to 2 periods (10 seconds)
ip/ppp: remove -> del
ip/torrent: allow seeding files from read-only contexts.
ip/torrent: fix webseed when there is only one defined in the torrent file
ip/torrent: only register note handler in one proc
ktrace: _intrr -> noteret (pc64)
ktrans: correct Korean input (thanks npmania!)
ktrans: graphical upgrade and feedback
merge3: make identical changes merge cleanly
mk: Various improvements
ndb/dns: DoT support
ndb/dns: fix dnsservers() function
ndb/dns: give each DoT server Maxtcpdialtm + 500ms to complete request
ndb/dns: log appropriate message when thumbfile is missing, make tcpfree static, timeout constants
ndb/dns: set procname() for tls server
ndb/dnsdebug: fix dnsserver override (thanks moody)
ndb/mkhash: handle database= reordering, check offset overflow, remove file
rc: handle Xeflag in exitnext()
rio: fix memory leak with closed kbdtap (thanks aap)
snoopy: add igmp protocol
snoopy: teach gre about ethernet and ip6 payloads (thanks arne meyer)
stats: use a high water mark for maximum on graphs
tapefs/^(v6fs 32vfs): fix read errors (thanks Lyssa)
tapefs: fix two warnings
telco: fix rfork() race for pid
vdiff: a visual diff viewer
vdiff: add ability to collapse file diffs
vdiff: add support for stripping path elements when plumbing
vdiff: correctly strip more than one prefix
vncs: bind devswap also for memory(1), this used to be in devcons
vncv: implement autoscaling via -a flag (thanks unobe)
zuke: add “composer” tag support (column hidden by default)
DOCUMENTATION
/sys/doc/nssec.ms: fix references section header
acmed(8): fix typos
audio(1): add a missing comma
audio(1): mention mixfs resampling audio
cal(1): indicate which reformation date is used
cal(1): remove redundant statement
diff(1): docuemnt merge3
diff(1): include merge3 name in diff manpage
ext4srv(4): fshalt works with ext4srv now, update; add SOURCE section
filter(1): small typesetting error
git(1): conform NAME to indexing assumptions
keyboard(6): use >> instead of > for caps example (thanks moody)
ndb(8): document thumbprint file for DoT
nusb(4): document usbhubctl command format for PPPS
nusb(4): fix Audio section
nusb(4): fix audio(3) reference
plan9.ini(8): document $sysname override
rio(1), rio(4): wctl /srv pipe is dead, mention ‘none’ attach (thanks unobe)
usbtree(8): document usbtree
OTHER
/lib/ndb/common: add tcp=dot port=853 entry
/lib/terry: speak no ill of the dead
/lib/theo: there is another possibility is everyone is out to get you.
/sys/lib/acid/kernel: fix proctab()
/sys/lib/dist/ndb/common: remove old random auth domains
/sys/lib/dist/ndb: update root servers and add script to keep them updated
/sys/lib/kbmap/caps: Add caps kbmap
/sys/src: remove testfiles on mk clean
inst: remove net install support
9FRONT “HUMANBIOLOGICS” RELEASED (2023/11/22)
Notable changes in this release:
New qemu kernel for arm64.
New /sys/src/9/arm64 directory with generic arm64 implementations that is shared with all the arm64 kernels (imx8, bcm64).
The arm64 and amd64 kernels now support using FPU in interrupt context.
32K IOUNIT.
Wifi and I²C support on the raspberry pi.
Ethernet switch-over (ethermultilink(8)) allowing to switch transparently between wifi and ethernet.
Libmach now supports ARM THUMB, so acid is now able to disassemble thumb code such as gba roms.
The efi loader has been ported to arm64.
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://iso.only9fans.com/release/9front-10277.386.iso.gz.torrent
http://iso.only9fans.com/release/9front-10277.amd64.iso.gz.torrent
http://iso.only9fans.com/release/9front-10277.amd64.qcow2.gz.torrent
http://iso.only9fans.com/release/9front-10277.arm64.qcow2.gz.torrent
http://iso.only9fans.com/release/9front-10277.pi.img.gz.torrent
http://iso.only9fans.com/release/9front-10277.pi3.img.gz.torrent
http://iso.only9fans.com/release/9front-10277.reform.img.gz.torrent
; sha1sum -2 256 9front-10277*gz
a04a0ec7179affc3c1289f34e748e4fb601b9124de4b5036031811f1c4321f55 9front-10277.386.iso.gz
fbf1a3f017369ee26479221feec43a660ca94b2037ed225552951aa62f4a044f 9front-10277.amd64.iso.gz
f4d69829ce7ccca4090bc80f2fa6b771148ff94f8e1610a0502a86d854861a31 9front-10277.amd64.qcow2.gz
1949091b674997d40aec6974f4f1634c4fefc1e6787ae290b604b6b13b431fe6 9front-10277.arm64.qcow2.gz
de3753dd8588579fe84f73887e9bda246de5118d97726a1261885b663f004bd3 9front-10277.pi.img.gz
49c572589aee80033855452eade9f0b9ccce00cdd4423bd84d1f01d24c520465 9front-10277.pi3.img.gz
acdb2b43fdf4ef76359aac755187afe39463f148614e447d44c47e426dc00077 9front-10277.reform.img.gz
MIRRORS
https://iso.only9fans.com/release/
GIT REPOSITORY
http://git.9front.org/plan9front/plan9front/HEAD/info.html
DASH 1 MANUAL
http://fqa.9front.org/dash1.humanbiologics.pdf
dash 1 manual: http://9front.org/propaganda/books
SONGS
by cinap
http://9front.org/mp3/humanbiologics2.mp3
by sl
http://inri.net/archive/2001/10/26/gravity/mp3/Gravity-Track_05-Piss_On_It_lofi.mp3
THANKS
[REDACTED]
KERNEL AND DRIVERS
9/boot/net.rc: allow setting additional flags to aux/wpa with $wpaopts in plan9.ini
add arm64 qemu kernel
arm64: mem.c doesnt need sysreg.h
arm64: remove hz/mhz from conf, not needed.
bcm, bcm64, imx8, kw: Fix missing preempted() call on non-clock interrupt (thanks Anthony Martin)
bcm, bcm64: Add bitbang i2cgpio driver
bcm, bcm64: handle disk activity led from sdmmc
bcm64, imx8, pc64: save stack space in fault handler
bcm64, imx8: fix breakpoint note strings
bcm64, imx8: provide more flexible MPIDR_EL1 CPUID to machno mapping
bcm64, imx8: writing CAPR_EL1 (to turn fpu on/off) needs a intruction barrier
bcm64: add i2c for pi3
bcm64: dont need sysreg.h in mem.c
bcm64: port new FPU code, making FPU available to interrupts
bcm64: remove sysreg.c
bcm64: use generic 9/arm64/* files
bcm64: use generic 9/arm64/mmu.c
bcm: add wifi driver
boot/efi: add arm64
boot/reform: update flash.bin url
devarch: recognize AMD Jaguar and Puma SoC’s (thanks dave)
devether: handle bypass outside of ethermux()
devi2c: expose the I2Cdev structure to the controller.
devip: add gratious arp ctl message to /net/arp
devip: automatically unbind interface on read errors
devip: fix comment ifc->id -> ifc->ifcid
devip: have findipifc() return rlock’d interface, allow to use “del” instead of “remove” for route and interface operations
devip: make some symbols static, cleanup
devip: run Medium.unbind() with ifc->conv released, cleanup
devpipe: remove bogus “wstat on closed pipe” note
devsd, sd*: use seprint() style start/end pointer for rctl() function
devsd, sdmmc, ether4330: improve infrastructure for sdio
devtls: allow larger than MaxRecLen (16k) writes
devuart: cleanup uart console code
devuart: fix wrong opens count in case of uartenable() error
devuart: handle software flow control (XON/XOFF) in devuart alone
devuart: make sure consuart was enabled before setting serialoq
devvmx: reset kernel fpu state before loading vmx fpu state
devvmx: restore previous initial value for xcr0
ether4330: annex sdM for emmc (changed order)
ether82563: add B360 i219-v
ether82563: clear force speed/duplex bits in link-up (thanks taw)
etherimx: ignore trailing 4 byte garbage in ethernet receive packet
etheriwl: Add support for Wireless AC 3160 (thanks kws)
ethermultilink: add “bypass” ctl for ethernet
ethermultilink: send gratious arp instead of flushing arp cache
ethermultilink: switch between different physical interfaces based on link status
i2cbcm: clean up and fixes
i2cbcm: use core clock rate from vcore instead of hardcoding 250Mhz
imx8, bcm64: make sure interrupts are of (sched() re-enables them)
imx8, bcm64: touser() already called splhi()’d
imx8: port new FPU code, making FPU available to interrupts
imx8: share generic arm64 mmu.c
imx8: usb: enable host IN auto retry
imx8: use generic 9/arm64/^(init9.s rebootcode.s)
imx8: use generic 9/arm64/cache.v8.s
imx8: use generic 9/arm64/fpu.c
imx8: use generic 9/arm64/sysreg.c
imx8: use generic 9/arm64/sysreg.h
imx8: use generic 9/arm64/trap.c
kernel: fix SEGMAXSIZE macro, force 64-bit result
kernel: make walk/open errors more consistent with userspace
kernel: move virtio10 drivers to port
kernel: support 32k iounit
nusb/disk: advertise the correct iounit for disk files.
nusb/disk: use IOUNIT constant for Maxiosize
nusb/disk: work around quirk in some CD drives
nusb/ether: implement link status detection for smsc and lan78xx
nusb/ether: make stats file compatible to stats(8)
nusb/kb: fix Glorious Model O mouse
nusb/kb: fix portreset feature and recovery
nusb/usbd: attach spam protection for reset loops and flanky devices
nusb/usbd: don’t spam opendevdata() transaction errors before timeout, error printing
nusbrc: use exponential backoff and timeout usb enumeration
mouse: use tsleep() instead of delay() (thanks uramekus)
omap: Fix missing preempted() call after non-clock interrupt (Thanks Anthony Martin)
pc, pc64: clear osxsave flag in cr4 when not used
pc64: avoid STI/CLI, touser() already called splhi()’d
pc64: make FPU available in interrupts
pc64: no need to _stts() in squidboy()
pc: do trapinit() and mathinit() early
pc: skip CLI/STI when not needed
pi3, pi4: change the order of emmc and sdhc for ether4330
pipe: bring back wstat, set size (in bytes) of the pipe buffer
qio: fix memory leak in qproduce()
reform/pm: fix lcd pwm cycle setting precision
reform: add ethersink driver for ethermultilink
sdhost: implement sdhost controller driver so we can use wifi always (pi3)
sdnvme: dont make queues largers than MQES field in capability
swap: fix pager nil pointer derefence when running out of procs
zuke: make stack usage independent of Biobuf’s Bsize.
zynq: fix print format in emmc driver
zynq: remove uartconsole() function, already done by devuart internally
COMPILERS AND LINKERS
/sys/lib/acid/port: mind upper bounds of fnbound
6a: use IOUNIT for BUFSIZ
6c: fix embedded struct conversion codegen
6c: fix wrong signed type conversion from char/short -> float/double
6c: remove stray non-interruptible temporary warning
7c: add form3 support (no functional change)
7c: do NOT allocate link register for general use
7c: dont replace SXTW instruction following MOVW $const, r
7c: fix constant propagation for negative 64-bit constants
7c: replace {CMP $0,…; Bcond} with CB[N]Z/TB[N]Z when possible
7l: 1 → NOPROF to avoid confusion
7l: avoid hitting old 7c bug with 64-bit constant propagation
7l: define missing TBZ/TBNZ relation
7l: do a single pass to produce data segment instead of doing it in chunks
7l: fix MADD/MSUB optional reg
7l: support CB[N]Z[W] instructions
7l: support fmov between general and fp registers
7l: support fused multiply-add/sub ops
7l: use wider INITTEXT and INITDAT
*l: make sure Sym and Auto structs are fully initialized (thanks moodman)
ar: use IOUNIT for streaming in files
cc: support binary constants and refactor
cc: use IOUNIT for BUFSIZ
cpp: remove trigraphs
cpp: run tests with ‘mk test’
yacc: define dummy yytokname() and yystatname() macros if not yydebug
LIBRARIES
lib9p: return effective iounit in Ropen response
libaml: dummy implement NotifyOp (thanks uramekus)
libauthsrv: readnvram: prompt for password conformation
libbio: bump Bsize to IOUNIT
libc/arm64: disable profiling on memcpy (memmove is an alias and follows immediately)
libc/arm64: fabs, floor and ceil in assembly
libc/arm64: memmove/memset - save/restore link register
libc: fix crash in idn routines with long domain names
libdraw: use IOUNIT for transfer block size in readimage()
libjson: make sure string contains only a single JSON value
libmach: arm64: disasm fmov Rn,Fd / fmov Fn,Rd
libmach: fix RETURN and branch target for CBZ/CBNZ for arm64 (wrong sign extension)
libmach: fix dropped header in last commit
libmach: open /proc/n/kfpregs when kernel debugging
libmach: set errstr if we can’t find a SP for a PC
libmach: setmach: mipsLE* -> spim
libmach: thumb support
libregexp: regprint: make regimpl.h include match its siblings
libsec: ansi-ify hkdf, pbkdf2 and scrypt
libvorbis: delete random sparc64 .a
PROGRAMS
acme: add font control message
add /rc/bin/doom: games/doom launcher
add aux/aout2efi
add games/dmx: decode doom sound effect lumps (dss*)
add games/mid2s: streaming midi from file, and merge common stuff into generic framework
ape/expr: ansi-ify function declarations
ape/pdksh: ansi-ify function declarations
ape: ansi-ify isatty and listen
ape: libap: do not set objtype in amd64 mkfile
audio/flacenc: implement [-i fmt] for supported formats; fix tell callback; fix big endian and 3-byte samples
audio/zuke: ICY: 4k of stack is enough for everybody
audio/zuke: double mainstacksize
audio/zuke: fix ICY proc running out of stack
audiohda: added Cannon Lake support
audiohda: detect hda devices using pci class id
aux/depend: remove old cruft
aux/dial: use IOUNIT for transfer block size
aux/trampoline: use IOUNIT for transfer block size
bar, fontsel: use heap allocated biobuf
bar: smaller buffer for aux proc; exit on eof
bzfs: use IOUNIT for buffer size
bzip2: use IOUNIT for transfer block size
cdfs: use IOUNIT for maxrpc (thanks Arne Meyer)
cfs: use IOUNIT for MAXFDATA
cmd: use increased iounit
compress: ansi-ify function declerations and enable warnings
cpurc, termrc, bootrc: organize default device binds
diff: don’t flush on every line
diff: fix no newline test
diff: generate no-newline directives
diff: improve is-binary heuristic
diff: make distproto copies tests
dossrv: use IOUNIT for Maxdata
eui: draw in seperate proc
fcp: use IOUNIT as default size
file: recognize MOD files (thanks umbraticus)
file: recognize and differentiate opus
file: use xiph mimetypes to clearly differentiate ogg/vorbis from ogg/opus et al (thanks sigrid)
fshalt: get rid of special nvme hack for disk shutdown
games/aout2gba: allow either ARM or ARMB mach type
games/dmx: rename to games/dmxdec for consistency
games/doom: bump max number of simultaneous sound effects
games/doom: don’t crash on invalid music selection with idmus cheat
games/doom: don’t print useless status on stderr
games/doom: draw in a separate proc
games/doom: faster palette→rgb conversion for arm64; fix convproc channel handling
games/doom: fix unhooked sound attenuation with distance
games/doom: remove dead code
games/doom: run audio in its own proc; can stop frame-dropping as well
games/doom: use wadfs to expose genmidi lump instead of extracting to /tmp
games/doom: wait explicitly for convproc to exit before running getwindow on resize
games/festoon: ansi-ify function declerations
games/gb: correctly mark transmitted serial data as sent
games/gba/rom: use -t with 5a
games/md: ignore invalid writes (makes cave story work)
games/mid2s: fix usage string
games/mkfile: match the dmxdec rename
games/opl3: fix choking on high tempo streams
games/vocenc dec: move from audio and add encoder
git/*: reduce object cache size
git/add: don’t include paths in the .git directory
git/branch: avoid null list errors
git/branch: prevent deleting current branch, skip dirty check for deleting branches
git/clone: correctly handle cloning repos with ‘/’ in the remote ref
git/commit: fix sed invocation: our ‘^’ operator has a quirk when used with ‘g’
git/diff: always respect the specified branch
git/diff: make ‘-u’ flag imply ‘-s’
git/fs: fix leak of uid strings
git/fs: match errors with other file servers
git/fs: preserve mode bits when walking branch dirs
git/fs: when statting an object, generate a correct qid
git/merge: include files changed in the merged commits
git/query: allow arbitrary length queries
git/query: check for nil return from seprint
git/revert: correctly revert files with spaces in the path
git/revert: only look at changed files
git/save: fix warning
git/walk, git/save: be less restrictive about permission matching
git/walk: add -b option to override base branch
git/walk: filter out files from within the .git repo
git/walk: fix usage on new repo
git/walk: only show untracked paths matching requested prefix
git: fix zero hash check crash in git/serve
git: replace index format for ~200x speedup
grabrfc: update fetching
hg: actually remove hg this time
hg: remove forgotten traces
history: set missing execute bit
hjfs: unlimited buffer works
hjfs: use smaller fixed buffer size
imap4d: use IOUNIT for Bufsize
ip/ftpfs: fix totally broken messagesize, use IOUNIT
ip/ipconfig: allow “del” verb in addition to “remove”
ip/snoopy: fix missing break rrfmt() in (tho, harmless as of rrsupported() check)
ip/snoopy: sync with ndb/dns
ircrc: fix pong message (thanks mkf)
ktrans: more tests, telex rewrite, small chinese fix
ktrans: pinyin, cleanup and documentation updates
lstk: add /bin/lstk to dump most recent crashed proc
merge3: handle edge cases where we remove lines
merge3: overlap happens on the source offsets, not the dest offsets
mk: dead code removal
ms2html: fix crash on macro without newline
ndb/dns: add -L flag for local-recursive server
ndb/dns: avoid blocking 9p on refresh, use shorter 15second query timeout, cleanup
ndb/dns: better handling of extended response code
ndb/dns: built-in tcp server, remove cruft, refactor
ndb/dns: embedd name string into DN struct
ndb/dns: fix RR.caa leak
ndb/dns: fix memory leak in dnzone()
ndb/dns: hack for the caching server for delegated nameservers
ndb/dns: implement EDNS(0) extension (rfc6891)
ndb/dns: implement concurrent garbage collection
ndb/dns: make sure theres only a single Topt option in getednsopt().
ndb/dns: refresh the cached dnsserver domain ndb entries in db2cache()
ndb/dns: remove leftover #pragma varargck argpos dnsdebug 1
nedmail: set $% to the full path of the current message
newuser: use non-expanded $home instead of /usr/$user in lib/plumbing comment
page: use IOUNIT for NBUF
paqfs: use IOUNIT+IOHDRSZ for mesgsize
patch: delete files for tests before test run
patch: fix offsets in reverse mode
patch: support no-newline directives
postscript: ansi-ify function declerations
rc: use IOUNIT for io NBUF
readtags, zuke: extract cover images stored in the audio files (thanks g-w1)
riow: skip redundant k events with shifted keys
rx: use IOUNIT for transfer block size
skelfs: use more correct “file does not exist” error
sshfs: use MAXWRITE for I/O unit
sysupdate: use the rc -b flag to keep sysupdate in memory
tapefs: use IOUNIT for Maxbuf
tl: use IOUNIT for MAXIO
tl: use the allocator from cc/compat
tlsclient: use IOUNIT for transfer block size
tmdate: add ordinal day of month format specifier
tput: use iounit(2) of the file-descriptor by default
troff: embiggen troff character size limit to support huge fonts
uhtml: use IOUNIT for transfer block size
upas/Mail: when space is tight use ellipsis (…) instead of 3 dots (…)
upas/Mail: use IOUNIT for Bufsz
upas/fs: don’t abort when the server gives us invalid dates
upas/fs: don’t try to fstat a renamed fd
upas/fs: use IOUNIT
upas/fs: write index out to temp file
upas/imap4d: fix bad censorship of the password when debug is enabled.
upas/imap4d: return SEARCH response in caps.
upas/marshal: use IOUNIT
upas: “move” ctl verb to move messages between imap folders (thanks Risto Salminen)
vac: use IOUNIT reading files
vacfs: use IOUNIT
vncs: use IOUNIT for Maxfdata
vncv: remove 16 -> 32 bpp conversion routine
vt: bracketed paste mode (fixes autoindentation in text editors)
vt: resize only when the window is not hidden (fixes window at top left corner with riow after terminal reset)
walk: handle removed files correctly
wc: use IOUNIT for NBUF
webfs: use IOUNIT for transfer block size
DOCUMENTATION
ether(3): document “bypass” ctl message.
ethermultilink(8): add manpage with example
ethermultilink(8): add some warnings about leaving the secondary interfaces alone
ethermultilink(8): fix bridge(3) reference (thanks Stuart Morrow)
ethermultilink(8): fix sink bind (thanks sigrid)
git(1): document ‘git/diff -u’
git(1): document flag to show unused files
git(1): document git/import -n
git(1): remove lies from manual, improve wording.
git(1): update and clean up git/walk section
ip(3): document garp ctl message for /net/arp
listen(8): remove tcp53 reference, remove !tcp53 template
rio(1), rio(4): wctl /srv pipe is dead, mention ‘none’ attach (thanks unobe)
paqfs(4): remove 8K default message size comment
pc(1): remove non-existent -n (thanks kvo); misc fixes from checkman
plan9.ini(8): document $wpaopts
sd(3): list /led and /smart files
snap(4): clean up lies
stats(8): drop 802.11, consider ALL /net/ether*/stats
webcookies(4): cookiefs -> webcookies
zuke(1): document audio/readtags
OTHER
/lib/keyboard: fix subscript small letter n. add super/sub small letter i
/lib/rob: Critical code needs static typing.
/lib/theo: You are in way over your head
/lib/theo: You are trying to compare a pig and a moon rocket.
/lib/theo: You get to adapt to what we produce.
/lib/troll: We have created something new that we named R9, an OS strongly inspired by Plan 9, written in the Rust programming language.
/sys/lib/dist/mkfile: include /386/mbr et al in disk images
/sys/lib/dist/ndb/common: add esmtp (port 587)
/sys/src/boot/mkfile: add missing child directories
distproto: include /lib/ucd in releases
replace ? with ؟ character in fa kbmap (thanks mkf)
9FRONT “DON’T TOUCH THE ARTWORK” RELEASED (2023/06/25)
Notable changes in this release:
/srv/clone
ARM thumb support
EMMC support
Mediatek mt7688 MIPS kernel
Multicast, IGMP and MLD support
aux/dial
dhcpv6 support in ipconfig
mk test
scream audio protocol support
evdump
scroll down for more
DOWNLOAD
Multiple installation media are provided for PC, Raspberry Pi, and MNT Reform. 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.
http://9front.org/iso/9front-9931.386.iso.gz.torrent
http://9front.org/iso/9front-9931.amd64.iso.gz.torrent
http://9front.org/iso/9front-9931.pi.img.gz.torrent
http://9front.org/iso/9front-9948.pi3.img.gz.torrent
http://9front.org/iso/9front-9948.reform.img.gz.torrent
; sha1sum -2 256 9front-9931*gz
b06118027bc8e692c640dfe801d427882f4a219685be1b0113aee3ebecc6b9c4 9front-9931.386.iso.gz
f69abdadc82da7f9b6fd3f3e88b806f1050baa9235912165475ae9f0bb677828 9front-9931.amd64.iso.gz
8e5fb4615e169f2d189f5ba284e672072513ed6c7fa37f4bca23e3fa5c172ea6 9front-9931.amd64.qcow2.gz
020187247a9a59ddf68c5468b5fbff6b78fdf133f47d7c87c7b875ecd72cd97f 9front-9931.pi.img.gz
52cb6b0c453432802da14f9e4ea45d894b956d64eab4486b00516d6e351e22d9 9front-9948.pi3.img.gz
a11243fe5dd217e9ecbd6c98768dd0b860a44693c14d4946ae2ddf56fabbc969 9front-9948.reform.img.gz
MIRRORS
http://felloff.net/usr/cinap_lenrek/9front/
http://iso.only9fans.com/release/
GIT REPOSITORY
http://git.9front.org/plan9front/plan9front/HEAD/info.html
DASH 1 MANUAL
http://fqa.9front.org/dash1.donttouchtheartwork.pdf
dash 1 manual: http://9front.org/propaganda/books
SONGS
by qwx
http://9front.org/mp3/keinkunst.r01.mp3
by sigrid
http://9front.org/mp3/revenge.mp3
by sl
http://9front.org/mp3/MYTHS_OF_DIALOGUE.mp3
Update:
https://archive.org/download/benny-hill-song/Benny%20Hill%20Song.mp3
THANKS
https://www.youtube.com/@adventuresin9797
KERNEL AND DRIVERS
9boot: delay GetMemoryMap until right before ExitBootServices (thanks michael forney!)
9boot: implement nocga= and nokbd= kernel boot parameters
aux/acpi: -H is for HALT
aux/acpi: attempt to call PTS and TTS before shutdown
aux/acpi: correct fadt version check for new shutdown.
aux/acpi: ignore bad acpi 2.0 shutdown access widths.
aux/acpi: no need for amlval(), amleval() will dereference the name and run the method
aux/acpi: no need to require the embedded controller.
aux/acpi: use ACPI 2.0 64-bit pointers for power off
aux/kbdfs: accept names for layers in writes to kbmap
aux/kbdfs: error on invalid numerics in kbmap writes
aux/kbdfs: reset kbmap to ascii default when opened with OTRUNC
aux/kbdfs: use layer names in kbmap reads and document them
aux/mouse: use /dev/eia instead of #t/eia, should be bound by termrc
aux/vga: DP 1.2 on igfx; EDID wrapping; VGA display connections
bcm64: apply same mmu improvements from imx8
bcm64: move fpon()/fpoff() into l.s
bcm64: move pi3 VGPIO to 2MB aligned address, this makes 4K pages work
boot/bitsy: clean up checked in binary
boot/reform: bootm if loading the kernel worked
bootrc: bind devcap and devtls, make /root mount consistent with spec
bootrc: let /boot/boot run in a more natural namespace
devbridge: simplify ethermultiwrite()
devdraw: coding style (from drawterm)
devgpio: (Raspberry Pi3/4, revision 2, bcm scheme) (thans Matt!)
devip: Fix transfoward() iphash collision
devip: actually put igmp in ip section
devip: add igmp protocol support to all kernels
devip: address some ipv6 issues on pkt interface
devip: don’t leak temporary buffers on error
devip: dynamically allocate memory for /net/ndb, increase maximum to 32K
devip: fix icmp bugs
devip: generate more reasonable laddr for UDP “headers” connection writes
devip: ignore addmulti() errors in addselfcache()
devip: lilu dallas multicast.
devip: maintain packet counters for pktmedium
devip: provide large buffer for ipifc->local() generator
devip: remove subnet check for arpforme()
devip: rlock ifc before accessing interface parameters in ipifcstate()
devip: tcpmssclamp() to minimum of source and destination interface MTU
devip: generalize Rproxy route handling, allowing non point-to-point arp proxy
devip: icmp6: no need set vcf and ttl before ipoput6(), use MAXTTL instead of HOP_LIMIT
devip: icmp: only forward EchoRequest, Timestamp(request), InfoRequest and AddrMaskRequest
devip: the retunnel logic in the gre code is wrong.
devip: tcp: only create new translation when SYN packet
devproc: Fix a double-free reading note file (thanks Josiah Frentsos)
devsd: Fix memory leaks, wstst check, cleanup
devsd: fix wrong range check for subunit number
devsrv: Various fixes.
devsrv: fix recusrion deadlock on remove
devusb: provide usb hub device number instead of address in /dev/usb/ctl
etherbcm: support for newer BCM5717 series cards.
etherbcm: support the 57765 series
etheriwl: add pci id for AC 7265 card (thanks Chris Gorman)
ethervgbe: do not give userspace the frame check sequence
ethervgbe: reduce console spam (thanks Arne Meyer)
etherwpi: accept pci device id 4222 (thanks oliver simmons)
imx8: a simple softscreen
imx8: add vpu clocks and irq indices, correct a typo (no functional change)
imx8: cleanup framebuffer code
imx8: dont reuse the TTRB1 page tables for TTRB0 identity map, remove gpioinit()
imx8: make etheriwl work on MNT Reform, move it to port/ (thanks cinap); tested with 6205
imx8: move fpon()/fpoff() into l.s
imx8: provide PCIWINDOW constant, use PCIWADDR() for MSI_TARGET_ADDR
imx8: setup $terminal environment variable in init0()
imx8: usdhc: fix debug print, R1b response handled by controller
imx8: move SAI iomux/clock initialization into probe()
imx8: put default “console=0” in #ec
kernel: Clear secrets on reboot
kernel: Do not treat IPv6 ULA’s as GUA’s (thanks Arne Meyer)
kernel: fix devsrv compilation on arm32
kernel: free exec temporary stack segment under seglock
kernel: handle 64-bit multiboot framebuffer address
kernel: private srv boards
kernel: sdram: do not use xalloc for SDev
mt7688: add kernel
mouse: Make /dev/mousein readable to get mouse status without blocking
nusb/audio: add support for USB audio 2.0
nusb/audio: enumerate streams through control interface
nusb/audio: only consider data endpoints when setting up
nusb/audio: remove code for bi-directional endpoint
nusb/cam: interrupt reader proc on close to unstuck it
nusb/cam: rather than showing partially green frames (when not enough bandwidth), skip those altogether
nusb/cam: remove wrong func prototypes, print probe control
nusb/cam: rewrite yuy2convert with integer arithmetic
nusb/cam: take max payload transfer size into account when selecting for bandwidth
nusb/ether: set configuration, and use the first interface that matches
nusb/ether: support for asix ax88179 (thanks Aidan K. Wiggins)
nusb/kb: GAOMON S620 tablet support
nusb/lib: add setconf() to set the configuration
nusb/lib: move audio-specific requests to nusb/audio
nusb/usbd: use dprint() report to standard-error instad of standard-out
nusb/usbd: Fix wrong hname collision handling
nusb/usbd: add /dev/usbhubctl file to control port power and led indicators
nusb/usbd: assign hname to hubs
nusb/usbd: only fetch first 8 bytes of device descriptor for getmaxpkt() (thanks k0ga)
nusb/usbd: provide vid and did in device info string for hubs
nusbrc: remove service files left by nusb/kb (thanks kristo)
reform/pm: considering the keyboard might be absent altogether, fall back to lpc shutdown in any case
reform/pm: several improvements and fixes
sdiahci, sdodin, sdide, devsd: get it right…
sdiahci, sdodin: more unconfigure panic fixes
sdide: fix double free in clear() (devsd frees sdev already)
sdmmc: actually implement mmc support
sdmmc: implement boot partition access for emmc
sdmmc: multiple controller support
sdmmc: new interface for SDio
sdmmc: switch argument must be integer
sdnvme, fshalt: turn disks off on fshalt
sdnvme: add smart file for full smart info
sdnvme: collect useful smart/health info and report via ctl
sdnvme: remove unused mptr argument to qcmd()
sdnvme: use delay() instead of tsleep() in nvmedisable()
scram, aux/acpi: open /proc/$pid/ctl instead of #p/$pid/ctl for wirecpu0()
scram: → /rc/bin/scram
usbxhci: add some robustness checks
usbxhci: fix command ring wrap crash
usbxhci: split usbxhci in portable and pci / soc specific drivers
usbxhci: wait for reset to complete before continuing initialization
zynq: fix plcopy() source pointer increment
zynq: remove bogus main.bin file
COMPILERS AND DEBUGGERS
/sys/src/games/^(aout2gba gba/rom): basic gba toolkit
5c, 7c: fix !x compilation when x is a negative float
5c, kc, qc: fix implicit return type of samaddr
5e: access /proc instead of #p
6c: copy all of packed structs in OAS
6c: eliminate the rathole
7c, 7l: fix linker clobbering offset if given the same register twice
7c: clean up the garbage in -S output, fix printing instructions using FCONST
7c: copy the remainder of packed structs
7c: elide type converting moves, registerize loads after store from local variables
7c: eliminate MOVWU r, r instructions when possible
7c: help and improve peephole optimizer
7c: implement bit rotations using ROR/EXT instruction
7c: more registers, improve constant propagation, implement load pipelining
7c: node offsets aren’t necessarily 0 - fixup packed structs
7c: peephole: ACASE needs two distinctive registers - nothing to optimize
7l, 7c: Remove STLP(W), finish LDAXR(W)/STLXR(W).
7l: allow byte/halfword register offset load/store
7l: allow paired SIMD load/store, correct a few comments
7l: register offset loads/stores
7l: rewrite Rl→REGTMP in the comment (thanks cinap)
7l: throw an error if CASE uses the same register for base and offset (CASE R1, R1)
7l: use floating point immediates where possible
Update: 7c: dont replace SXTW instruction following MOVW $const, r
c99: update dead web link
cc: NORET -> _Noreturn
cc: add NORET
cc: add func support
cc: do not wait for cpp to finish if there were errors
cc: fix suicide with undefined function arguments
cc: fix vlong->VOID cast (thanks cosa)
cc: fndecls: always ignore non-function types
cc: fndecls: use current fn node directly
cc: wait for cpp to report whether it was a success
cpp: #pragma once support
cpp: allow qid version change for #pragma once
cpp: correct #pragma once uniqueness check
cpp: stringified macros shouldn’t split words separate by a dot
libmach/acid: add basic FP support for arm64
libmach: add more floating point instructions decoding for arm64
libmach: fix reading .7 objects containing instructions with an extra register (from3)
libmach: fixup for fmovT Fd,u(SP)
libmach: remove obsolete fishy case in mips header parsing
LIBRARIES
ape: endian fixes for spim
ape: add stdnoreturn.h
lib9p: e*9p error tidy
lib9p: fix missing newlines in fprint()
libaml: implement ConcatRes and Mid opcodes.
libaml: replace ResEnd with it’s value.
libaml: tow eisaid inside the environment
libauth: Fix a memory leak in auth_getkey (thanks josiah fentsos)
libauth: aand also fix the leak it in the deactivated code
libauthsrv: deal with signed char in readcons()
libauthsrv: import better passtodeskey() function (from drawterm)
libauthsrv: readnvram: prompt for use of p9sk1 in nvram, with a default of no
libbio: abort on invalid state
libc: Add poolreset() function
libc: address kencc warning in date.c
libc: coding style (from drawterm)
libc: fix 32-bit arch vlong->double conversion (thans cosa)
libc: fix strchr() for little endian mips (thanks adventuresin9)
libc: remove dangling runetype.c
libc: runecomp: commit generated data files
libc: runecomp: move generated files to explicit regen rule
libc: sqrt() in assembly for arm64
libc: strtoull(): fix return value on overflow
libc: use /fd instead of #d in iounit()
libc: _tas() for spim
libgeometry: revamp
libgeometry: fix rframe xforms
libip: Provide iplocalonifc() and ipremoteonifc() functions
libip: avoid parentesis warnings from gcc (from drawterm)
libip: open temporary file-descriptors with OCEXEC flag
libjson: correctly escape strings in JSONfmt()
libmemdraw: coding style (from drawterm)
libmemdraw: don’t return Buffer copy from calc functions
libmp: parentesis (from drawterm)
libndb: add ndbvalfmt() formatter
libndb: make ndbipinfo() put each ip and attributes entry on its own line
libsec: add minimal support for the tls renegotiation
libsec: add parentesis to squelch gcc warning in drawterm
libsec: fix inconsistent prototypes for des (from drawterm)
libsec: use /net/tls instead of #a/tls
libtags: work around encoders producing Ogg containers with first granule position set to non-zero outside of the first page
PROGRAMS
audio/flacdec: throw out decoded audio until finished seeking
audio/mixfs: add “volume” file with “mix” control to set the output volume of the mixed inputs
audio/mixfs: fix locking for /dev/audio loopback
audio/mixfs: fix loopback
audio/mixfs: implement flush
audio/mixfs: no loopback delay
audio/scream: multicast audio protocol
audio/screamsend: actually have aux/dial exec screamenc (thanks sigrid!)
audio/screamsend: use dial(1)
audio/vocdec: Creative Voice File decoder
audio/vocdec: handle non type 1 blocks better
audio/zuke: do not clip the rightmost column
audio/zuke: fix -s not drawing properly and track being off by one; more OCLOSE
auth/*: use /fd/0 instead of #d/0
auth/*: use caphash and capuse under /dev instead of #¤
auth/*: fix up to report write errors
auth/acmed: better challenge error reporting.
auth/acmed: support getting a wildcard certificate.
auth/factotum: access /proc instead of #p for private()
auth/factotum: make sure we got a private key in ssh client protocol
auth/ssh2rsa: convert Unix ssh private keys to Plan 9 format.
aux/consolefs: post to /srv instead of #s
aux/depend: post to /srv instead of #s
aux/listen1: write status to standard error
aux/listen: add -o and -O options
aux/listen: log the real error when announce() fails
aux/listen: tweak per service namespaces
aux/timesync: don’t bind #r twice (already done in inittime())
awk: dont leak memory on extra format arguments
awk: getline: do not access unitialized data on EOF
bar: fix automatic resize and click location; ignore separator area when clicking
bar: increase the buffer to fit more aux data (noam decided to display the currently playing track there)
bar: static buffer for splitting, since it is getting used for clicks later on
bzfs: post to /srv instead of #s
cifs: remove redundant memsets after emalloc9p (thanks Arne Meyer)
cifs: use procsetname() instead of rolling your own
cwfs: add missing \n in error print
cwfs: post to /srv instead of #s
cwfs: remove noauth and nonone commans from fileserver console
cwfs: write /env/timezone instead of #e/timezone
dial: add dial command similar to plan9port
diff, merge3: refactor diff, implement merge3
diff: add missing file
diff: barf with explanation on binary diffs/merges
diff: fix suicide if binary files don’t diff
disk/partfs: fix bogus “%r” error response
disk/qcowfs: correct GET2 off by one
dossrv: Implement support for != 512 sector and track sizes
dossrv: better error handling and sanity checking in dosfs()
dossrv: post to /srv instead of #s, leave stderror alone
evdump: a program to dump input and window events
evdump: have evdump deal with new /dev/kbmap format
ext2srv: leave stderr alone
file: identify Creative Voice File
file: identify qcow images
fstype: add support for gefs
ftpfs: clarify usage and manpage
games/dmid: add control 00h, bank select
games/dmid: fix running status for streams
games/dmid: fix tempo changes causing desyncs in multitrack files
games/dmid: no longer threaded
games/dmid: properly skip delay field from stream
games/dmid: simplify and reuse input code for streaming
games/dmid: update for opl3 streaming
games/doom: experience it right from the start
games/gb: crude serial port emulation
games/gb: implement internal window line counter
games/midi: fix desyncs after tempo changes in multitrack files
games/opl3: implement real time streaming mode
games/wadfs: parse hexen map behavior lump
git/send: correctly delete branches with no local mirror
git: add support for another signed message format
git: fix nil dereference in corrupt repositories
git: prevent infinite recursion with cyclic symlinks (thanks cosa)
gs: patch CVE-2023-28879
history: fix walking and handling files with spaces
hjfs: check and fix print format errors
imap4d: add entry to detect file locked errors on hjfs
ip/dhcp6d: set source address to the receiving interface ip when multicast
ip/dhcpclient: ignore icmp advice messages
ip/httpd: fix duplicate array entry (thanks khayyam@cock.li)
ip/ipconfig: add -y flag to ipconfig to set proxy-arp for an interface
ip/ipconfig: avoid refreshing /net/dns for non-primary interface
ip/ipconfig: initial dhcpv6 support, clean default-routes and /net/ndb on remove
ip/ipconfig: leave ipnet= entries alone when updating /net/ndb, use ndbvalfmt()
ip/ipconfig: ignore “ANDROID_METERED” junk options
ip/ipconfig: remove non-existant ip addresses from /net/ndb, check link-local adress in ra6 daemon
ip/ppp, ip/pppoe: handle ipv6 address auto-configuration, call ip/ipconfig
ip/ppp: Implement echo request timeout, terminate
ip/ppp: allow specifying pair of local and remote address
ip/ppp: bring back arp proxy, but with explicit -y flag
ip/ppp: ipv6 support, cleanup routes, remove source filter, and more
ip/ppp: just use mtu requested from the peer.
ip/ppp: update the test-program
ip/pppoe: Handle termination request, add retry-forever (-r) option
ip/pppoe: aaand the code ;)
ip/pptpd: use /fd instead of #d
ip/tftpd: make syslog messages consistent
ircrc: fix race with pipe causing hangup
kbmap, kbremap: open kbmap file with OTRUNC and bugfixes
kbmap: fix multi column display for smaller windows (thanks mkf)
kbremap: switch keyboard maps with a keyboard shortcut
ktrans: correct ‘exit’ text (thanks Keegan)
ktrans: simplify kbdtap read loop
ktrans: tests and various bug fixes
lnfs: post to /srv instead of #s
lock: Fix some memory leaks (thanks steve simon!)
look: add -b for specifying numeric base
mothra: support article and figure tags
ndb/cs: Use ndbvalfmt() for quoting !ipinfo replies
ndb/cs: avoid trailing spaces when printing ndb line
ndb/cs: preserve ndbipinfo() line structure for !ipinfo, fix memory leak
ndb/dns, ndb/cs: post to /srv instead of #s
ndb/dns: allow specifying local ip addresses for serving dns
ndb/dns: don’t try to resolve local dns servers
ndb/dns: procgetname(): use /proc instead of #p
ndb/query, ndb/ipquery: use ndbvalfmt()
ndb/query: add -i and -c flags unifying the functionality of ndb/ipqeury
ndb/query: avoid trailing spaces when printing ndb line structure
netaudit: check none attach too
netaudit: fix format, always state the fileserver tested
netaudit: fix it for multiple results
netaudit: perform a clean connection to test auth status
netaudit: uncomment out warning about /srv/boot
netaudit: use new ndb/query flags instead of ndb/ipquery
paqfs: post to /srv, not #s
patch: preserve permissions of original file when patching
pic: error instead of crashing on nonexistent variables
play: aac support
play: use doom1.wad and dmid/opl3 for midi files by default
plumb fileaddr: match with a trailing colon
print, strtod: fix -0 and -NaN, respect verb flags when formatting
rc: make flag f [+-]
clear status on success
rc: read standard-input from /fd/0 instead of ‘#d/0’
rc: use /fd/0 for standard-input instead of ‘#d/0’ in non-interactive mode
read: add -r to read runes instead of bytes (thanks umbraticus)
reform/shortcuts: use “mixfs” for volume control, fall back to “master”
rio: fix crash when walking windowless fid (thanks ilikebreadtoomuch)
rio: refactor the keyboardtap code a bit
rio: sync keyboard state with active window on switch
riow: add mod4+shift+q (delete current window)
riow: fix kbdtap reading logic and make it a bit easier to comprehend
riow: process the entire keyboard event at once
skelfs: remove useless code (thanks Arne Meyer)
sleep: implement long sleep
snoopy: fix error handling for convM2DNS()
snoopy: fix ipv6 option header parsing, add MLD messages to icmp6
sshnet: mount BEFORE /net (preserving /net/tls and /net/dns)
sysinfo: use usbtree instead of just cating #u/usb/ctl
sysupdate: only pull on ‘front’ branch
tcs: add nfc and nfd output formats
tee: remove unused variable (thanks mkf9)
termrc: start reform/pm and reform/audio drivers
test(1): add a missing space after -T
tlsclient: keep stderr
tlsclient: try /bin/$cmd for exec
trampoline: Add -o option to send protocol-specific ctl string
troff2html: handle more html attributes (thanks k0ga)
truetypefs: fall back instead of crashing when could not get a glyph
upas/Mail: don’t start plumb procs in their own note groups
upas/Mail: stop splitting headers
upas/fs, imap4d: make setname() use /proc instead of #p
upas/marshal: rfc2047-encode name of the sender (fixes non-ascii names in From: header)
usbtree: a little helper to pretty print usb hubs and devices in a tree
v8e: clean unused argument and tidy usage (thanks mkf)
venti/srv: open /proc instead of #p
vmx: read /dev/kbmap in new format
vnc: fix farsi key symbols
vncs: use procsetname() instead of rolling your own
vt: add OSC 7 support for plumbing of remote files without mount/bind magic
vt: ignore xterm Set/reset key modifier options escape sequence
zuke: apply clipping after replay gain (some cases found in track mode)
zuke: leave the fds alone (thanks deuteron)
zuke: prefer “mix” volume control if available
DOCUMENTATION
/sys/doc: “Namespaces as Security Domains”
/sys/doc: Remove some automatically generated PostScript files
/sys/doc/nssec.ms: small grammar fixes (ok’d by moody)
2c(1), 2l(1), tl: add thumb to the list. fix thechar: ‘5’ → ’t' trampoline(8): fix typo
a.out(6): document dynamically loadable modules
ascii(1), utf(6): /lib/unicode → /lib/ucd/UnicodeData.txt
authsrv(2): document readcons() function
bar(1): explain the items separation better, mention the default separator char
crop(1), memdraw(2): writememimage doesn’t always write compressed images
dial(1): document -o options
factotum(4): fix typos (thanks sirjofri)
games/dmid(1), games/opl3(1): formatting and update for streaming
geometry(2): corrections and improvements
git(1): The/ → The
git(1): fix quoting in .IR
git(1): update example to work with today’s github
gitfs(4): clean up junk in manpage
history(1): update SOURCE, formatting
ip(3): corrections to Udphdr field descriptions
mouse(2): not quite a typo (thanks Alex Musolino)
ndb(6): document “ quoting
ndb(8): document @rattr behaviour for ndb/query -i
nusb(4): document a88179 support (thanks llamaa)
plan9.ini(8): document the *debug option
pushtls(2): client certificates got implemented in 2012
reform(1): fix a missing space char
riow(1): no. I give up trying to understand wtf is wrong with rio
riow(1): provide better examples of how to run it (thanks be0ba)
riow(1): remove window(1) invocation
riow(1): running via window(1) requires rfork n
runecomp(2): clarify audience and history
segment(3): Fix typo
srv(3): improve the example (thanks mcf)
srv(3): provide /srv/clone example
srv(3): use /srv instead of #s in SYNOPSIS
ssh(1): fix usage and document -X flag
ssh(1): relies -> relays (thanks sigrid)
upasfs(4): remove self-reference and drop trailing comma (thanks fig)
zuke(1): replace Beats ‘n Breaks icy url with aNONradio
OTHER
mkfiles: add ‘mk test’ support
cmd/mkfile: don’t recurse into test/ when looping
cmd/mkfile: make tests depend on cmd build
/lib/dict: improve downloading scripts
/lib/font/bit/vga: ⑨: it looks bad but it is there
/lib/glass: nfc normalize
/lib/namespace: add bind -c #s$srvspec /srv bind
/lib/namespace: bind devtls to /net, mount /root after binding /srv
/lib/rob: I find this situation unsatisfactory.
/lib/rsc: “Go is the only software with telemetry you don’t need to worry about.”
/lib/rsc: I am not suggesting that instrumentation be added bsc: My plan is to not do any telemetry on Plan 9.
/lib/rsc: The plan9 port is becoming increasingly difficult to maintain and holds back non-plan9 development.
/lib/theo: I don’t care if code is old.
/lib/theo: The future doesn’t get better if you demand backwards compatibility forever.
/lib/theo: The invention of interrupts was a bad idea.
/lib/troll: Running Rust code on Plan 9 using webassembly
/lib/troll: [9fans] How to access this 9fans group from 9front?
/lib/unicode → /lib/ucd
standard farsi keymap
9FRONT “THE GOLDEN AGE OF BALLOONING” RELEASED (2022/10/31)
Notable changes in this release:
MNT Reform laptop is a first class citizen
now includes free doom(1) wad
scroll down for more
DOWNLOAD
Multiple installation media are provided for PC, Raspberry Pi, and MNT Reform. 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.
http://9front.org/iso/9front-9442.0e66f87316e571f7edf5274369ec69a5905507aa.386.iso.gz.torrent
http://9front.org/iso/9front-9442.0e66f87316e571f7edf5274369ec69a5905507aa.amd64.iso.gz.torrent
http://9front.org/iso/9front-9442.0e66f87316e571f7edf5274369ec69a5905507aa.pi.img.gz.torrent
http://9front.org/iso/9front-9442.0e66f87316e571f7edf5274369ec69a5905507aa.pi3.img.gz.torrent
http://9front.org/iso/9front-9442.0e66f87316e571f7edf5274369ec69a5905507aa.reform.img.gz.torrent
; sha1sum -2 256 9front-9442*gz
dd67daad1bf2397c19543eeeb4aa6e2642febdcce3100556bf4b1af7cb38e252 9front-9442.0e66f87316e571f7edf5274369ec69a5905507aa.386.iso.gz
c577bdd3190211fd0e9b46c1afada712b9a9ee460a4d5a4c679e522f5f72eda6 9front-9442.0e66f87316e571f7edf5274369ec69a5905507aa.amd64.iso.gz
012812e745e642b1c8d27fc58b001a34f0ab4f605660c89cbded41ca20cce503 9front-9442.0e66f87316e571f7edf5274369ec69a5905507aa.pi.img.gz
6313e1d028380a11228613c2a78f76f28685a119f1ab8c6aae5393dedc17db02 9front-9442.0e66f87316e571f7edf5274369ec69a5905507aa.pi3.img.gz
83b1dd8acaacd0dcb9bed188cbf33f3a410486d1724d15bcef4646c0288bec95 9front-9442.0e66f87316e571f7edf5274369ec69a5905507aa.reform.img.gz
MIRRORS
http://lux.felloff.net/usr/cinap_lenrek/9front/
https://ftp.cc.uoc.gr/mirrors/9front/
GIT REPOSITORY
http://git.9front.org/plan9front/plan9front/HEAD/info.html
DASH 1 MANUAL
http://fqa.9front.org/dash1.goldenageofballooning.pdf
dash 1 manual: http://9front.org/propaganda/books
SONGS
by cinap
http://9front.org/mp3/fal4.mp3
THANKS
Oscar Zoroaster Phadrig Isaac Norman Henkle Emmannuel Ambroise Diggs
KERNEL AND DRIVERS
acpi: /mnt/acpi → /mnt/pm
aux/acpi, aux/imx8pm: stats(1) expects two numbers for each cputemp reading
aux/acpi: fix division by zero (thanks umbraticus)
aux/acpi: mount -a on /dev instead of /mnt/pm; ctl → pmctl
aux/acpi: simplify/rework; support “power off” via pmctl
aux/imx8pm: add core/gpu/vpu temp read support (kernel counterpart is TBD)
aux/imx8pm: add relative brightness setting (-+N), useful for key bindings
aux/imx8pm: calibrate per documentation (but with questionable values)
aux/imx8pm: hide gpu and vpu from cputemp
aux/kbdfs, nusb/kb: add basic media keys support; add /dev/hidNctl to change repeat/delay; fix a race condition
aux/kbdfs: correct comment regarding 0x79 and 0x7b codes.
aux/vga: misc. igfx fixes for displayport
aux/wm8960: audio controls fs for MNT Reform
aux/wm8960: disable speaker boost to avoid clipping
aux/wm8960: do the math
aux/wm8960: expose 3d stereo controls
aux/wm8960: fix chopped audio on the speakers with high volume
aux/wm8960: make jack detect work; enable thermal shutdown; fix fractional div part
aux/wm8960: provide hardcoded “speed” in volume file
aux/wm8960: reduce popping, clean up
aux/wm8960: relative volume adjustment through the fs interface
aux/wm8960: run as master and provide more precise clock; add oneshot mode (no fs)
aux/wm8960: support 48kHz via “speed” verb
bind, mount: stop returning mount id
devarch: add name for VIA C7 Eden
devi2c: add generic i2c bus driver
devip: arp: don’t leak data in the padding of arp replies
devip: arp: make sure arpresolve() only returns single packet
devip: arp: move arp expire logic into own function
devip: do tcp mss clamping when forwarding packets
devip: fix ipv6 mss clamping
devip: get rid of Ipifc.mintu
devip: less stupid hnputs_csum()
devip: make Rproxy flag explicit
devip: replicate the nat-flag (Rtrans) when superceding interface route
devip: use port/netif.h constants for ethermedium
devpci: provide a #$ device for PCI config access
devvga: fix race condition between writes to vgactl
ether8169: support for RTL8168EP chips
etherimx: fix link negotiation
etherimx: set iomux pad configiguration
etheriwl: add 7265 device id
ethervgbe: enable auto-negotiation and ipv6 (thanks arne)
igfx: Add support for Xeon E3-1200v3
imx8/gpio: add interrupt handlers support
imx8/gpio: allow 0 as “no-op” gpio pin
imx8/gpio: missed change in the previous commit
imx8/gpio: use u32int for bit mask
imx8/lcd: disable the bridge output on blank
imx8/lcd: reduce flicker
imx8/lcd: rework screen blanking
imx8/lcd: set iomux pad configuration
imx8/lcd: silly work around for display instability
imx8/lcd: toggle lcdif on blankscreen
imx8/pm: provide acpi(1)-compatible battery readings
imx8/sai, aux/wm8960: expose jack detect status in #A/audiostat
imx8/sai: do not strangle the core with interrupts on underruns
imx8/sai: double the delay; set clock explicitly
imx8/sai: flush the ring on close to avoid garbage leftovers on restarts
imx8/sai: increase watermark, run in slave mode, continue on fifo errors
imx8/sai: reduce watermark; use the fifo size reported by the platform; remove useless stuff
imx8/usbxhci: bring usb out of reset
imx8/usbxhciimx: fix a set and not used warning
imx8/usdhc: cleanup, set pad configuration
imx8/usdhc: implement highspeed mode (50Mhz)
imx8/usdhc: work around broken multi-write for now
imx8: add a semi-working SAI2 audio driver
imx8: add aux/imx8pm with lcd brightness control
imx8: add gpio helper gpioout()/gpioin()
imx8: add i2c bus driver
imx8: add iomuxpad() helper for pad and mux control
imx8: add simple i2c rtc driver for NXP PCF8523
imx8: add work in progress i.MX8MQ kernel for the mntreform2 laptop
imx8: add xhci driver for the soc
imx8: better syntax for iomuxpad() options using ~ for negation
imx8: ccm: fix sai copy-paste typos
imx8: cleanup mem.h
imx8: detect cpu lcycles() frequency
imx8: enable/expose tmu
imx8: fix install target
imx8: fix reduced lcdif pix clk workaround by enabling underflow recovery
imx8: get mac address from OTP rom
imx8: gic: irqenable → intrenable
imx8: 1.6Ghz turbo
imx8: implement /dev/reboot support
imx8: implement psci calls for system reset and multicore startup
imx8: invalidate l2 cache as well (fixes not fully cleared BSS on cold boot)
imx8: less stupid pci interrupt handler
imx8: load a plan9.ini at CONFADDR 0x40010000
imx8: mainscreen turn on!
imx8: make gpc functionality available with a powerup() function
imx8: pcie and nvme support
imx8: port usdhc driver (from bcm/sdhc) for external sdcard
imx8: provide iomuxgpr() function to access iomuxc’s gpr’s
imx8: qos magic to avoid interference between pcie and lcdif
imx8: reset lcdif and sn65sdi86 bridge before init
imx8: set virtual timer offset to zero for all cores
imx8: turn backlight off when blanking
kernel: add /rc to devroot
kernel: add chdev command to devcons
kernel: add dev dtracy provider.
kernel: add devskel for pc and pc64
kernel: allocate notes in heap
kernel: allow kiloprocs – allocate procs lazily
kernel: be more careful about argc for /dev/drivers writes
kernel: bootrc: add bootloop=
kernel: cleanup unused fields from devpipe
kernel: compute available kernel pages using sizeof(Proc*)
kernel: consistently add devbridge and netdevmedium to kernel configs
kernel: devskel: use RWlock
kernel: devwalk: correct debug print
kernel: disable wstat for devpipe
kernel: exclude ppc kernels from all target
kernel: fix freeb() for custom pools
kernel: fix noteid change race condition from devproc while forking (thanks joe7)
kernel: get rid of Proc.kstack
kernel: half NERR, refcount Note’s to avoid excessive allocations for postnotepg()
kernel: remove dead case from devpipe
kernel: simplify notify() adding common popnote() function
kernel: use 64 bits for mountids
mkdevc: fix dtracy-disabled builds (thanks ori)
nusb/disk: always allow raw scsi request (even without media present)
nusb/disk: fix interactions with libdisk
nusb/kb, aux/kbdfs: add brightness down/up media keys
nusb/kb: add “rawon”/“rawoff” to switch ctl fid into raw report output mode
nusb/kb: fix scancode for right ctl
nusb/kb: support 無変換, 変換, and ‘ひらがな / カタカナ’ keys
nusb/ptp: increase payload
nusb/usbd: retry opendevtata() a few times on attach (work around mnt-reform trackball)
pc/rtc: make sure string is NUL terminates for rtc write
pc64: half KSTACK to 8k.
reform/audio: remove DAC vol limit; discharge HP caps on init
reform/audio: remove HP caps discharge; faster hp/spk switch and (un)mute response
reform/audio: use soft-mute to toggle DAC
reform/pm: add keyboard light level controlling to /dev/light
reform/pm: calculate time to full (dis)charge; low→warn capacity; endless loop protection
reform/pm: kbdoled: allow any size/depth of uncompressed image - convert ourselves
reform/pm: kbdoled: clear the OLED on zero-length write
reform/pm: lpc comms: increase delays to 80ms
reform/pm: lpccall: read as much as possible after the command; clean up
reform/pm: measure CPU temperature only when requested, disable monitoring right away
reform/pm: oops. do not invert
reform/pm: power off via the keyboard first
reform/pm: provide /dev/kbdoled to display a 126x32x1 bitmap on the keyboard OLED
reform/pm: serve lpc readouts over a queue to avoid lockups on other requests
reform/shortcuts: change to use available media keys via Hyper
reform/shortcuts: negative step values
reform/shortcuts: use Kmod4+esc to (un)mute the audio
reform/shortcuts: use media keys for LCD brightness control
reform: add pmctl to read more info and to turn power rails off; manpages
reform: add reform/shortcuts
reform: only override console=0 when no plan9.ini is passed
reform: tweak manpage and reform/audio a bit
sdnvme: add dmaflush() instructions, move to port/
sdnvme: avoid “empty if body” warning
sdnvme: correct mode/serial/firmware string lengths
sdnvme: fix missing unlock() in submit queue full case
sysproc: raise limit on #! lines, and allow quoted args
tcpmssclamp: only check the first ipv4 fragment for tcp header
tcpmssclamp: pass correct size tcpmssclamp()
uartimx: fix interrupts
usb: fix ehci isochronous “in” split transactions
usbsdmux: Add program to control usb-sd-mux device
usbxhci: eliminate “set but not used” warning
usbxhciimx: set iomux pad configuration
zynq: correctly specify dolock flag to postnote()
COMPILERS AND DEBUGGERS
ar: print output to stdout (thanks uramekus)
cc: take our pickle out of the peephole
dtracy: correctly look up aggregate keys
dtracy: make timer probes run in interrupt context
LIBRARIES
ape/bsd/bind.c, ape/bsd/listen.c: Set local IP.
ape/bsd/bind.c, ape/bsd/listen.c: Use _syserrno.
ape/bsd/bind.c: Do not issue “bind *”.
ape/bsd/bind.c: Do not pretend that the port could be negative.
ape/bsd/listen.c: Do not try to issue “announce *”.
ape/bsd/listen.c: Drop “bind 0”.
ape: fix warning building mkstemp
lib9p: double the buffer for /srv/$service
libFLAC: update 1.3.4 → 1.4.0
libc: shorten strchr and runestrchr
libc: tmdate: provide better parse errors
libc: tmparse: remove incorrect isalpha definition
libdraw: bikeshed formatting
libdtracy: fix wrong key size comparsion in dtarecord()
libflac: work around kencc running out of registers on arm
libndb: increase buffer size to allow longer lines
libtags: opus/vorbis: make sure to get to the last frame to have the full duration
libtags: pick R128 gain
libtags: try other formats after id3v2 is found
libtags: vorbis, opus: ignore tags past the ogg page
PROGRAMS
audio/flacdec: don’t run pcmconv on s16r44100c2
audio/mkplist: don’t fail entirely if a directory is not accessible
audio/mkplist: leverage parallelism
audio/zuke: “r” key - “repeat one” mode, based on the patch from qwx (thanks)
audio/zuke: add slow scrolling
audio/zuke: basic replay gain support
audio/zuke: clear out enter() prompt image if search failed
audio/zuke: clip scrolling to the edges
audio/zuke: display currently enabled modes when stopped
audio/zuke: don’t blink the mouse pointer while idling
audio/zuke: don’t fall into the rathole
audio/zuke: faster redraw without flashing - XRGB32 with backing image
audio/zuke: fix newly introduced bugs
audio/zuke: fix off-by-one in playlist loading; initialize scrolling to avoid jump on first track
audio/zuke: fix playlist plumbing while in shuffled mode
audio/zuke: fix repeat and replay gain modes not showing when playing network streams
audio/zuke: fix seeking with mouse
audio/zuke: fix wrong string width of playback position calculated on network streams
audio/zuke: fix/enable playlist loading via plumber “audio” port
audio/zuke: kill off decoders; use more OCEXEC
audio/zuke: less garbage dereferencing, stop interrupting decoders
audio/zuke: properly report empty playlist error
audio/zuke: put the search input on its own window
audio/zuke: redraw as soon as search input is enter (not only cancelled); more chance for non-blocking redraw
audio/zuke: redraw in a separate thread - no audio dropouts on scrolling, more responsive
audio/zuke: rewrite rendering logic
audio/zuke: seekto: vlong, unsigned doesn’t work well for negative numbers…
audio/zuke: update ICY title from the stream metadata while playing
audio/zuke: use digits to enter exact seek position
audio/zuke: use percentile to calculate relative widths of columns
auth/acmed: remove obsolete ip/acmed.c
auth/box: -s, -. flags
auth/box: bind in the binary by default
auth/box: build restricted namespaces using components from the parent.
auth/box: don’t bother switching to none
auth/box: preserve cwd name, but clear it out
auth/newns: add chdev command
aux/9pcon: add support for Rerror in assert mode
aux/9pcon: add assert flag
aux/9pcon: style
aux/aout2uimage: fix text section size rounding (for data section alignment)
aux/listen: Allow per service namespace files
aux/listen: remove Service struct
aux/listen: remove argument clutter
aux/listen: remove special cases for depreciated datakit
aux/listen: remove unused cpu global
aux/txt2uimage: helper for generating uimage script files
awk: correct incoherent cell in assignment (thanks smj, mpinjr)
awk: initialize records fully in recinit()
bar: a status bar program
bar: leave last aux on screen on eof
cdfs: handle block sizes correctly
chdev: change kernel driver access
chdev: dont pollute environment
cwfs: fix iounit negotiation
delkey: stop being clever about which factotum to use
diff: avoid empty hunks when there are no changes
diff: clean up some comments
diff: fix style
diff: retain original file names
disk/mkext: fix nil dereference in arg parsing
exportfs: fix clunk of first attach with -S
fshalt: allow passing a kernel to ‘fshalt -r’
fshalt: optionally use /dev/pmctl to shut down the machine
fshalt: remove unused variable
fshalt: shut up about #P not being present
fshalt: support relative paths to the new kernel
g: add .ha (Hare)
games/dmid: don’t buffer output
games/doom: add “m_forward” cvar to disable vertical motion move; actually implement use_mouse
games/doom: add optional autorun
games/doom: fix glitchy mouse movement
games/doom: raise max scale factor for 4k
games/doom: raise static limits
games/doom: rename mouse use key for what it is and remove double click
git/commit: fix typo in if statement
git/commit: user better defaults for username
git/common.rc: create required directories
git/compat: expand to cover go bootstrap
git/compat: fix ‘git init –bare’ and ‘git ls-remote’ (thanks floren)
git/compat: fix init
git/export: use native diff
git/get: keep sending what we have until we get an ack
git/hist: add command to show history of files
git/hist: fix with repository other than /
git/hist: make it work in subdirectories
git/import: fix handling relative paths
git/import: remove removed files from index after commit
git/import: squash leading/trailing/consecutive blanks and strip trailing space
git/import: use patch(1)
git/log: fix log count
git/log: only count the messages we show when limiting counts
git/log: support -n option to restrict log counts
git/merge: correctly preserve permissions when merging
git/merge: preserve exec bit correctly
git/pack: add support for skipping ssh signatures
git/pull: fetch all branches (please test)
git/pull: remove ‘-b’ and ‘-a’ option
git/query: implement range using paint()
git/rebase: allow rebase without a clean tree
git/rebase: remove unnecessary use of @ operator
git/send: fill in ‘theirs’ object, even if we miss it
git/serve: log correct error message
git/walk: don’t list untracked files after removal
git: clear status on whoami success
git: improve error on short read
git: performance enhancements
git: rename internal ‘git/fetch’ plumbing to ‘git/get’
history: Rewrite history 9front was first
hjfs: do not truncate lines on /adm/users write
icanhasvmx: our vmx requires unrestricted guest too
ip/dhcpd: properly skip past ipv6 addresses in addrsopt
ip/dhcpd: quiet up syslog
ip/ftpd: use chdev in /lib/namespace.ftp
ip/ipconfig: refactor plan9 vendor parsing
ip/ipconfig: we do not want icmp advice errors on our dhcp connection
ip/sol: handle timeout on password entry for digest auth
ip/tinc: fix ping pong racing causing recalcs and deleting nodes
ip/torrent: fix silly readn() error check (thanks pr)
ktrans: cast switch statement for arm
ktrans: clean headers
ktrans: don’t leak on conflicting jisho lines
ktrans: gui and man page rework
ktrans: listen on lang port for plumber
ktrans: revisit grammer handling and do some spring cleaning
ktrans: tow inside the environment
ktrans: use stdio by default
ktrans: xin chào
ktrans: こんにちは!
ktrans: 你好
ktrans: 新しい降り
make: command’s output plumbable
man: turn on troff -mnihongo if JP font is used
mothra: enable mousewheel scrolling in history list
mothra: get rid of soft hyphens
mothra: make scrollbar style consistent with other applications
patch: apply patches atomically
patch: fix bounds check for hunk scan in forward direction
patch: fix consecutive deletions
patch: fix deletion of files
patch: fix line bounds check when searching for hunk
patch: fix line calculation to avoid redundant searches
patch: fix uninitialized Fbuf during dry run
patch: handle stripped/empty lines mid-hunk
patch: implement a new, simpler patch program to replace ape/patch
patch: improve hunk search
patch: make slurp() return void
pc: remove -n option and check if stdin is cons instead
plot: fix disc and circle operations
rc: squelch ‘Write error’ warning
rcpu: show error when we auth but don’t connect
rio: /dev/label should just ignore offset
rio: add ‘none’ attach option to wsys
rio: add /dev/kbdtap
rio: close the display on the way out
rio: correct error message
rio: correct tap code
rio: ensure single reader and single writer for kbdtap
rio: kbdtap deadlocks are verboden
rio: kbdtap style tweak
rio: make it harder to deadlock from kbdtap
rio: more pointy edges with none attach
rio: prevent some more keyboard lockups
rio: require a confirmation for Exit
rio: return ‘global’ size for none /dev/wctl read (thanks umbraticus)
rio: show Exit in subrios
riow: fix uninitialized field
riow: handle ckKz properly (thanks qwx); better sticky mode (label-dependent)
riow: keyboard-controller for rio
sam: ignore autoindent in cmd window
skelfs: dont mount if not asked to
snoopy: add “ippkt” protocol to demux ip packet interfaces without media header.
spf: limit recursion depth to prevent ddos (thanks tijay, iashiq5)
splitmbox: split a mailbox into mdir format (thanks, umbraticus)
src: ‘test -x’ instead of ‘test -f’
src: search for binaries in path, not random places
ssh: send interrupts even when we’re not in raw mode
togif: fix a typo - don’t free the same image we’re going to use
upas/Mail: check if plumb attrs are nil
upas/dkim: dkim signing for upas
upas/fs/imap.c: additional sanity checking during Expunge
to avoid suicide
upas/fs: clear errstr after chkunix
upas/fs: support date format used in RFC 4155 mbox files
vncv: allow the use of the Mod4 (Super) key
vt: fix home/end sequences in xterm mode
vt: increase buffer size
vt: quote special characters in command arguments
walk: include qid version in deduplication
window: add wsys ‘none’ attach to attempted wctl search
window: fix regression w.r.t subrios
DOCUMENTATION
9pqueue(2): fix typo
auth(8): bugs have been squashed
auth(8): specify what gets put into the environemnt with ‘-s’
auth(8): sync usage messages for auth/box
camv(1), nusb(4): add more details on camera operation
cpu(1): why did we have an empty file? (thanks llamaa)
fork(2): Document RFNOMNT edge cases.
fork(2): fix commas in RFNOMNT references
fork(2): fix parens in RFNOMNT references (thanks Amavect)
fshalt(8): document -r kernelpath feature
git(1), gitfs(4): fix style and typos (thanks schwindl)
git(1): remove documentation for deleted ‘-b’ option (thanks llamaa)
i2c(3): Add documentation for kernels devi2c
i2c(3): fix typos, thanks quinq
import(4), oexportfs(4): more empty files removed.
imx8pm(8): add manpage
ip(3): Discuss local IP addresses for “announce” and “bind”.
ktrans(1): added a history section (thanks moody!)
ktrans(1): documented $jisho and made some improvements. (thanks to Kenji Okamoto, cinap, BurnZez, romi and Aaron for your work on ktrans!)
ktrans(1): remove README files
ktrans(1): typo
ls(1): Make man page synopsis consistent with usage output
mpc(1): fix typo
nusb(4), camv(1): add nusb/cam description, introduce camv manpage
paqfs(4): fix paqfs manpage
patch(1): add the manpage
patch(1): remove bell labs patch scripts
patch(1): remove options that don’t exist
reform(1): add a note about battery readings
rio(4): talk about kbdtap
riow(1): remove the filter warning as it passes unknown keys now
rsa(2): fix X509reqtoRSApub(…) signature
sam(1): clarify “
skel(3): → skelfs(4)
sol(8): fix example (vncv vs vnc)
tlssrv(8): update example path to imap4d
wm8960(8): add manpage
wm8960(8): fix wrong source and see also
zuke(1): document current track printout on stdout
OTHER
/lib/font/bit/pelm: use Korean fonts
/lib/font/bit/terminus: remove duplicate OFL license and refer to /lib/legal
/lib/font/bit: add Adobe Source Hangul Sans
/lib/ktrans: added tools to fetch skk dicts and convert them to ktrans jishos
/lib/rob: I told this anecdote in an internal talk at Google. You might have seen it then.
/lib/rob: Sockets are just so unpleasant
/lib/theo: I want to say more.
/lib/theo: Isn’t that bad?
/lib/theo: The man page says “don’t do that”.
/lib/theo: This is a bug in a diff I put into snapshots.
/lib/troll: 9 is not nginx-level scale
/lib/troll: Plan
/lib/troll: [9fans] Power mac support
/lib/troll: plan9 secret society
/rc/bin/9fs: case 9front: restore extra/ and iso/
/rc/bin/9fs: fix case 9config for new contrib.9front.org server.
/rc/bin: amend usage misdirections (thanks umbraticus)
/sys/games/lib/fortunes: Use a client written in Go? – Skip Tavakkolian
/sys/lib/dist/mkfile: add target for mnt-reform image
/sys/lib/dist/mkfile: create a default plan9.ini for reform image
/sys/lib/kbmap/jp: correct Zenkaku control character
/sys/man/8/smtp: document missing flags (thanks, chris)
/sys/man: fix minor complaints from checkman
/sys/src/boot/reform/mkfile: download official u-boot for the mnt-reform
/sys/src/boot/reform: generate boot.scr
/sys/src/cmd/mkfile: append to $NOMK so user can provide their own
florenate: not funny
fontsel: Japanese sample text
fontsel: a font selector program
fontsel: sample Korean text
inst/prepdisk: fix invocations of test(1)
inst: make bootsetup work for on pc architectures
kbmap: add latin american keymap (thanks ssf)
move and rename MNT Reform 2 support utilies, cat manpages into one
remove empty /sys/src/cmd/cpu.c
update /lib/pci
valley, feminize: these jokes suck.
vga font: add 23ed-23ef, 23f4-23fa, some of which are used in bar(1) manpage
9FRONT “SURVIVAL EVASION AND ESCAPE” RELEASED (2022/04/13)
Main changes of this release:
acmed, x509 certificate renewal automation
rc, supporting better error reporting, here documents (big rewrite)
vlan support in devbridge
source address translation nat support in devip
ip/sol, intel amt serial-over-lan console
removal of ssl, cpu and import
fix auth/as, thanks 4chan, th4nks.
DOWNLOAD
Multiple installation media are provided for PC and Raspberry Pi. For PC, burn an .iso file to CD, or dd it directly to USB media. For Raspberry Pi, 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.
http://9front.org/iso/9front-8963.f84cf1e60427675514fb056cc1723e45da01e043.386.iso.gz.torrent
http://9front.org/iso/9front-8963.f84cf1e60427675514fb056cc1723e45da01e043.amd64.iso.gz.torrent
http://9front.org/iso/9front-8963.f84cf1e60427675514fb056cc1723e45da01e043.pi.img.gz.torrent
http://9front.org/iso/9front-8963.f84cf1e60427675514fb056cc1723e45da01e043.pi3.img.gz.torrent
; sha1sum -2 256 9front-8963*gz
7104645614dccc60332009bf1524850e87ae31379d44a9634b90a9effff48287 9front-8963.f84cf1e60427675514fb056cc1723e45da01e043.386.iso.gz
ee0fda9ba816b81b43e785882bb7cbd19213f06984adeb8bb54d5ea6b2769506 9front-8963.f84cf1e60427675514fb056cc1723e45da01e043.amd64.iso.gz
4b308ecdb6bef642669406e3adf2992b3f21d529dc4114a14ef9c649f7d79aaf 9front-8963.f84cf1e60427675514fb056cc1723e45da01e043.pi.img.gz
475540ecb6fd4ae29ef88c3f7eef0cab6e3a054d219d6938b5ac27f15168f10a 9front-8963.f84cf1e60427675514fb056cc1723e45da01e043.pi3.img.gz
MIRRORS
http://lux.felloff.net/usr/cinap_lenrek/9front/
https://ftp.cc.uoc.gr/mirrors/9front/
GIT REPOSITORY
http://git.9front.org/plan9front/plan9front/HEAD/info.html
DASH 1 MANUAL
http://fqa.9front.org/dash1.survivalevasionandescape.pdf
dash 1 manual: http://9front.org/propaganda/books
SONGS
by sl
http://9front.org/mp3/war_with_rome.mp3
THANKS
igor (fast reaction)
KERNEL AND DRIVERS
9boot: fix isowalk() for directories spanning multiple sectors
archacpi: leave acpi enabled with *acpi=
arm64: use generic timer virtual counter for cycles()
audiohda: Add DID for Intel 200 Series PCH HD Audio
audiohda: add support for intel cannon point-lp (t490s)
audiohda: add support for intel comet lake-s, fix typo
audiohda: add ztom z36/z37 device id
audiohda: fix syntax error
aux/wacom: fix race in read queue
bcm: fix rebootcode linkage
bcm/emmc: remove unused cardr wakeup(), use MACHP(0) as tick reference
bcm64/sdhc: add *emmc2bus kernel parameter to set dma dram bus address
bcm64: make the kernel use virtual timer counter register for cycles()
bcm64: parse the emmc2bus/dma-ranges device-tree property and provide *emmc2bus kernel parameter
devbridge: fix vlan range parsing
devbridge: implement experimental vlan support
devbridge: improve locking, unbind ports automatically on read error and more…
devdraw: printmesg: implement “z” fmt arg (safe since printmesg is disabled)
devenv: allow environment total size of up to 1MB
devgpio: make reading ctl file return 0 bytes
devip: add comment to ip.h explaining Routehint struct
devip: allow setting the “trans” flag on a logical interface
devip: cache arp entry in Routehint
devip: dont hold ifc wlock during medium bind/unbind
devip: implement ipv4 arp timeout with icmp host unreachable notification
devip: implement network address translation routes
devip: improve tcp error handling for ipoput
devip: properly rlock() the routelock for v4lookup() and v6lookup()
devip: use better hashipa() macro, use RWlock for arp cache
devip: use top bit (type) | subnet-id for V6H() route hash macro
devsd: cache SDunit pointer in Chan.aux, improve error handling
devssl, cpu, import, oexportfs: delete
devswap: improve setswapchan()
devtls: fix bwrite memory leak when channel stops being open
devtls: implement “hangup” ctl message
devtls: reject zero length records (thanks sigrid)
devuart: allow serial console on late detected uarts
devvmx: skip tsc offset writing if CPU doesn’t support it
ether8169: support rtl8402 variant
ether82563: add 0x15bd i219-lm variant (thanks crab1)
ether82563: add pci id for ethernet on dell optiplex 7090 micro (thanks leimy)
ether82563: add pci id for i219-v on t490s
ether82598: add pci device id for ixgbe i52899 (thanks izaki)
etheriwl: add did for Intel Centrino Advanced-N + WiMAX 6250 (thanks Nessa)
etheriwl: add support for wireless ac 7260 (thanks kemal!)
etheriwl: fix botched merge…
etheriwl: fixes for 7260 ac
igfx: add TypeILK, since it differs slightly from SNB
igfx: add x1 carbon 3rd gen (broadwell)
igfx: fix FDI link training on ironlake
igfx: fix some typos in comments
igfx: maintain single/double-channel LVDS mode from BIOS
igfx: Support for igfx on Celeron® 2957U (thanks Lorenzo Bivens)
igfx: add x1 carbon 3rd gen
igfx: add missing pci did’s for hwblank for known mobile models
kernel/rdb: need to reenable polling mode on the uart, remove cruft
kernel: add extra negative and power-of-two check to pcibarsize()
kernel: call freebroken() for kproc() when out of processes
kernel: dont block allocating kstack for new processes
kernel: ensure that all accesses to Mhead.mount is done with Mhead.lock acquired
kernel: fix off by one for $cputype buffer (thanks anthony martin)
kernel: fix stat bugs
kernel: increase bootfs.paq compression level and blocksize
kernel: make Page.txtflush into an array
kernel: make growfd(), findfreefd() and newfd2() static
kernel: move waserror() macro to port/portfns.h
kernel: page counts a ulong, not usize
kernel: return error from sysrfork instead of waiting and retrying
kernel: simplify /boot/boot: 28K down to less than 4K.
kernel: support large 64-bit pci membars, increase pc64 VMAPSIZE to 1TB
kbdfs: allow X and x to be used not just for hex composition
nusb: Fix handling of interface altsetting.
nusb/audio: use setalt(), make sure endpoint has right direction.
nusb/cam: fix mistake (nil vs -1)
nusb/cam: use setalt()
nusb/disk: use setalt(), print argv0 in prints instead of “disk:”
nusb/ether: remove csp check for rndis, already done in nusbrc
nusb/ether: use setalt()
nusb/lib: provide a setalt() function to set the interface to its altsetting
nusb/serial: fix pl2303 usbcmd error checks
nusb/usbd: use per hname collision counter instead of device address to resolve collisions
nusbrc: fix FTDI detection
sdide: add pci id for AMT IDE-r controller on x230
sdmmc: do card init in a background process after the first try
uartpci: AMT SOL Redirection interface (x200s)
uartpci: add serial-over-lan uart from x230/AMT
usbxhci: endpoint address needs to be masked with Epmax from endpoint number
usbxhci: xhcirecover proc does not need to check status every 10ms
vga: add eeepc1005ha graphics (thanks Andrew Eggenberger)
vga: return modes according to EDID timing priority order
vga: use vlong for pci bar size
vgadb: add 3rd gen intel hd graphics did (thanks mora)
vgadb: add cyber938x bios offset for cyber 9525 (thanks lyndsay)
COMPILERS AND DEBUGGERS
/sys/lib/acid/pool: format addresses using A format, instead of X (32 bit)
6c: extern registers must be considered used on return
cc: do not expand function-like macros for non-function invocations
cc: fix incorrect octal range condition in mpatov
reduce: use if() to test for exit status of pipeline
LIBRARIES
ape: add missing idn2utf, utf2idn to lib9
ape: allow exporting rc functions in environ[]
ape: export mktemp() in <stdlib.h> when _BSD_SOURCE is set
ape: fix wrong write size for _assert()
libFLAC: update to 1.3.4
libaml: implement ObjectType instruction (thanks sigrid)
libaml: implement ToString instruction
libaml: resolve refs in ObjectType instruction
libc: change usize to 64-bit for amd64 and arm64, make memory(2) functions use usize
libc: fix overflow of domain component rune buffer for idn2utf()
libc: idn2utf()/utf2idn(): check for < 1 buffer, can’t insert terminating NUL.
libc: use usize for sbrk() increment
libc: qsort: allow usize-sized arrays.
libndb: move mkptrname() into libndb to avoid duplication
libpanel: rename to match clean rule
libsec: decode international domain names in certificat subject, fix overflow botch
libsec: fix bugs in tls extension handling (thanks kemal)
libsec: fix operator precedence bugs (thanks kemal)
libsec: fix wrong assert condition (introduced in 775a4bea4386c12067057de0e56dd8baa34f43ec)
libsec: fix wrong tls1.0 prf regression
libsec: handle international domain names in certificate request
libsec: no point in checking for “xn–” marker, just call idn2utf().
libtags: flac: check sample rate before dividing by zero; also check number of channels
libtags: id3v2: make sure extra id3 tag does not cause infinite loop
libtags: m4a: do not div by zero
libtags: no tags is still fine if format is known
libtags: opus: fix duration on truncated files
libtags: wav: do not div by zero
libthread: deal with schedfork() and schedexec() returning -1
libthread: fix debug prints, simplify
libthread: remove more garbage: threadnotefd, threadpasserpid.
libthread: remove unused _workerdata() prototype from threadimpl.h
libthread: remove unused skip() function
PROGRAMS
9fs: 9front.org files now live on port 9000.
9fs: remove case 9bugs (defunct)
9fs: update case 9contrib for new server
9fs: update case 9front
acme: don’t let tag button draw over tag border.
acme: fix hiding of top windows when loading a dump file (thanks Xiao-Yong)
acme: fix leaking memory allocated by getenv(“font”)
acme: fix plumb message leaks (thanks igor)
acme: fix window and scrollbar display glitches at bottom fringe of column
acme: remove superfluous print arguments (patch from plan9port)
acmed: add external command flag -e, improvements, bugs
acmed: handle international domain names
acmed: import acme (RFC8555) client
acmed: move from ip/ to auth/
acmed: pass original utf8 subject domain to challengefn, simplify
acmed: reject -t flag when -e is given, dup stderr to stdout of -e cmd
acmed: remove unused define
acmed: tokenize domains from subject also with spaces (fixed multidom cert)
acne/Mail: fix double-free (Bterm() in mesgshow())
aescbc: flush before exit and report an error (if any)
ape/mkstemp: better options
ape/psh: provide /dev/fd
audio/flacdec: handle read errors properly to avoid endless looping saturating cpu
auth/as: fix wrong filesystem permissions due to wrong factotum being attached
auth/rsa2jwk: add code to produce jwk rsa keys
aux/cddb: include album name and correct track number key
awk: fix off-by-one string buffer overflow from gsub
cat: remove stupid long cast
cmd/mkfile: major cleanup
date: remove ‘-m’ flag
diff: fix -u when comparing identical files
diff: revert last change, this breaks git/diff
exportfs, oexportfs, iostats: make -d log to stderr
exportfs: make -d log to stderr
exportfs: revert e524e8d65a7573c46d7beb49e77bfc2d55a5563d
flacdec: do not loop forever on write/decode errors
g: fix duplicate files with directory argument
g: show all file names when grepping
g: use xargs instead of finding complete file list before greping
games/gb: minor style fixes
games/gb: various RTC fixes
gba: fix flash chip id for 128k and add setting
git/branch: fix order of operations (thanks qwx)
git/branch: fix typo in error message
git/branch: make ‘-n’ use HEAD when ‘-b’ unspecified
git/branch: remove duplicate assignment of dirtypaths
git/commit: remove trailing ‘subst -g’
git/commit: squelch error when run outside repository
git/compat: add support for ls-remote [-d]
git/diff: clean up diffs
git/export: use ‘date -f’ instead of ‘date -m’
git/fetch: be more robust
git/fetch: fix overly eager ’s/pack/idx/g' in refactor
git/fetch: improve detection of dumb http protocol
git/fetch: use read for reading packfiles instead of readn
git/fs: remove trailing null bytes from parent file (thanks mcf)
git/pack: check pf->pack for nil before Bterming it
git/query: fix spurious merge requests
git/query: leave range commits in topological order
git/query: refactor graph painting algorithm (findtwixt, lca)
git/revert: fix empty invocation
git/revert: update modification time on revert
git/save: leave submodules unmangled
git/serve: add a ‘\n’ after HEAD
git/serve: don’t show progress when not interactive
git/serve: one more silencing of non-interactive prints
git/{diff,import}: make it easier to handle manually-asembled patch emails
git: better handling of absolute paths, regex metachars
git: fetch all branches by default.
git: fix non-interruptible temporary warning
git: fix typo in git/log output
git: fully init objq
git: improve pack cache heuristics
git: revert c947bf808 – it triggers a bug.
git: separate author and committer
git: size cache in bytes, not objects
git: use commit date as traversal hint instead of author date
git: when stealing from the old packs list, keep what we stole.
gzip, bzip2: add -n flag to suppress modification timestamp
hjfs: fix group ownership of home dirs created by newuser command
iostats: bind /srv into the namespace, its magic
ip/dhcpd: ignore icmp advice
ip/dhcpd: ignore ipv6 addresses when looking up static binding
ip/sol: add intel AMT serial-over-lan console program
ip/sol: use httpdigest authentication
ip/sol: kvm (vnc) redirect, bring back plain authentication as a fallback (when unsupported)
ip/tftpd: add -m argument for name substitution using regular expressions
joy: joystick script for all emulators, and docs
mixfs: add reading (audio loopback)
mklatin: fix compose sequences starting with a space char (␣ and ı)
mkplist: add -s option to enable “simple” sort (thanks qwx)
mothra: fix rendering of tag
ndb/dns: fix ndb serialization of RR*
ndb/dns: fix wrong ndb attribute “txtrr” vs. “txt” for caching server
ndb/dns: handle txt rr strings as binary, remove nullrr ndb code
ndb/dns: implement caa record type in ndb
ndb/dns: make dblookup() consistent with cachedb operation, bring back txtrr for compatibility
ndb/dns: use correct attribute when serializing caa record in ndb format
ndb/dns: use decimal encoding for txt rr string escapes
ndb/dnsdebug: dont duplicate rrfmt()
ndb/dnsdebug: make usage flags consistent
ndb/dnsquery: make ! bang work with reverse lookups, document in ndb(8)
netaudit: fix auth check, can have multiple auth servers!
netaudit, ndb(6): the dom= attribute in ndb should be specified without the trailing period
netaudit: check for sys= attribute to be free of periods
netaudit: simplify
page: performance fixes
pc: do not access out of bounds array element
plumber: remove $plumbsrv, add optional srvname, usage check
rc-httpd: fold two sed calls into one when computing location
rc-httpd/handlers/error: restore fn 400 (thanks, qeed)
rc-httpd/handlers/{dir-index, serve-static}: commit the correct files this time (thanks, igor)
rc-httpd/handlers/{dir-index, serve-static}: fix directory traversal bug (thanks, igor)
rc-httpd/{rc-httpd, handlers/error}: do some minimal sanitization on $SERVER_NAME before handing it off to select-handler.
rc: Xerror is not a instruction, remove from pfnc
rc: add Xhereq instruction to trace
rc: add err != nil check for early exit
rc: fix everything
rc: fix globbing with lists (thanks qwx)
rc: fix here document handling with quoted end-marker (thanks sigrid)
rc: fix leaking runq->cmdfile
rc: fix pwrd() regression, forgot <= ‘ ’ case from needsrcquote()… sorry :(
rc: make it portable (for UNIX)
rc: only have single instance of a symbol, extern in header (thanks mcf)
rc: read heredoc when receiving ‘\n’ (thanks Eckard Brauer)
rc: rstr() shouldnt skip trailing NUL bytes (thanks ori)
rc: simplify Makefile, use yacc default rule (thanks k0ga)
rc: remove useless exit $staus at the end of rcmain
realemu: fix typo in usage message.
rio: allow spaces in working directory path (-cd) when creating a new window via wctl
rio: fix parsing of directory path (-cd) when creating a new window via wctl
sam: fix spurious overwrite message (patch from plan9port)
screenlock: don’t poll to top window (thanks Stuart Morrow)
snoopy: … and fix the memory leak for new dns rr types
snoopy: add vlan protocol (802.1q)
snoopy: adjust for new dns txt rr format
snoopy: dns: add caa record type, fix rrtypestr()
snoopy: fix dns nil pointer crashes when formating dns packets (thanks sl)
ssh: fix typo (thanks izaki)
ssh: use RSA/SHA-256 instead of RSA/SHA-1 as the public key algorithm
sshfs: prefer error codes over error strings
tinc: fix spelling and update manpage (thanks unobe)
tinc: fix typo in unknown host error message
troff: we are not htmlroff
tweak: add missing return to fix double close(…) on file descriptor…
upas/fs: add missing newline to a debug print
venti: fix fprint format string
venti: fix memory layers
vmx: fix PCI ID for virtio block devices
vmx: update openbsd kernel heuristics
vncv: enable connecting to Darwin hosts
vncv: some fixes to work with intel amt kvm
webfs: do not reuse digest Authorization headers
webfs: implement RFC2617 qop extension for http digest authentication
x509: encode empty sequence as constructed
zuke: do not change volume with delta == 0
zuke: fix search function ignoring matching artist name
zuke: reset before tokenize, increase player thread stack
zuke: simplify volume control logic
zuke: support other volume handles, update volume when /dev/audio is opened
DOCUMENTATION
0intro(1), acme(1), con(1), rcpu(1), rio(1), namespace(4), authsrv(6), aan(8): cpu -> rcpu
9p(2): fix a typo (thanks humm)
acme(1): fix reference to 9front default acme font
acmed(8), rsa(8): add role=client attribute to rsa keys
acmed(8): add bugs section
acmed(8): fix typo
acmed(8): fix typos, formatting, and missed name change.
acmed(8): ip => auth: missed a reference to the old name
acmed(8): missed a spot
acmed(8): more improvements
acmed(8): typo…
addpt(2): fix inconsistency in description
audio(1): replace references to juke(7) and playlistfs(7) with zuke(1) (thanks unobe)
brk(2): …. we define lowest addres not used by the program above, so use that instead
brk(2): sbrk(0) returns end address, not the base
consolefs(4): import -> rimport
date(1): sync with reality
dial(2): dial returns an open data file, not a ctl one. also fixed little typo.
draw(3): .IR on memlorigin(2), fix wrong “t” param name (should be “top”)
draw(3): add a missing .br
fork(2): document new error behaviour when out of resources
ftpfs(4): import -> rimport
git(1): “see also” consistency (thanks sirjofri)
git(1): fix git/add -r spacing and wording in BUGS section
git(1): fix quotes in git/conf example
git(1): fix typo in git/push section
ip(3): document the trans argument for add/try.
ip(3): use flags instead of tag for 8 column route add/remove
ipconfig(8): add -t flag to enable source address translation
joy(1): fix typo (thanks lyndon)
leak(1): document how to generate pool.$objtype.acid
listen(8): get rid of old ports
listen(8): remove old cpu, exportfs and rexec listeners
man(1): reference /rc/bin/sig in SOURCE section
ndb(2): document txt and txtrr attributes.
ndb(6): add caa
nusbrc(8): fix typo in BUGS section
prep(8): fix typos, wording, and formating
rc(1): fix synopsis
rc-httpd(8): document how to use HTTP basic authentication
rsa(8): document rsa2jwk
rsa(8): fix spelling and adjust macros to fix formating
sam(1): fix description of ctrl+g
sega(1): fix typo
snap(4): remove non-existent -s from snapfs
pushssl(2): remove
ssl(3): remove
venti(8): change documented behavior to match actual
OTHER
/lib/ndb/local: add dnschallenge ndb file for acmed(8) by default
/lib/theo: Once you understand the mechanism you’ll realize it will never work.
/lib/theo: We don’t need to make statements people perceive as promises.
/lib/theo: You obviously don’t know what you are doing, and I think you don’t deserve help.
/sys/doc/troff.ms: give correct path for -m flag (thanks kyle)
/sys/games/lib/fortunes: GPU.js
/sys/lib/newuser: fix wsys botch, crate bin/arm64
/sys/src/9/mkfile: add bcm64 (thanks stuart morrow)
fortunes: MY NAME IS BEING USED IN A PHISHING ATTACK. DO NOT RESPOND TO MAIL OFFERING MONEY FOR UNDERGRAD RESEARCH ASSISTANTS. – bwk
keyboard: ++ = ⧺
keyboard: add ∵ (because) and ∷ (proportion)
keyboard: complete double-struck capital set; change SS → Ss for §
rootstub: create /sys/lib/tls/acmed directory
9FRONT “COMMUNITY VS INFRASTRUCTURE” RELEASED (2021/07/18)
RELEASE
This is the first official release after the migration from mercurial distributed version control system to ori’s git9.
Mercurial and Python have been removed from the distribution, but can still be installed from the snakeoil repository:
http://git.9front.org/plan9front/pyhg/HEAD/info.html
DOWNLOAD
Multiple installation media are provided for PC and Raspberry Pi. For PC, burn an .iso file to CD, or dd it directly to USB media. For Raspberry Pi, 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.
http://9front.org/iso/9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.386.iso.gz.torrent
http://9front.org/iso/9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso.gz.torrent
http://9front.org/iso/9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.pi.img.gz.torrent
http://9front.org/iso/9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.pi3.img.gz.torrent
cpu% sha1sum -2 256 9front-8593*.gz
5673ba7f7a0e42d500b923ad8861e5032eae2f990b546d82a307e4184e4113f7 9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.386.iso.gz
af6dfae894dcb1e43f1e7e3d085b50f6d1dcf396e09a37d23c174ea94d8bf244 9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.amd64.iso.gz
d0a5127c4ab531668232271359054107b884aeb43aec99eecadc7441f4380e97 9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.pi.img.gz
07563f2d76061753614dac9b9b256e3b35932465ecc47844e651c5cc82087930 9front-8593.acc504c319a4b4188479cfa602e40cb6851c0528.pi3.img.gz
MIRRORS
http://lux.felloff.net/usr/cinap_lenrek/9front/
https://ftp.cc.uoc.gr/mirrors/9front/
http://fulton.software/9front/
GIT REPOSITORY
http://git.9front.org/plan9front/plan9front/HEAD/info.html
DASH 1 MANUAL
http://fqa.9front.org/dash1.communityvsinfrastructure.pdf
dash 1 manual: http://9front.org/propaganda/books
SONGS
by cinap_lenrek
http://9front.org/mp3/snakes.mp3
http://9front.org/mp3/manual3.mp3
THANKS
khm (propaganda assist)
KERNEL AND DRIVERS
archacpi: make *acpi=1 the default
bcm: try ATAGS/DTB pointer from R2 on entry
devloopback: fix wrong device character (thanks romano)
devmouse: default to no blanking instead of 30 minute blank timeout
devvmx: remove unncessary locking in gotcmd() sleep test function
ether82563: add pci id for i219-LM from ThinkPad P17 Gen1 Professional Mobile Workstation (thanks tschak909)
kernel: clean up Mach structure
kernel: export pcienumcaps() for custom capability enumeration in drivers (virtio)
kernel: use 64-bit virtual entry point for expanded header, document behaviour in a.out(6)
nusb/ether: rndis: add standard class code (tested by jmi2k with OnePlus 8)
nusbrc: ignore rndis ethernet in /rc/bin/nusbed, handled by /sys/src/9/boot/nusbrc (thanks romano)
nusbrc: rndis with csp 0104ef
pc, pc64: increase confmem slots to 64
pc64: avoid getcr3() in mmuflushtlb()
sdvirtio: accept multi-queue devices
virtio: add non-legacy virtio 1.0 drivers for disk and ethernet
virtio: set FeaturesOk flag after feature negotiation, and enable queues before DriverOk flag
COMPILER AND DEBUGGER
cc: create .$O files with DMTMP
lex: fix uninitialized fds (thanks きゐ)
LIBRARIES
lib9p: add auth* functions to man page
lib9p: expose Srv.forker handler and srvforker(), threadsrvforker() and threadsrv() functions
lib9p: remove Srv.srvfd, make postsrv() and threadpostsrv() return the mountable file descriptor, update documentation
lib9p: remove unneccesary headers
libaml: fix gc bug, need to amltake()/amldrop() temporary buffer
libc: add encode(2) variants for custom alphabets
libpanel: fix text sliding around in libpanel text entry widgets.
libsec: add X509reqtoRSApub() function and return subject alt names in X509to*pub() name buffer
libsec: emulate openssl asn1 when generating x509 csr
libsec: move zero check to curve25519_dh_finish()
libsec: take just the CN part of Distinguished Name in subjectAltName
libsec: various changes to tls
libtags, zuke: add *.mod support (thanks kemal)
libtags: modules: ignore empty title
libtags: trim text tags and ignore empty values
libtags: upstream updates
libtags: use CP437 as the default encoding for module formats
libtags: use nelem
libthread: generate correct acid files
thread.h: threadnonotes does not exist
threadimpl.h: remove Printsize as well (unused)
threadimpl.h: remove unused fields from Proc struct
PROGRAMS
B, sam: remove sam srv file
B: expand path when plumbing files
Mail: correctly track the number of messages (thanks igor)
Mail: remove impliicit headers (thanks unobe)
Mail: remove message about cyclic threads
acme: fix border size, autoindent undo: imported from plan9port (thanks jxy)
walk: properly format permissions
aux/cddb: freedb.org is dead, use gnudb.org
aux/cddb: Provide -e option to print commands to rip audio with tags.
cal: fix days of week alignment for year view (thanks igor@9lab.org)
cpu: properly handle end of file in readstr()
crop: allow no-ops for pipelines
disk/fdisk: add OpenBSD partition type
file: detect webp files (thanks kemal)
file: recognize executable scripts, etc.
g: add lua, mk, ml, mli, myr, and sh suffixes
games/opl3: don’t buffer output and simplify (thanks umbraticus)
games/opl3: use correct sampling rate
git/add: clear qid cache as side effect
git/branch: diff clean and dirty lists correctly
git/branch: mark files we couldn’t update as dirty
git/branch: merge correct set of files
git/branch: preserve checked in permissions on branch update
git/branch: reduce execs to sync working dir
git/branch: resolve implicit branch switch before using it
git/branch: somewhere in the syncing, the fix for junk files was lost
git/commit: allow passing absolute paths
git/conf: check in /sys/lib/git/config as a fallback to user-wide config
git/export: make output pipable to /bin/mail
git/fetch: ensure we clean packfiles on failure
git/fetch: fix overly eager ’s/pack/idx/g' in refactor
git/fs: move mount point to $repo/.git/fs
git/fs: use a better heuristic for permissions.
git/import: handle mails with line wrapping and mime
git/init: create fs dir
git/log: handle absolute paths gracefully.
git/log: show first commit as file change
git/push, git/send: get better about erroring out early
git/revert: fork the namespace before running git/fs
git/revert: handle absolute paths gracefully (thanks deuteron)
git/send: allow the remote to have refs that we don’t
git/send: pick minimal delta set correctly (thanks igor)
git/serve: remove undocumented -n namespace option and -r /usr/git default
git/{branch,pull}: merge files correctly
git: add missing file
git: allow local repository directories as remote uri’s
git: avoid uninterruptible temporary warning
git: create .git/objects/ on git/init
git: got git?
git: handle absolute paths better
ip/dhcpd: work around raspberry pi pxe firmware by providing dhcp option 66
ip/ftpd: Add explict and implicit FTPS support.
ip/ipconfig: ODtftpserver (dhcp option 66) is of type string
ip/tftpd: add a syslog message about what error we return to the client on a NAK
ircrc: freenode -> oftc
iwhois: add some improvements (thanks gall0ws)
kbdfs: allow to escape ctlr-alt-del with shift for vmx and vnc.
mkpaqfs: allow setting compression level
mothra: read the content-type header over file(1) to determine type (thanks james palmer)
page: fix for kerTeX dvi
patch for imap when imap fails
plumber: fix substrings in match rules
printfont: load all fonts for printfont all
python, hg: tow outside the environment.
rc: add subshell-function syntax
rc: correct line numbers
rc: skip arguments to Xsrcline, Xsrcfile in codefree
juke: remove (use play or zuke instead)
remove old, broken scripts: fedex, u(s)ps, weather (thanks fulton)
resample: improve performance (thanks José Miguel Sánchez García)
rio: avoid re-triggering clicks on resize/hide/unhide and send wctl when focus is lost
rio: match background screen color format (thanks noam)
sam: remove refrence to /srv file in man page
troff: fix mangled fonts and character files
trofftable.rc: make work
upas/Mail: avoid showing empty To: and CC: lines in compose windows
upas/Mail: fix CC addresses in “Reply All” compose windows
upas/Mail: fix bug where Redraw must be executed twice to have an effect
vac: add -t flag to exclude temporary files and directories (thanks foura)
venti: fix detection of available RAM (fixes -m)
venti: inform user when reducing memory consumption
venti: make error messages consistent, remove duplicate messages.
venti: warn when opening /dev/swap fails
vmx: avoid strdup() register names for register cache
vmx: emulate ps/2 intellimouse scrolling
vmx: fix 9p debug server and make it compatible to /proc
vmx: implement long mode page table translation
vmx: reset virtio queue state on device reset
vt, ssh: don’t send interrupts on window resize
vt: allow scrolling with the mouse.
zuke: add mkplist, readtags
zuke: fix middle-click restarting playback if held while mouse pointer is moving
zuke: fix position formatter using a wrong type
zuke: fix seeking in paused mode
zuke: include libtags in CFLAGS
zuke: remove -G option (old playlists not supported anymore)
zuke: treat toggle as play in stopped state
DOCUMENTATION
9pfid(2): document Srv* in Req (thanks kjn)
Remove ap(1)
a.out(1): update manpage to be 64 bit inclusive
acme(4): document rdsel, wrsel (thanks foura)
add zuke(1) manpage (thanks kemal & humm)
/sys/man/mkfile: drop reference to non-existent realtime(3)
/sys/man/mkfile: run eqn(1) for usb(3) section of book
date(1): document ‘-f’ option
date(1): list all option characters in SYNOPSIS
fs(4): describe the noauth toggle better (thanks izaki)
git(1): we have rebase
graphics(2): fix typo
memory(2): mention tsmemcmp (thanks kemal)
mouse(3): mousein is NOT exclusive, see 30907f1d00a7646ccbb420a18f60ccb0bf36e740
nusbrc(8): fix typo (thanks igor@9lab.org)
opl3(1), exec(2): fix manpage typos (thanks umbraticus)
pic(1): restore example section
rsa(8): document auth/x5092pub, fix usage lines
sched(9): replace ‘–’ with ‘-’ in NAME section
segment(3): restore missing phrase
strcat(2): 0 → nil in manpage in refrence to pointers
sysinfo(1): we don’t do ‘-i’ for sysupdate any more.
sysinfo(1): we’re on git now.
tmdate(2): “ttt” is a valid format too, mention it
webfs(4): fix typos
zuke(1): engrish (thanks qwx)
zuke(1): more fixes (thanks humm)
OTHER
/sys/lib/dist/mkfile: test for .git directory
/sys/lib/kbmap/colemak: map capslock to backspace (thanks jacob wb)
/sys/src: add arm64 to installall list
vga: Add U+29FA DOUBLE PLUS (thanks jmi2k)
distproto: remove .hgnore and .hg and add .git directory
distproto: sync with hg
fortunes: revision: allow pseudo options after –end-of-options
fortunes: unremove
homespool: remove obsolete lp config tool
legal: mercurial -> git
legal: remove references to python and mercurial
manual: don’t match nonexistent file while preprocessing
sysupdate: clean up transitional code
sysupdate: insert tombstone
termrc, cpurc: silence /net/ether* error message when there are no ethernet devices
9FRONT “MIT FRUCHTGESCHMACK” RELEASED (2021/04/03)
HERUNTERLADEN
F�r PC und Raspberry PI sind mehrere Installationsmedien bereitgestellt. Brennen Sie f�r PC eine .iso-Datei in CD, oder dd direkt an USB-Medien. F�r Raspberry Pi, DD eine .img-Datei direkt an SDCARD.
Die PI.IMG-Datei kann f�r Raspberry Pi 1, 2 und 3. Die Datei PI3.IMG kann f�r Raspberry Pi 3 und 4 verwendet werden.
http://9front.org/iso/9front-8392.16c5ead832f2.386.iso.gz.torrent
http://9front.org/iso/9front-8392.16c5ead832f2.amd64.iso.gz.torrent
http://9front.org/iso/9front-8392.16c5ead832f2.pi.img.gz.torrent
http://9front.org/iso/9front-8392.16c5ead832f2.pi3.img.gz.torrent
cpu% sha1sum -2 256 9front-8392*.gz
59888dc6ca47461c4267d3c0d3bbe6869d90894607d42590d9a9ef3b52904dce 9front-8392.16c5ead832f2.386.iso.gz
8b309dad3b1fd1a88bc79082d0b1b45bcc8f1a645cb575e4d727fe2a852067bb 9front-8392.16c5ead832f2.amd64.iso.gz
4476afc5c5b9589b3d401df8319b1240849ab11708f253c3f4686336fb280efd 9front-8392.16c5ead832f2.pi.img.gz
9dd26386b3358f5560e3e55ee2a630cc312e38e3550d08747455800387b7a13d 9front-8392.16c5ead832f2.pi3.img.gz
SPIEGEL
http://lux.felloff.net/usr/cinap_lenrek/9front/
https://ftp.cc.uoc.gr/mirrors/9front/
http://fulton.software/9front/
MERCURIAL REPOSITORY
https://code.9front.org/hg/plan9front
DASH 1 HANDBUCH
http://fqa.9front.org/dash1.mitfruchtgeschmack.pdf
dash 1 und die mannseiten im druck : http://9front.org/propaganda/books
DANKE
KERN UND TREIBER
9boot: Automatische Länge für 64-Bit-Werte in hexfmt() für Framebuffer-Adresse verarbeiten(danke Michael Forney)
9boot: Markieren Sie die efi-Boot- und Laufzeitdienstregionen als reserviert
9boot: bevorzuge plan9.ini von ESP, von dem wir geladen haben
audiohda: PCI-ID für Intel C610/X99 hinzufügen
amd64, vmx: unterstützt avx/avx2 für Host/Gast; Verwenden Sie * noavx = in plan9.ini, um es zu deaktivieren
amd64: FP: Verwenden Sie immer genügend Speicher, um den AVX-Status anzupassen und auf 64 Byte auszurichten
audiohda: AMD Starship/Matisse HD Audio Controller hinzufügen(danke uramekus)
audiohda: Interrupts nicht aktivieren, bevor intrenable()
audiohda: lass es mit qemu funktionieren(danke Unfug)
audiohda: setze irbsts Bits in hdainterrupt() zurück(danke LordCreepity)
aux/acpi: Leere Dateien nicht verfügbar machen
aux/kbdfs, kbmaps: Aktivieren Sie Kmod4 für andere Layouts, nicht nur für neo2
aux/kbdfs: benutze getuser() von libc
aux/kbdfs: Fehler beheben, übrig gebliebene statische Benutzervariable entfernen(danke umbraticus und igor)
aux/realemu: Verwenden Sie # $/pci/B.D.Fraw, um auf den PCI-Konfigurationsbereich zuzugreifen
aux/vga: Schwenken entfernen, Bildschirmneigungsunterstützung hinzufügen
ether2114x: Stellen Sie sicher, dass pci bar0 E/A ist
ether2114x: Überprüfung des Treibers auf pc64
ether8169: Interrupt-Panik vor Init beheben, Initialisierung bis zum Anhängen verschieben
ether82563: PCI-ID für i219-LM auf thinkcenter hinzufügen(easypeasy, danke hiro)
etheriwl: Bringt die Wiederherstellung nach dem Flushq-Timeout zurück
etherm10g: Doppelte PCI-Fähigkeitsaufzählung entfernen
bcm64: Ruft die Basisadresse des eingehenden und ausgehenden PCI-Fensters aus dem Gerätebaum ab
bcm: Farbwechsel auf RGB24 ändern(danke p.kosyh)
bcm: dtb-Dateien für rpi-400 und rpi-cm4 herunterladen
devfs: Sperren korrigieren und undokumentierte Konfigurationssignatur “fsdev:\n” ignorieren
devmouse: Redundante Prüfung entfernen
devpccard, pci: pccard-Unterstützung korrigieren und pci-Erweiterungs-ROMs handhaben
devproc: Erlaube jedem, den Benutzer seiner eigenen Prozesse in “keine” zu ändern.
devsons: entferne # c/pgrpid
devvga: Bildschirmneigung implementieren, Schwenken und Ãœberlagerungen entfernen
Kernel: Portable pcimsienable()/pcimsidisable() hinzufügen, MSI/MSI-X auf pcidisable()/pcireset() deaktivieren
Kernel: Palloc Lock während mmurelease vermeiden()
Kernel: Handle tos und pro Prozess Pcycle Counter in Port /
Kernel: Implementiere das OCEXEC-Flag pro Dateideskriptor, lehne ORCLOSE ab, wenn du/fd,/srv und/shr öffnest
Kernel: Addbroken() statisch machen, irreführendes Proc * -Argument entfernen
Kernel: Entfernen Sie das Proc * -Argument aus der Funktion procsetuser()
Kernel: ucalloc.c-Duplikate entfernen
Kernel: Nicht verwendete Funktion pcinextcap() entfernen
Kernel: Update procsave() Kommentar, wir halten nicht mehr auf-> rlock
Kernel: Verwenden Sie eine 64-Bit-Maske, um eine Compiler-Warnung in port/pci.c zu vermeiden
Kernel: Befreien Sie sich von der physischen Seite Bank-Array und verwenden Sie stattdessen conf.mem[]
kw: benutze ethermii.c von port/(danke stuart)
mtx: PCI-Zugriffsroutinen korrigieren(siehe Änderungssatz 8012: 78891f472fbf)
nusb/cam: nicht videoclose(), wenn das Öffnen fehlgeschlagen ist
nusb/ether: Verbesserung von -t rndis (danke romano)
nusb/kb, nusb/joy: Versuchen Sie nicht, das Protokoll auf Nicht-Boot-Geräten festzulegen
nusb/kb: korrekter Mod4-Scancode(125 → 91, passend zu dem, was kbdfs hat)
nusb/kb: Schaltflächenstatus aktualisieren, wenn das Ereignis tatsächlich empfangen wurde, Tippfehler korrigieren(danke umbraticus)
nusb: Erstelle keine rw iso Endpunkte(von Michael Forney)
nusbrc: delect lenovo kamera
pc, pc64, xen: Interrupt-Behandlungscode neu schreiben
pc, pc64: add * nomtrr = Kernel-Parameter
pc, pc64: Fügen Sie einen minimalen HPET-Treiber hinzu, um die LAPIC- und TSC-Frequenzen zu messen
pc, pc64: ordne dma bounce buffer direkt nach xinit() zu
pc, pc64: Weisen Sie E/A-Port-Speicherplatz für nicht zugewiesene PCI-Balken zu und verschieben Sie ioalloc() nach port/iomap.c
pc, pc64: Bereinigung cpuidentify() und einige Kommentare
pc, pc64: Deaktiviere alle PCI-Geräte für/dev/reboot
pc, pc64: Deaktiviere alle PCI-Geräte in pcicfginit()
pc, pc64: Speicherbereiche mit ungewöhnlichen MTRR-Cache-Attributen ausschließen
pc, pc64: grub multiboot reparieren
pc, pc64: MTRRs ignorieren, wenn MTRRCap.vcnt und MTRRCap.fix Null sind
pc, pc64: Deaktivieren Sie die Deaktivierung von MSI-Interrupts
pc, pc64: idt früh in trapinit0 laden()
pc, pc64: Stellen Sie sicher, dass die Schreibkombination in MTRRs unterstützt wird, bevor Sie sie einstellen
pc, pc64: Verschieben Sie den gesamten fpu-spezifischen Code von main.c nach fpu.c.
pc, pc64: Verschieben Sie den allgemeinen IRQ-Handhabungscode aus trap.c
pc, pc64: neuer MTRR-Code, der AMD TOM2 MSR und feste mtrr-Bereiche unterstützt
pc, pc64: Hinzufügen des Aufrufs von pcireset() zu pcicfginit() rückgängig machen
pc, pc64: Warnung bei fehlenden conf.mem [] -Einträgen in meminit()
pc, pc64: Umgehung aller nicht zwischengespeicherten MTRRs
pc, xen: fpu setup/fork/save/restore handler auf pc/fpu.c verschieben
pc/devarch: benutze m-> cpumhz anstatt es neu zu berechnen
pc/dma, pc/sdide: Verwenden Sie uintptr für die physikalische Adresse anstelle von ulong
pc/l.s: Laden Sie den virtuellen GDT-Zeiger nach dem MMU-Schalter
pc/l.s: Entfernen Sie nicht verwendete m0gdtptr/m0idtptr-Strukturen
pc/pc64: fpc, pc64: ix fehlerhafte mtrr slot wiederverwendung(danke Fulton)
pc64: AMD64 fordert SSE-Unterstützung an, entfernen Sie die Prüfung in fpuinit()
pc64: weise fpsave/fprestore nur einmal in fpuinit() zu
pc64: reservierte Bits in CR0/CR4 für amd64 in mtrr setstate() beibehalten
pc: Anzahl der Conf.mem [] -Einträge von 4 auf 16 erhöhen
pc: Verschiebe den Prototyp ldmxcsr() nach fpu.c.
sdiahci: 64-Bit-PCIWADDR() annehmen
sdiahci: aktiviere pci busmaster vor ahciconfigdrive()(behebe qemu Absturz)
usbehci: 64-Bit-Basisadresse verwenden, resetlck entfernen, scanpci() vereinfachen
usbohci: 64-Bit-Io-Basisadresse verwenden, Interrupts vor dem Zurücksetzen deaktivieren, rresetlck entfernen
usbuhci: resetlk entfernen, scanpci vereinfachen()
vesa: Nicht unterstützte Funktion nicht fehlerhaft machen, Rückgabestatus setzen
xen: Fix für die letzten avx-Änderungen
xen: benutze pc/fpu.c
COMPILER UND DEBUGGER
Säure: Hash-Größe erhöhen(danke jonas.amoson)
5c, 6c, 7c, 8c, kc, qc, vc: Verwenden Sie explizite gmove(…, nn) ​​in cgen() für das Ergebnis von OAS *, OPREINC, OPOSTINC
5l: Verschiebungen um Null korrigieren
cc: Vergleichswarnung mit konstanter LHS korrigieren
cc: Entfernen Sie unnötige 128-Bit-Add-Funktionen
cc: Fügen Sie den Kommentaren zu Flags einige Anmerkungen hinzu
cc: mk clean sollte cc.a $ O löschen
[12kq] l: Unix-kompatiblen Code für cputime() entfernen
BIBLIOTHEKEN
Affe: Entfernen Sie den _SUSV2_SOURCE-Schutz aus inttypes.h
Affe: füge fehlende isnan() und isinf() Makros für 386 hinzu(danke Jonas)
Affe: wende unendliche rekursion in fmod() fix an(danke jxy und ality)
Affe: Implementiere getlogin() erneut, indem du/proc/$ pid/status angibst
Affe: synchronisiere flaot.h makros mit u.h.
Affe: vereinige math.h kopien
Affe: implementiere log2 in libc
Affe: Exponieren Sie fd2path(danke phil9)
Affe: sync arm getfcr.s Implementierung
Affe: fix _startbuf, überprüfe rfork return(danke pixelherodev)
Affe: libap: füge strndup hinzu
lib9p: Verbesserung von reqqueuecreate()
lib9p: open/mnt/factotum/rpc mit OCEXEC-Flag in auth9p()
lib9p: Interner Dateideskriptor mit OCEXEC-Flag in getremotesys() öffnen
libFLAC/mkfile: Version aktualisieren und mit -DNDEBUG erstellen
libaml: add(nop) “signal” op
libaml: IndexField- und BankField-Implementierungen korrigieren(danke Michael Forney)
libauth: Fügen Sie die Funktion procsetuser() hinzu, um die Benutzer-ID des aufrufenden Prozesses zu ändern
libauth: Ändern Sie die Programme, um die neue Funktion procsetuser() zu verwenden
libauth: Öffnen Sie interne Dateideskriptoren mit dem OCEXEC-Flag
libauth: Implementieren Sie procsetuser() erneut, um/proc anstelle von # c/user zu verwenden
libauthsrv: Öffnen Sie interne Dateideskriptoren mit dem OCEXEC-Flag
libbio: füge aux pointer zu bio hinzu
libc/arm: Öffnen Sie die Datei # c/sysstat mit OCEXEC(interner Dateideskriptor).
libc: Implementiere getppid() und lese/proc/$ pid/ppid anstelle von/dev/ppid
libc: Öffnen Sie den internen Dateideskriptor mit dem OCEXEC-Flag
libc: Implementieren Sie getuser() erneut, indem Sie/proc/$ pid/status angeben
libc: Rekurs auf kleinere Hälfte des Arrays
libcomplete: Öffnen Sie den internen Dateideskriptor mit dem OCEXEC-Flag
libdraw: Bezierpts hinzufügen
libdraw: Erzwinge Flushimage() nicht auf Freescreen()
libdraw: enter/eenter: Fix Kleft für Nicht-ASCII-Text
libdraw: enter/eenter: fix ^ W Entfernen des Textes auf der rechten Seite des Häkchens
libdraw: Öffnen Sie den Dateideskriptor mit dem OCEXEC-Flag in readcolmap()
libdraw: Öffnen Sie interne Dateideskriptoren mit dem OCEXEC-Flag
libdraw: Nicht verwendete Fehlerbezeichnung in freescreen() entfernen
libndb: Öffnen Sie interne Dateideskriptoren mit dem OCEXEC-Flag
libndb: Entfernen Sie die Größenbeschränkung für DB-Dateien
libsec: Öffnen Sie interne Dateideskriptoren mit dem OCEXEC-Flag
libstdio: Synchronisiere Bits von vfprintf von Affe
libsunrpc: Umgehung des Arm64-Compiler-Fehlers in sunStringUnpack()
libthread: Reduzieren Sie die StAffelverwendung für ioprocs, öffnen Sie/proc/n/ctl mit dem OCEXEC-Flag
libthread: Reduziert die StAffelverwendung von threadkill *(), open/proc/n/ctl mit dem OCEXEC-Flag
libthread: Nicht verwendete _times() -Funktion entfernen
libthread: vereinfache threadsetname()
libvorbis: 1.3.5 → 1.3.7(behebt eine Reihe von CVE und anderen kleinen Problemen)
libvorbis: fix free() hat einen falschen Zeiger aufgerufen
stdio: Entfernen Sie fehlerhafte Behauptungen in dtoa
strndup: gehe nicht davon aus, dass der Puffer beendet ist
PROGRAMME
9fs: Bell Labs ist sehr tot
B, Bfn: Aufruf mit mehreren Dateien korrigieren, Handbuchseite verbessern
B: Verschmutzen Sie nicht die Umwelt
Töten: Umwelt nicht verschmutzen
töten, töten, pleite: Umwelt nicht verschmutzen, $ user verwenden
Mail: Richtiges Rendern verschachtelter mehrteiliger Nachrichten
Mail: Endlos-Löschschleife korrigieren
Mail: Invertierte Antwort-All-Bedingung behoben
Mail: Nur bei Änderung gepflegte Flaggen löschen(danke deuteron)
Mail: Separates Löschen vom erneuten Verknüpfen von Nachrichten
acme: fix use nach free in warning() call(danke igor)
acme: benutze getuser() in fsinit()
acme: Verwenden Sie anstelle von getuser() eine globale Benutzerzeichenfolgenvariable.
acme: Fixieren Sie den Selbstmord * und * Ressorcen-Leck in ECMD.C (danke igor)
aout2uimage: Fehlende \ n im Verwendungsdruck korrigieren(danke James)
Audio/Flacenc: Fehlerprüfung für fseeko behoben
Audio/Flacenc: Verwendung korrigieren
Audio/Flacenc: Ein Argument in fprintf() wurde verpasst.
Audio/WAVDEC: Option -s hinzufügen
diff: Änderungsmarkierung für -c-Modus korrigieren
dpost Prolog: Update/Radikalex zur Korrektur der quadratischen Verschiebung(danke umbraticus und Ethan)
Gesichter: Option -c hinzufügen, um Gesichter mit Knopfdruck 1 zu entfernen(danke sirjofri)
fax, psfax, vwhois: Verwenden Sie $ user anstelle von/dev/user
Datei: ftyp mp4 * ist auch Video/mp4
Mimetyp: Eintrag für .patch-Erweiterung hinzufügen
aux/cpuid: Blatt 7 dekodieren; Dekodierung von Blatt 13 verlängern
aux/cpuid: korrigiere die letzte neue Zeile auf printbits()
aux/cpuid: Korrigieren Sie die Null-Terminierung nacheinander.
aux/status ^(bar msg): einige kleine Korrekturen(danke umbraticus)
awk: abgeschnittene Eingabe nach fflush korrigieren
cal: Option add -s, um den Starttag der Woche anzugeben
cal: fix -s 7
cal: Verwenden Sie in jedem Fall Sa/Su, vereinfachen Sie auch den Code
cwfs: Interpretation des Startdump-Arguments korrigiert
dc: fix Abstürze mit: operator(danke istvan bak)
dd: Fehler mit ungültigen Größensuffixen, füge ’m' hinzu
fplot: füge abs und hyperbolische Funktionen hinzu
g: Verzeichnisargumente filtern
g: Dateien initialisieren env var
Spiele/GB: fix umgekehrte Audiokanäle
Spiele/gb: Timer-Teiler für Eingangstakt 0 korrigieren
Spiele/gb: verschiedene HDMA-Korrekturen
Spiele/Mix: SLAX- und SRAX-Anweisungen korrigieren(danke nicolagi)
Spiele/Mix: Korrektur der Dekodierung von Schichtanweisungen
Spiele/mix: Implementierung der MOVE-Anweisung korrigiert(danke nicolagi)
Spiele/Snes: BRR-Dekodierung mit den Filtern 2 und 3 korrigieren
Spiele/Snes: DSP-Echo implementieren
Spiele/Snes: Implementieren Sie DSP-Rauschen
Spiele/Snes: Verwenden Sie zum Resampling die 4-Punkt-Einsiedlerinterpolation
Spiele/Snes: Verwenden Sie anstelle ihrer Werte die Enum-Konstanten KON und ENDX
Spiele/glendy: Ihre Komplikation hatte eine Komplikation (god damn it kemal)
hpost: Verwendungstext korrigieren
hpost: unterstütze benutzerdefinierte Header(danke julienxx)
html2ms: 0xFFFD → Runenfehler
ico: Vermeiden Sie mögliche Null-Zeiger-Dereferenzen
ico: Interpretation von 0 Breiten/Höhen korrigieren
imap4d: imap4date sollte Zeit und Zeitzone ignorieren(RFC3501, 6.4.4)
iostats: dup 9p Pipe zu fd 0 und fd 1 für exportfs
ip/cifsd: Fehlender int-Rückgabetyp für vpack() behoben(danke pr)
ip/tftpd: füge -n Namespace-Dateiflag hinzu(danke sam-d)
ip/tftpd: Verwenden Sie procsetuser(), anstatt # c/user zu schreiben
ip/tinc: Fix Reportedge()
jpg: behandle EOF als EOI-Marker
mothra: “d”: Lite-Version verwenden, Umleitung deaktivieren
mothra: füge den Befehl “d” hinzu, um im Internet nach einem Text zu suchen(mit duckduckgo)
mothra: füge nach div keinen Zeilenumbruch ein(danke phil9)
mothra: verknüpfe Text beginnend mit gemini: // und ftp: //
mothra: URLs mit mittlerem Klick auflösen. hilft beim Schnüffeln von relativen URLs
mothra: Optimieren Sie die Eingabesteuerungslogik für eine einfachere Textbearbeitung
Marschall: Debug-Junk entfernen.
mklib, upas/common: bereinige libcommon richtig(danke mikan)
ndb/dns: behandle dnskey RRs(danke launisch)
ndb/dns: Implementieren Sie den Berechtigungsdatensatztyp der RFC6844-Zertifizierungsstelle
news: mach -a und -n miteinander aus(danke lyndon)
Molch: fn f entfernen, durch walk ersetzen
pc: Exit-Status abhängig von Fehlern einstellen
pc: Behandle EOF anmutig und erlaube so eine einfachere Verwendung in der Befehlssprache sam
Lot: Fehler beim Klicken auf falsche Klickattribute korrigieren(danke umbraticus)
Klempner: Lecken Sie den srvfd-Dateideskriptor nicht in Unterprozesse
Klempner: Öffnen Sie Regeldateien als OCEXEC, um zu vermeiden, dass sie an Unterbefehle weitergegeben werden
Beweis: Verwechseln Sie nicht “”(1)(danke Stuart Morrow)
ptrap: fehlgeschlagen, wenn ohne Argumente aufgerufen wird
ptrap: Filterung nach Lotattributen implementieren
qr: Beenden Sie den Exit-Status
ramfs: truncfile() für nicht ein Vielfaches der Erweiterungsgröße(64k) korrigieren
rc: Zeilennummern bei Fehler anzeigen
rio: Erlaube Fenster, die so klein wie eine Textzeile sind und dennoch gescrollt werden können
rio: Vermeiden Sie das Neuzeichnen von Fenstertext beim Ändern der Größe für Programme, die libdraw verwenden
rio: formatiere pid’s als ulongs
rio: goodrect: kläre die minimale Höhe und verwende tatsächlich den kleinsten vernünftigen Wert
rio: Fensterfokusänderungen deterministisch vornehmen, Wind bereinigen.c
rio: open/dev/snarf mit OCEXEC-Flag beim Schreiben
rio: Stellen Sie den Windows-Inhalt unter/dev/mouse close ordnungsgemäß wieder her
rio: schreibe eine bessere Funktion von portion() um
rio: vereinfache filsysinit() mit getuser() und formatiere pids als ulongs
rio: benutze libdraws badrect() um einige extreme Fälle in goodrect() auszuschließen
sam/{address.c, sam.h}: STRSIZE auf 512 MB erhöhen(danke, Ori_B)
screenlock: benutze initdisplay(2), öffne das fenster(danke stuart morrow)
Sekunden: Entfernen Sie Junk aus der Verwendung
sort: Speicherleck beheben(danke Igor Boehm)
src: arbeite auch an awk-skripten, siehe “src tal”(danke phil9)
start, stop: Vermeiden Sie eine Nullliste in der Verkettung ohne Argumente. Verwenden Sie $ user
Statistik: Fragen Sie Batterie und Temperatur nicht so oft ab, wenn Sie acpi verwenden
syscall: verlass dich nicht auf. auf dem Weg sein(danke Silas)
Test: Ausdruck Parser korrigieren
text2post: Überprüfen Sie den Schriftindex auf einen Bereich außerhalb des Bereichs
Tweak: Unterstützung Showdata Plumb Action(danke Sirjofri)
upas/*: bereinige mkfiles(danke amavect)
upas/*: mkfile Probleme behoben(danke amavect)
upas/common: Bibliothek auf ‘mk clean’ löschen
upas/fs/mbox.c: Behebung eines kosmetischen Tippfehlers
upas/fs: vertauschtes Argument, toter Code behoben
upas/marshal: füge -S saveto hinzu, um ausgehende E-Mails zu speichern, behebe -F
upas/marshal: nicht vorhandenen Speicherordner korrekt behandeln(danke sirjofri)
upas/marshal: benutze login anstelle von user(danke sirjofri)
upas/ml: Berühren Sie das Bildmaterial
upas/runq: bring -a zurück
upas/runq: Tippfehler behoben
upas/runq: Unterstützt die parallele Warteschlangenverarbeitung, drop -a
upas/runq: Code bereinigen, Fehlerbehandlung beheben.
upas/send: füge \ n zum Fehler in verweigern() hinzu(danke josuah)
upas/vf: MIME-Grenze von temporären Anhangsdateien ausschließen
upas/vf: Installiere den Formatbezeichner% Ï„
upas/vf: Debugging-Druckanweisungen entfernen
upas: mk nuke reparieren
upas: mache ‘all’ zum Standardziel
vmx: Allokationslecks beheben
vmx: Option -D hinzufügen, um Debug-Meldungen zu aktivieren. Verwenden Sie vmdebug für nicht schwerwiegende “Fehler”.
vmx: Fügen Sie das Flag -v | -w hinzu, um das Verhalten beim Erstellen von Fenstern zu steuern
vmx: Füge fmt-Überprüfung hinzu, behebe fmt-Fehler, entferne Duplikate für vmdebug
vmx: bereinige mksegment, memset nur wenn segment vorhanden ist(devsegment löscht neue)
vmx: Maskiert die Bits 0: 2 und 24:30 von pci CONFIG_ADDRESS beim Lesen
vmx: nanosec(): Nicht unterbrechbare temporäre Fehler beheben, fasthz nur einmal nach xstart zuweisen
vmx: Reduzieren Sie die CPU-Last, indem Sie die NOP-Schleife entfernen
vnc: Ich mag dein Gesicht nicht.
vncv: Wenn Sie frühere Änderungen rückgängig machen, ist eine weitere Überarbeitung erforderlich
vncv: ordne Kaltgr NICHT Meta zu, füge Mod4(Super) als Extra-Schlüssel, der stattdessen verwendet werden soll
vncv: Wählen Sie einen von uns unterstützten Authentifizierungstyp aus
vt: Verbessern Sie das Chording-Verhalten
vt: rfork Umgebungsvariablen(danke fshahriar)
Webcookies: Entfernen Sie den umständlichen benutzerdefinierten Datums-Parser
WHOIS: Unterdrücken Sie fehende Deteifehler (danke kivik)
winwatch: immer reflow wenn möglich(danke telephil9)
DOKUMENTATION
acme(1): Verweise auf entsprechende Manpages hinzufügen
acmemail(1): Nail => Mail
Audio(1): Behebung eines kleinen Tippfehlers.
Audio(1): Es ist jetzt 2021
CPU(1): Siehe oexportfs(4)
ctime(2): füge tmdate(2) zu “see also” hinzu
dd(1): Manpage aktualisieren, um sie an das Programm anzupassen
mothra(1): eu-vorschriften verlangen, dass wir offenlegen, dass wir suchanfragen an duckduckgo senden.
9boot(8): Aktualisieren Sie das Handbuch, um Änderungen in der Suchreihenfolge des Efi Loader widerzuspiegeln
9pfid(2): document struct Qid(danke sirjofri)
fplot(1): benutze abs()
import(4): siehe oexportfs(4)
vmx(3): Behebung eines kleinen Tippfehlers
nusb(4): Tippfehler korrigieren
Marschall(1): Fixbeispiel: upas/mail -> mail(danke fulton)
Maus(3): Dokument “scrollswap” ctl Nachricht, Stil ein wenig korrigieren(danke umbraticus)
mp(2): korrekte Dokumentation der Fehlerbehandlung(danke LordCreepity)
nan(2): Dokument isInf(x, 0) stimmt mit + ∞ und -∞ überein
newuser(8): Verweis auf falschen Dateiserver-Konsolenbefehl korrigiert
plan9.ini(8): document * nohpet = option
plan9.ini(8): document * nomtrr = und ordne die Tabelle
pop3(1): Schreiboptionen konsistent
rio(4): listet die Fensterzustände in der richtigen Reihenfolge auf(danke umbracticus)
Sega(1): Schlüssel reparieren(danke Bigato)
tmdate(2): korrektes Beispiel in der Manpage
tmdate(2): Fehler beim(p) ass
tmdate(2): Lüge entfernen
troff2png(1): Manpage hinzufügen
upasfs(4): kleine Tippfehler beheben(danke igor)
vmx(1): vmxgdb standardmäßig erstellen, ebenfalls bereinigen
vt(1): optionales Befehlsargument dokumentieren(danke sl)
zerotrunc(8): Manpage hinzufügen
ANDERE
legal: mit neuer lizenz: mit
/lib/keyboard: Anführungszeichen unter(danke sirjofri)
/lib/keyboard: füge Finger und weitere Pfeile hinzu(danke umbraticus)
Schriftart/Terminus: Sie können keine Schriftart ausführen, dumm
Vermögen: SATAN
Vermögen: Das hängt davon ab, wie Sie native definieren. - Andre Garzia
kbmap: Unterstützung für neo2 kbmak hinzufügen(danke jstsmthrgk)
kbmap: füge einen fehlenden Schlüssel zur türkischen Keymap hinzu(danke kemal)
kbmap: türkische Keymap hinzufügen(danke Kemal)
kbmap: kroatische kbmap hinzufügen(danke skerbergs)
kbmap: lettische keymap hinzufügen(danke freddy)
kbmap: Vermeiden Sie die Division durch Null, wenn das Fenster zu klein wird
kbmap: Finnische kbmap aktualisieren: ¤ auf Shift + 4 korrigieren und weitere AltGr-Varianten hinzufügen
Klempner/Basic: Griff Tga, WAV, Au, Mid und Mus
Profil: Erstellen Sie kein $ wsys, wenn es nicht vorhanden ist
theo: falsch.
9FRONT “EMAILSCHADEN” RELEASED (2020/10/19)
DOWNLOAD
Multiple installation media are provided for PC and Raspberry Pi. For PC, burn an .iso file to CD, or dd it directly to USB media. For Raspberry Pi, 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.
http://9front.org/iso/9front-8013.d9e940a768d1.386.iso.gz.torrent
http://9front.org/iso/9front-8013.d9e940a768d1.amd64.iso.gz.torrent
http://9front.org/iso/9front-8013.d9e940a768d1.pi.img.gz.torrent
http://9front.org/iso/9front-8013.d9e940a768d1.pi3.img.gz.torrent
cpu% sha1sum -2 256 9front-8013*.gz
e8a224a8220e472593dd17a2479ba5a9497f6790cac23de2522400930a4dd626 9front-8013.d9e940a768d1.386.iso.gz
7771be88148560a8e59283a93c98b9ecc37172e7a2acff356f12e64aac9e5c77 9front-8013.d9e940a768d1.amd64.iso.gz
a63a87272258b17fdd24f2807252134aee311af243ec8274f715f8dcf1b86f1f 9front-8013.d9e940a768d1.pi.img.gz
5b5baa5c3fd0b69a71aaa7bca867508210fac25d8ad17d76b97d8aece1c9f3dd 9front-8013.d9e940a768d1.pi3.img.gz
MIRRORS
http://lux.felloff.net/usr/cinap_lenrek/9front/
MERCURIAL REPOSITORY
https://code.9front.org/hg/plan9front
DASH 1 MANUAL
http://fqa.9front.org/dash1.emailschaden.pdf
dash 1 and man pages in print: http://9front.org/propaganda/books
THANKS
presotto
NEW IN THIS RELEASE
New date/time formaring/parsing API in libc
Kernel updates for Raspberry PI4 8GB model
Intel wireless driver now supports 8000 and 9000 family cards
New Thinkpads now fully supported: T480, T495
Big kernel PCI code overhaul
KERNEL AND DRIVERS
archacpi: use 64-bit uvlong for physical addresses
audioac97: use 64-bit physical addresses
audiohda: use 64-bit physical addresses, check pci membar types
audiohda: use PCIWADDR() instead of PADDR(), handle 64-bit dma addresses
audiosb16: cleanup audioprobe(), cast ISAConf.port to ulong
aux/acpi: connect EC region handler, fixes battery status on eeepc 1000px (thanks Peter Kosyh)
aux/acpi: forgot to commit -p option
aux/acpi: write a man page, fix usage, call threadexits
aux/vga: eepc igfx support (thanks p.kosyh)
aux/vga: use 64-bit physical addresses for pci membar
bcm64: bring pci code in line with the pc/pc64
bcm64: fix usb xhci controller on pi4 8GB variant (thanks richard miller)
bcm64: handle 8GB of physical memory for raspberry pi4
bcm64: increase maximum segment size to 8GB
bcm64: use 64-bit uvlong physical address in vmap()
bcm64: use uvlong for ISAConf.port
bootrc: allow kbmap to be set via plan9.ini (thanks Aaron Bieber)
devether: print Ether.port as 64-bit uvlong
devip: fix parseipmask() prototype in ip.h
devip: implement ipv6 support in ipmux packet filter
devip: pick less surprising interface address in header for incoming UDP packets
devlml: use 64-bit physical addresses
devmnt: print chanpath for unexpected reply tag
devpccard: use 64-bit physical addresses
devpnp, devether, devusb: cast ISAConf.port to uvlong (for 32-bit implementations)
devpnp: print pci membar as 64-bit uvlong
devusb: keep isochronous ep->hz consistent with maxpkt, ntds and pollival
devusb: print Hci.port as 64-bit uvlong
devvga: use 64-bit physical addresses for framebuffer
etherbcm: handle 64-bit host addresses, use PCIWADDR() instead of PADDR()
etheriwl: add Wireless 8260 card
etheriwl: add for Intel Wireless-AC 9260
etheriwl: add support for Intel Wireless AC 8265
etheriwl: delay before crystal calibration
etheriwl: don’t break controller on command flush timeout
etheriwl: remove stations after disabling binding quotas, drain all queues in rxoff7000()
kbdfs: add a compose sequence to type ⑨
kbdfs: allow >16 bit runes in /lib/keyboard
kernel: don’t strip binaries in bootfs.paq
kernel: fix Abind cyclic reference and mounthead leaks (thanks Alex Musolino)
kernel: get rid of unused ucallocb
kernel: make segments non-executable when icache is not maintained
kernel: massive pci code rewrite
kernel: remove unused segment argument in freepte()
kernel: segflush() needs to flush tlb of other processes
nusb/lib: use fmtprint for the entire dump to be printed out
nusb/serial: add ids for FT230X (thanks mischief)
pc, pc64: implement 64-bit pci membar support
pc, pc64: remove mystery “type” bits in pcicfgrw*raw() (fixes qemu, thanks mischief)
pc, pc64: use 64-bit physical addresses for ISAConf.port
pc, pc64: use 64-bit physical addresses for vmap() and upaalloc()
pc, xen: make PAT support optional (for xen)
pc64: disable interrupts in mmuwalk() for checkmmu()
pc/ether*: use 64-bit physical addresses and check pci membar types and sizes
pc/pcmciamodem: cast i/o port to ulong
pc/pmmc: check pci membar type
pc/vga*: use 64-bit physical addresses and check pci membar types and sizes
pc/wavelan: print Ether.port as 64-bit value
sd53c8xx: use 64-bit physical addresses
sdiahci: use 64-bit physical addresses
sdiahci: accept AHCI controllers from ASMedia vendor id (thanks mischief)
sdmv50xx: use 64-bit physical addresses and check pci membar type
sdnvme: handle machines with more cpu’s than submit queues (thanks mischief)
sdnvme: make sure pci membar type is memory
sdnvme: use PCIWADDR() instead of PADDR()
sdodin: use 64-bit physical addresses and check pci membar type
uartaxp: use 64-bit physical addresses and check pci membar types
usbehcipc: use 64-bit physical addresses and check pci membar type
usbuhci: make sure pci membar type is i/o
usbxhci: implement isochronous in transfers (for webcam, audio recording)
usbxhci: use 64-bit physical addresses
wifi: add packet timestamping support
COMPILERS AND DEBUGGERS
7c: fix wrong type on OASxxx operations
cc: promote integer constants according to c99 spec.
cpp: fix mutually recursive macros
LIBRARIES
ape/ctype.h: add isblank, fix functions (thanks staalmannen)
ape/libdraw: add missing eenter (thanks phil9)
ape/limits.h: fix typo in (U)LLONG_MAX
ape: add missing rerrstr.c
ape: make libplumb available under ape.
ape: simplify mkfile (thanks amavect)
ape: stdio.h: correct return type of putc
ape: stdio: fix warnings, make code more standard
libaml: fix fault when the second operand of comparison cannot be converted
libc: introduce new time and date apis.
libc: ignore ‘?’ in date format strings
libc: make yday 0-based, as docs suggest
libc: tmparse: should ignore leading whitespace
libc: tmparse: put in local timezone hack
libc: tm2sec: clear new fields in tm
libndb: order subnets by prefix length for ndbipinfo() lookups
libplumb: add missing mkfile
libttf: check directory() result
libttf: fix cmap subtable offset type and rank UCS-4 higher (more codepoints). fixes runes > 0xffff
PROGRAMS
abaco: add fonts.h to HFILES in mkfile (thanks eekee)
acme/win: add trailing space to window tag
acme/win: fix window recreation command
acme: add missing logf.c
acme: implement ‘scratch’ ctl command (thanks Drew DeVault)
acme: implement position-dependent scroll-wheel scrolling
acme: import changes from plan9port (thanks jxy)
acme: import event log from plan9port (thanks fshahriar)
audio/flacdec: add -s SECONDS option to seek before decoding
audio/mp3dec: add -s SECONDS option
audio/mp3dec: mad timer duration is all wrong, use samples instead
audio/oggdec: add -s SECONDS option to seek before decoding
audio/oggdec: allow -s 0
audio/oggdec: give it enough chance to seek from the start, where first seek might be still too close to the beginning of the file
aux/cpuid: flush instruction cache of after patching trampoline
aux/getflags: fix named rune arguments.
aux/ms2, aux/na: fix warnings
aux/trampoline: Implement inactivity timeout (-t option)
cwfs: update mtime and qid.vers for directory on rename
date: use new libc date apis.
dc: increase exponent limit (thanks unboe, lyndon)
deroff: fix out-of-bounds access if runes above 0X80 are inside EQ clauses (thanks mmnmnnmnmm, via plan9port)
diff: support unified diff via -u
faces: remove log support
g: add ‘.hs’ and ‘mkfile’ to the walk. (thanks joe9)
games/4s: increase thread size (thanks majiru)
games/nes: workaround for truncated chr
hjfs: update mtime and qid.vers for directory on rename
htmlroff: fix out of bounds access (thanks Rei-sen, via plan9port)
imap4d: fix missing return in %δ format of Dfmt()
imap4d: fix mkfile to have the correct default target
imap4d: get rid of unixdate/unixfrom handling
imap4d: reject invalid month in date2tm()
imap4d: respect errors from read(), remove debug prints
ip/6in4: request ipv4 packets only in ipmux filter
ip/cifsd: add FIND_FIRST2 SMB_FIND_FILE_FULL_DIRECTORY_INFO info level
ip/ftpd: handle “allo” command by treating it as a no-op
ip/httpd: fix ‘mk nuke’
ip/tinc: run script sub-shell in its own environment
ip/torrent: fix size check in 64-bit “v” unpack (thanks pr)
ip/torrent: try harder allocating ports
ndb/dns: allow multiple txt, nullrr, cert, key and sig records (thanks kvik)
ndb/dns: mark ns record authoritative when in our area for delegation
ndb/dnsdebug: add -c flag to debug caching dns server behaviour
nedmail: don’t try to shoot down subcommand on interrupt
png: remove bogus chanlen warning
pre-lib9p servers: fix incorrect Tversion handling
ptrap: fix /env/status always being set on main process exit
qball: remove unused #include <stdio.h>
ramfs: make Elocked[] more consistent (thanks fazlul)
rc-httpd: fix invalid test(1) invocation in dir-index
rc: avoid forking for final command that has variable assignments (to get $apid right)
rc: avoid stat calls for directory globbing
replica: fix mkfile script installation (thanks Amavect)
rio: move the code for ‘send’ into a function
seconds: use new libc date api
seconds: tolerate trailing whitespace in dates
snoopy: add ipmux pseudo protocol
sshfs: update usage text to match man page
sshnet: prevent ssh process from keeping the mount alive
syscall: utility overhaul
syscall: don’t append ‘\n’ to the output
syscall: fix build problem caused by stale tab.h
upas/fs: extract proper date from unix header
upas/fs: fix handing of multi-line header fields (thanks theinicke)
upas/fs: fix memory leak in ref822()
upas/fs: fix truncation of plumb date
upas/fs: fix wrong nparts field index (changed in previous commit)
upas/fs: move unixheader handling to parseheaders()
upas/fs: port date parsing to libc apis
upas/fs: put date822 into the index, fix from and replyto handling
upas/fs: remove now unused Mtrunc mimeflags constant
upas/fs: remove unused function date822tounix
upas/fs: use memchr() instead of strchr() in hdrlen()
upas/fs: wait until the index becomes unlocked
upas/fs: make imap debug logging less noisy
upas/marshal: make attachment failure fatal
upas: appendfolder(): don’t be picky about the timezone of ctime()
upas: appendfolder(): skip the address from unix header before date
upas: convert to tmdate, change timezone format
upas: fix appendfolder timestamps (thanks umbraticus)
window: fix error exit with the -m flag
vmx: add Kmod4 key
vmx: does not do well with certain fb widths, so restrict it
vmx: set xstart to either nsec or cycles depending on what is available
vmx: use actual system kbmap
vmx: use _tos->cyclefreq (thanks cinap)
vmx: use cycles() instead of nsec() when possible
vncv: implement rfb 3.8 protocol (thanks Iruatã)
DOCUMENTATION
9p(2): fix typo
acme(1): document log file in manpage
audio(1): add new -s SECONDS option
ctime(2), tmdate(2): document ctime/tmparse incompatibility
chdir(2): add reference to getwd(2) in SEE ALSO section
cifsd(8): fix typo (thanks senthil)
faces(1): remove bespoke date parser
getwd(2): add reference to chdir(2) in SEE ALSO section
graphics(2): fix typo
ip(3): fix typo in manpage (thanks jstsmthrgk)
mk9660(8): fix reference to proto file format
tmdate(2): document tz field
tmdate(2): fix missing arg, fix formatting (thanks joe9)
tmdate(2): fix examples, stale references (thanks deuteron)
tmdate(2): fix mistakes in prototype (thanks moody)
tmdate(2): fix name of tm struct
tmdate(2): fix typo (thanks mveety)
torrent(1): update url in examples section
walk(1): clarify how -n argument works (thanks umbraticus)
walk(1): improve wording, formatting
walk(1): fix typos
OTHER
/lib/rob, /lib/rsc, /lib/theo: So it sounds like everyone is in favor of the entire generics proposal and all the semantics, and all we have left to hammer out is the bracket characters? Do I have that right?
bullshit: decentralized ActivityPub
9FRONT “PLAN9-HATERS” RELEASED (2020/05/28)
DOWNLOAD
Multiple installation media are provided for PC and Raspberry Pi. For PC, burn an .iso file to CD, or dd it directly to USB media. For Raspberry Pi, 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.
http://9front.org/iso/9front-7781.38dcaeaa222c.386.iso.gz
http://9front.org/iso/9front-7781.38dcaeaa222c.386.iso.gz.torrent
http://9front.org/iso/9front-7781.38dcaeaa222c.amd64.iso.gz
http://9front.org/iso/9front-7781.38dcaeaa222c.amd64.iso.gz.torrent
http://9front.org/iso/9front-7781.38dcaeaa222c.pi.img.gz
http://9front.org/iso/9front-7781.38dcaeaa222c.pi.img.gz.torrent
http://9front.org/iso/9front-7781.38dcaeaa222c.pi3.img.gz
http://9front.org/iso/9front-7781.38dcaeaa222c.pi3.img.gz.torrent
cpu% sha1sum 9front-7781*.gz
3c20a32558536f751673215d7f543f8e9b1946ed 9front-7781.38dcaeaa222c.386.iso.gz
e58a3f7d67e3937593ae0bf8b8c0dc7ed47c7535 9front-7781.38dcaeaa222c.amd64.iso.gz
038a7c343dcbe687b4aec4e7ad84daea9f304b8d 9front-7781.38dcaeaa222c.pi.img.gz
eed089e5be64a34e668cc4cd376b7c96524d035a 9front-7781.38dcaeaa222c.pi3.img.gz
MIRRORS
http://felloff.net/usr/cinap_lenrek/9front.torrent
MERCURIAL REPOSITORY
https://code.9front.org/hg/plan9front
DASH 1 MANUAL
http://fqa.9front.org/dash1.plan9haters.pdf
dash 1 and man pages in print: http://9front.org/propaganda/books
THANKS
qwx
NEW
*.386.iso 386 pc (more drivers)
*.amd64.iso amd64 pc (less drivers)
*.pi.img arm paspberry pi 1, 2 and 3
*.pi3.img arm64 raspberry pi 3 and 4
KERNEL AND DRIVERS
9bootpxe: continues the war against random DHCPv6 DUIDs
audiohda: add pci vid/did for AMD Raven HD Audio Controller (T495)
aux/acpi, aux/apm: remove nopipe -i flag
bcm: change ARGB32 to XRGB32 for framebuffer to avoid slow drawing
bcm: fix software cursor avoidance for loadimage() case (thanks bitmapper)
bcm: use extended small pages so XN bit can work
bcm, bcm64: dancing to the drum of the linux clowns for device tree memory size detection (thanks kenji)
bcm64: fix kernels cmpswap() function
bootrc: fix wrong redirections after &
bootrc: suppress error from grep if ethernet ifstats file is not found
bootrc: fix comment typo (thanks Robert Ransom)
bootrc: for wireless netbooting, set the WPA/WPA2 preshard key with wpapsk=password boot parameter
cycv: a cyclone v kernel: fpga support, fix CONFADDR NEW
cycv: add cycv kernel
cycv: support for registers
devcons: fix permissions for reboot and sysstat
devcons: fix write length of writebintime() (thanks BurnZeZ)
devdraw: fix topnwindows() panic when images are not windows (thanks aiju)
devip: fix ifc recursive rlock() deadlock
devip: fix packet loss when interface is wlocked
devip: use the routing table for local source ip address selection
devproc: cleanup procwrite size checks
devproc: don’t allow /proc/$pid/ctl to be opens for reading
devproc: fix syscalltrace read for ratrace
devproc: make sure writewatchpt() doesnt overflow the watchpoint array
devproc: return process id when reading /proc/n/ctl file
devshr: unmount service on #σc/share/mount removal
devswap: dont assume Proc* structures returned from proctab() are continuous
ether8003: use physical addresses for ISAConfig ether->mem
ether82543gc, ether82557, ethervirtio: do kproc() call ouside of spinlock
ether82563: fix multicast for i210
ether8390: remove unused variables
ethercycv: add cycv ethernet driver
ethercycv: dont spin on MDIO
kernel: add missing FPillegal definition for kw and omap kernels
kernel: add portable memory map code (port/memmap.c)
kernel: avoid selecting the boot process in killbig()
kernel: avoid useless mmu flushes, implement better wait condition for procflushmmu()
kernel: cleanup makefile for $CONF.$O target
kernel: cleanup the software mouse cursor mess
kernel: fix checkpages() and segflush() on SG_PHYSICAL type segments
kernel: fix multiple devproc bugs and pid reuse issues
kernel: implement portable userinit() and simplify process creation
kernel: improve diagnostics by reversing the roles of Proc.parentpid and Proc.parent
kernel: improve page reclaimation strategy and locking
kernel: make sure we wont run into the tos when copying exec() arguments
kernel: remove relics of CPU ‘load balancing’ policy in scheduler (thanks Robert Ransom)
kernel: remove scheddump() comment for delay() in */fns.h
kernel: remove unused mem2bl() prototype
kernel: remove unused macro from chan.c
kernel: simplify exec()
pc, pc64: clear debug watchpoint registers on exec and exit
pc, pc64: do page attribute table (PAT) init early in cpuidentify()
pc, pc64: fix cputemp decimal handling in amd10temprd (thanks Robert Ransom)
pc, pc64: fix wrong mtrr physmask() for machines without extended address size msr
pc, pc64: ignore the 64-bit bar flag when reserving membar
pc, pc64: add new memory map code
pc, pc64: remove “got unassigned irq” prints
pc, pc64: use softscreen double buffering for *bootscreen= framebuffer
pc: fix ldt memory leak in procsetup()
pc: fix mp boot regression due mistake in mkfile
pc: replace duplicated and broken mmu flush code in vunmap()
pc: zero rampage() memory (thanks LordCreepity)
pc64: adapt vgaradeon driver to 64-bit (thanks Robert Ransom)
pc64: enable uartpci (thanks taw9 for testing)
pc64: remove rampage() nil check
ppc: remove old duplicate of devtls.c
mtx, ppc: use proctab() to index into process table
sd53c8xx: fix the driver for amd64, fix alignment/padding issues, fix freechain handling
sdiahci, sdodin: avoid calling kproc() while holding ilock()
sdiahci: force Hudson SATA Controller to AHCI mode
sdiahci: implement reset timeout for ahciencreset(), make blink() never block, fix map[] access in ledkproc()
usbehci: avoid kproc() while holding poll lock
usbehci: release ctlr ilock before calling pollcheck()
usbxhci: fix wrong control endpoint 0 output device context address
vgai81x: remove unused mach0 variable
xen: fix rebootcode linkage
nusb/audio: set frequency only when supported
nusb/kb: add quirks for Elecom HUGE trackball
nusb/usbd: cleanup processes on unmount
nusb/usbd: fix /env/usbbusy bug
nusb/usbd: fix portreset error handling
COMPILERS AND DEBUGGERS
ape/cc: stop spamming arguments that are only needed once
cc, ?[acl]: fix gethunk() and move common memory allocator code to cc/compat
cc, ?a, ?l: change thunk type to uintptr
cc, ?l: fix gethunk() to actually grow allocation
cc: dont export gethunk(), hunk, nhunk and thunk
cc: get rid of hunk pointer fiddling and just use alloc()
cc: get rid of sprint() and temporary buffer for type conversion fuction
cc: remove mysbrk(), exponentially increase gethunk() allocation delta
cc: simplify macexpand() and off-by-one error
cc: fix ccom idempotency
cc: fix special case for null pointer constants in cond expressions
cpp: Improve the posix preprocessor.
cpp: Make priority array max size explicit.
cpp: copy all the tokens from the tokenrows with a paste.
cpp: dont overflow the stack
cpp: evaluate #if expressions using vlong
cpp: fix operator associativity
cpp: missing headers rate a FATAL.
6c: conserve registers for floating point operations
6c: remove mystery sys.c file
7l, ql: dont assume . is in the path for running mkcname (thanks sam-d)
7l: handle dupok flag in TEXT/GLOBL data
?a, ?c: fix macro debug prints
?a, cc: fix buffer overflows in built-in preprocessor (macbody)
?a: catch symb[NSYMB] buffer overflow in lexer, cleanup, assume thechar is a rune
?c: fix Bconv() misusage of strncat()
?c: get rid of sprint(), strcpy() and strcat()/strncat(), cleanup
?l: remove direct hunk manipulation from linkers, just call malloc()
[257]l: cleanup fmt routines, replace sprint()
qa: remove ALLOC() and ALLOCN() macros
vl: remove unused mysbrk() prototype
yacc: normalize error messages, stop writing to closed fd.
yacc: fix crash with absolute paths
yacc: stop fiddling with path construction.
LIBRARIES
ape: #pragma ref no longer exists
ape: Add stdbool.h to ape
ape: Fix scanf scans of more than one character in %[]
ape: add intmax_t/uintmax_t as required by c99 7.18.1.5
ape: add missing conversion flags for scanf
ape: add va_copy macro, conforming to c99 7.15.1.2
ape: bring stdint.h closer to spec
ape: fix alignment in malloc()
ape: fix name clash, have to use _SLEEP syscall instead of ape sleep in plan9 code (thanks jamos)
ape: fix scanf ‘%[]’ specifiers and ‘%n’ (thanks phil9)
ape: remove C99_SPRINTF_EXTENSION define.
ape: turn ptrdiff_t into a 64 bit type
ape: use #error when missing define
lib9p: fix re-use of root Qid when using createfile(); remove unused dirqidgen
lib9p: fix typo
lib9p: get rid of Srv.nopipe and Srv.leavefdsopen hacks
lib9p: implement automatic remove-on-close cleanup in postsharesrv(), remove postfd() and sharefd() functions
lib9p: reject reads on closed fids and writes on directories
lib9p: zero out per connection state in Srv template for listensrv()
libFLAC: 1.3.1 -> 1.3.3
libaml: implement ToDecimalString and ToHexString operations
libc: always zero initialize Tm structure for tm2sec()
libc/arm64: work around linker bug for cas()
libdraw: fix mount() error handling in newwindow()
libmemdraw: remove inexistent build targets
libsec/base58enc: null-terminate the result
libsec: move AES XTS function prototypes to AES definition section in the header file
libsec: remove hash pickle functions, document ripemd160, cleanup sechash(2) manpage
PROGRAMS
9fs: replace dead plan9.bell-labs.com with 9p.io server
“”: output previous action to stderr
acme, sam: handle >1GB files correctly
acme/Mail: show and update flags
acme/win: exit winfs once acme shuts down the window
acme/win: pass on flags to winfs (fix undocumented -e flag)
acme: Apply each -/+ only once (#156)
acme: Apply http://www.9paste.net/qrstuv/patch/acme-movetodelmesg/
acme: Reset click count on mouse motion.
acme: Restore call to movetodel() in colclose
acme: add missed error checks
acme: avoid division by zero when resizing col (#189)
acme: fix double free
acme: fix off by one in colclose(), make dellist() code consistent
acme: fix some memory leaks
acme: fix typo: mouse->xy, not w->mc.xy
acme: split win into winfs and rc script, get rid of lib9p leavefdsopen hack
acme: triple click selection
auth/disable, auth/enable, auth/status: add usage messages
aux/aout2uimage: Add a.out to uImage converter NEW
aux/getflags: improve flagfmt parser
aux/getflags: remove rogue debug print
aux/getflags: support named flags
aux/kbdfs: fix kbmapread() not accounting for reads smaller than the size of the line
aux/kbdfs: Changes to allow support for neo2 keyboard layout
aux/realemu: fix exit code
aux/realemu: run cpuproc in same fd group as fileserver
aux/timesync: open /proc/n/ctl with OWRITE, not ORDWR
awk: fix race condition with sub-mk in mkfile
awk: make empty FS unicodely-correct.
backup: Set execution bits in backup scripts
date: make ISO 8601 time output compatible to RFC3339
doctype: fix -T option
dossrv, 9660srv, hjfs: stop READING standard OUTPUT with -s flag
dossrv: fix falloc() for >31 bit sector numbers (thanks sl)
dossrv: output iotrack error message to stderr
dtracy: show line numbers in errors
file: add (very) basic support for detecting mpeg4 formats
file: try ismp4() before ismp3()
file: fix filetype detecton by suffix so that multiple dots dont confuse it. (thanks kvik)
g: walk arguments
games/playlistfs: open /proc/n/ctl OWRITE, not ORDWR
games/turtle: do exit instead of crash in redraw() when there where no lines drawn
games/linden: NEW
games/turtle: NEW
games/v8e: NEW
grep: error if sbrk fails
grep: fix handling of -b flag
hgfs: fix loadrevinfo() breakage on long lines using libbio (thanks deuterion)
hgfs: fix loadrevinfo() for empty log bug
hoc: don’t nest calls to follow() when lexing ++/+= and –/-= (#287)
ip/cifsd: implement SMB_SET_FILE_UNIX_BASIC for wstat
ip/cifsd: implement primitive per-share unix id mapping for wstat()
ip/dhcp6d: work around non-ethernet based client duid
ip/dhcpd: prevent client from increasing max reply size beyond the reply buffer capacity
ip/ipconfig: ignore default routes targeting ourselfs
ip/ipconfig: keep on sending router solicitation after initial RA
ip/ipconfig: resolve ipgw to an ip address as neccesary (thanks k0ga)
ip/tinc: accept udp connection from any udp source port
mothra: add Plumb menu item, and update man page. sl’s original changes sanity-checked by Ori_B.
mothra: (facelift) flat ui is in.
mothra: fix a few errors in previous patch
mothra: make user interface monochrome
mothra: remove extraneous lines and decoration (fake 3d). patch extracted from sl’s forked mess by Ori_B.
mothra: restore original fonts. dejavusans was sl’s change, sl’s fault. it never looked right outside of drawterm on osx (mea culpa). this is easy to change for anyone who prefers something else, but it’s difficult to imagine native users preferring our very fuzzy dejavusans to anything else.
ndb/dns: handle empty $DNSSERVER
paint: change colors in the palette with button 3
ramfs: don’t use Srv.nopipe
rc-httpd: append carriage return to content-length header
rc: fix code serialization for PIPEFD (thanks BurnZeZ)
rc: fix heredoc crash
rio, kbdfs: increase read buffer for high latency kbdfs support
rio: fix bug causing short reads of wctl files
rio: fix goodrect() bug (thanks mike)
rio: pad window status strings in wctl files
rio: triple click selection, reset click count on mouse motion.
sam: ^ does not need current file
sam: add $%dot (thanks kvik)
sam: Bump protocol version for Ttclick
sam: triple click selection
samterm: don’t scroll invisible (command) window (thanks umbraticus)
samterm: Make ctrl+g focus text windows and cycle zeroxed copies (thanks kvik)
samterm: fix typos in time calculation
seconds: hack around timezone issues.
sed: accept and ignore -E and -r flags for unix compatibility
sed: allow whitespace after ! negation (thanks k0ga)
sshfs: fix dir2attrib() memory leak in wstat error case (thanks BurnZeZ)
sshfs: fix race condition between sendproc() and recvproc()
sshnet: fix fork race conditions
tar: Add pax extended header support
tar: fix memory corruption in extract1 (thanks petter)
tar: Fix directory heuristic for long file names.
tar: Parse global pax header in the right place.
upas/fs: Fetch IMAP flags from server. This makes us sync read/answered/… flags with unix.
upas/fs: fix handling of numeric timezone offsets in strtotm
upas/fs: fix sending of “delete” plumb messages
upas/fs: imap fixes and improvements
upas/fs: only ensurecache() on doplumb().
upas/fs: plumb flag changes.
upas/fs: plumb modify messages for self-changed flags
upas/fs: remove useless loop in rf822()
upas/fs: Check if ’m' is null when updating messages.
upas/fs: fix ref882 reference parsing.
upas/fs: fix typo: we don’t have cache insurance.
upas/fs: simplify flag parsing.
upas/marshal: fix printinreplyto function
vt: triple-click to select non-whitespace segment
walk: add D and T fmt characters (fileserver device/type)
walk: remove superfluous newline
Mail: Remove reply print.
Mail: delete obsolete comments (replies are flagged elsewhere)
Mail: show urls in html messages.
DOCUMENTATION
acme(1): fix scrolling when swiping text at the top or bottom of a frame
atari(1), nintendo(1), sega(1): document common emulator keys
crop(1): remove duplicate -b option in synopsis
listen(1): implement one-shot mode flag for listen1 (thanks kivik)
mail(1): fix typo
mothra(1): add description of Plumb menu item.
os(1): add c implementation of inferno os command and cmd(3) device manpages
page(1): fix troff manual example
sam(1): document $% and $%dot
seconds(1): add SOURCE section
tar(1): document ’T' flag misbehavior (thanks rgl)
vac(1): assimilate manpage additions from plan9port and complete usage lines (thanks joe9)
walk(1): formatting/corrections
dial(2): we prefer nil over 0, make the example show it.
draw(2): fix manpage typo (thanks rgl)
flate(2): fix typos (thanks rgl)
9p(2): document all the effective rfork flags for postmountsrv()
9p(2): document the filedescriptor sharing behaviour of postmountsrv()
9p(2): fix sentence for wstat function (thanks jsmoody)
notify(2): fix typo
thread(2): fix description of when/why procexec(l) functions return
thread(2): fix manpage typos (thanks rgl)
cmd(3): fix typo, Close -> Closed (thanks kivik)
draw(3): typo dp
ip(3): document special null-address hack for accepting all incoming connections
ip(3): remove outdated maximum ipstack number limit.
kbd(3): fix a typo (thanks Alex Musolino)
rio(4): fix bad cross-reference format
rio(4): update description of wctl file format
upasfs(4): fix manpage typo (thanks rgl)
image(6): fix typo
9boot(8): Document 9bootfat limitation.
boot(8): Specifiy the restrictions on 9boot file names more clearly.
console(8): add console command and manpage
man(9): add start of section 9 manpages (thanks rgl) NEW
delay(9): improve language
kproc(9) and sleep(9) corrections
sleep(9): recover comment with the right reference
OTHER
/lib/face: add .dict entries for andrew.1 face files
/sys/lib/kbmap: update 0xf860 to Kshift value, fix fake shifts on esc1
/sys/lib/kbmap/colemak: add colemak keymap (thanks Silas McCroskey)
/sys/lib/kbmap/sg: add swiss german kbmap (thanks mike)
/sys/lib/plumb/basic: open nedmail windows with -noscroll
/sys/lib/plumb/basic: include section 9 in manpage plumb rules.
fortunes: As much as I’d love to I feel I have to let it go – rminnich
hgignore: ignore section 9 manpage indices, ignore init, kernels and bootloader binaries
riostart: when system uses serial console, provide a system shell on it
timezones: change DST timezone string for South Australia
tmac.eai: wrapper around -me: auto indexing sections, .TC macro (thanks sirjofri)
troff: add missing /sys/lib/tmac/me files (thanks sirjofri)
words: transgender
9FRONT “NO THINKPAD” RELEASED (2019/10/08)
http://bell-labs.co/9front/iso/9front-7408.1d345066125a.386.iso.gz.torrent
http://bell-labs.co/9front/iso/9front-7408.1d345066125a.pi.img.gz.torrent
http://bell-labs.co/9front/iso/9front-7408.1d345066125a.pi3.img.gz.torrent
DASH 1 MANUAL
http://fqa.9front.org/dash1.nothinkpad.pdf
dash 1 and man pages in print: http://9front.org/propaganda/books
THANKS: momus
KERNEL AND DRIVERS
kernel: catch execution read fault on SG_NOEXEC segment
kernel: clear FPillegal in pexit() and before pprint()
kernel: expose no execute bit to portable mmu code as SG_NOEXEC / PTENOEXEC, add PTECACHED bits
kernel: get rid of tmperrbuf and use syserrstr swapping instead in namec()
kernel: make exec clear errstr, stop side-channels and truncate on utf8 boundary
kernel: make user stack segment non-executable
kernel: move common ethermii to port/
kernel: prohibit changing cache attributes (SG_CACHED|SG_DEVICE) in segattach(), set SG_RONLY in data2txt()
kernel: simplify pgrpnote(); moving the note string copying to procwrite()
bcm, kw, omap, teg2: implement setregisters()
bcm: add cache invalidate before accessing prop buffer
bcm: fix typo in gpio.c on unused AFedge0 constant
bcm: flush out early boot messages on uart and screen initialization
bcm: invalidate cache on Fbinfo after firmware completion
bcm: set XN bits for kernel device mappings
bcm64: add addarchfile() prototype to fns.h (for qeed)
bcm64: add config for raspberry pi 4
bcm64: add driver for emmc2 controller
bcm64: add gic interrupt controller driver for raspberry pi 4
bcm64: add gisb arbiter driver to catch bus timeouts
bcm64: add pci express driver for raspberry pi 4
bcm64: add support for more than 1GB of ram (untested)
bcm64: deal with discontinuous memory regions, avoid virtual memory aliasing, implement vmap() proper
bcm64: do not use OTP_BOOTMODE_REG to determine OSC frequency (thanks richard miller)
bcm64: enable devgpio in kernel configuration (thanks qeed)
bcm64: enter page tables in mmutop AFTER switching asid in mmuswitch()
bcm64: fix mmu0clear() mistake from previous commit
bcm64: fix wrong prescaler for generic timer on rpi4
bcm64: generalize mmu code
bcm64: implement dtracy support
bcm64: implement reboot support
bcm64: no need to flush instruction cache when switching TTBR0
bcm64: poll gisb arbiter for asynchronous bus errors
bcm64: remove unneccesary tlb flush on mmuidmap()
bcm64: reorganize virtual memory map for rapberry pi4
bcm64: replace emmc2 driver with richard millers sdhc driver
bcm64: set XN bits for kernel device mappings
bcm64: strip debug symbols to make sure .img file is multiple of 4 bytes
bcm64: switch to 64k page size
bcm64: update io.h for pci express and raspberry pi 4
bcm64: work in progress genet ethernet driver for raspberry pi 4
bcm, bcm64: add BCM2711 support for gpiopull(), fix gpiomeminit(), cleanup
bcm, bcm64: add dmaflush() function and make virtio size and virtual address configurable in Soc.virtio and Soc.iosize
bcm, bcm64: add support for device tree parameter passing
bcm, bcm64: add vcore support for raspberry pi 3 GPIO expander
bcm, bcm64: clean dma destination buffer before issuing dma in case of non cache-line-size aligned buffer
bcm, bcm64: fix cache operations for dma and emmc
bcm, bcm64: make irq.$O optional and add intrdisable(), use intrenable()
bcm, bcm64: preserve memsize across reboots, avoid trashing atags while parsing cmdline
devdtracy: make machlocks and dtktab static
devip: fix permission checking
devip: if the server does not support TCP ws option, disable window scaling (thanks joe9)
devproc: fix fishy locking in proctext(), check proc validity, static functions
devproc: move proctab() call after Qnotepg special case in procwrite()
devproc: restore psstate info string in procstopwait()
devuart: make sure uart is enabled in uartkick()
ethergenet: fix flow control negotiation
ethergenet: remove debugging
emmc: 50MHz highspeed support (from richard miller)
pc: move low-level allocation details out of mmu.c into memory.c rampage() function
pc64: fix compiler warning in rebootjump() entry calculation
pc64: implement NX bit discovery, map kernel mappings no-execute
pc64: map kernel text readonly and everything else no-execute
pc64: preallocate mmupool page tables
sdide: silence compiler warning in atadebug()
usbehci: introduce dmaflush() function to handle portable cache invalidation for device drivers
usbehci: silence “param declared but not used” compiler warning in itdinit()/sitdinit()
usbxhci: fix mysterious ENABLESLOT failures (update to XHCI spec revision 1.2 (2019))
usbxhci: implement portable dma flush operations and move to port/
usbxhci: fix endpoint stall recovery, handle Ep.clrhalt flag
vgai81x: use vmap() for uncached access to cursor data instead of manipulating kernel page table
COMPILERS AND DEBUGGERS
7l: don’t hardcode 4k pagesize, use INITRND
8c, 6c: LEA x, R; MOV ®, R -> MOV x, R
8c, 6c: avoid allocating index registers when we don’t have to
8c, 6c: fix INDEX node #reg calculation
8c: skip 64-bit regpair allocation for OINDEX nodes in cgen64()
8l, 6l: fix “unknown relation: TEXT” xfol() bug (thanks mischief)
cc: fix void cast crash
cc: remove nullwarn() from OCAST codegen, zap void casts
cc: use 7 octal digits for 21 bit runes
cc: Allow address expressions in ?c after int casts.
cc: Import compiler warnings and bugfixes from Charles.
acid/kernel: fix procstk() for arm64, set kdir for arm/arm64 to bcm/bcm64
acid/kernel: for stacktraces, try to use context from error stack when process is not sleeping
LIBRARIES
ape: Add mkstemp to /sys/src/ape/lib/ap/gen/mkfile
ape: don’t hardcode list of ape library directories in /sys/src/ape/lib/mkfile
ape: fix stdio putc() macro, avoiding “result of operation not used” warning
ape: reimplement rename() - fixing compiler warnings and handling more error cases
ape: revert rename() change
ape: Include integer limits from generic stdint.h in system-specific stdint.h
ape: Add missing UINTsz_MIN defines to ape stdint.h
ape: Add test for pow.c
ape: Add toascii()
ape: Handle NaN and Inf edge cases as specified by posix, instead of barfing.
ape: Turn on warnings when building libap.
ape: Add mkstemp to stdlib.h
lib9p: fix listensrv() filedescriptor leaks
libauth: do not set errstr in auth_rpc() for ARdone result (thanks majiru)
libflac: Tell it that we have stdint.h so it finds SIZE_MAX
libstdio: fix putc(), plan9 version
libventi: define VtEntryNoArchive constant
libventi: implement vtreconn and vtredial functions
libventi: implement vtsha1 and vtsha1check functions
PROGRAMS
ape/cc: Add arm64 and remove alpha, add spim
awk: no need to call getargv() twice to get the value for FILENAME
cwfs: fix listen filedescriptor leaks
date: Add RFC2822 (email style) formatted dates
g: Make it grep recursively by default.
auth/rsa2asn1: implement private key export with -a flag (thanks kvik)
snoopy: add support for dhcp classless static routes option
snoopy: avoid extra spaces in dhcp filter output
snoopy: include dhcp.h instead of replicating bootp/dhcp options enum
ssh: work around github.com’s broken cipher negotiation code (thanks Ori_B)
cmd/ip/*: chown the network connection after authentication
cwfs: fix root access time qid path comparison
cwfs: properly handle 64 bit qid path
cwfs: remove old some assert() debugging
cwfs: remove orphaned lrand.c
disk/format: implement long name support
file: recognise unified diff output
gs: apply fixes for CVE-2018-16509 (thanks jsmoody)
gs: apply mitigations against CVE-2017-8291 (thanks jsmoody)
gs: fix missing type check in ztype (thanks jsmoody)
ip/cifsd: add basic support for UNIX extensions
ip/cifsd: dont return garbage in upper 32 bit of unix extension stat fields
ip/cifsd: exit to close connection when we get malformed smb header (fixes linux mount hang)
ip/ipconfig: don’t leave behind null address when dhcp gets interrupted
ndb/dnsquery, ndb/csquery: write “>” prompt to stderr (thanks kvik)
pcc: Always turn on the -+ flag in cpp
plumber: loop will go out of bounds when *++s == ‘\0’; replace with strstr
rc-httpd: avoid duplicate log output in dir-index handler
rc-httpd: only emit charset option for text/plain content type
rc-httpd: serve markdown with text/plain content-type
rc-httpd: set charset=utf-8 for all text/* content types
sshfs: use threadexits() instead of exits()
upas/fs: remove read timeout via alarm(2) in pop3resp
upas/fs: speedup mtree and henter()
upas/smtp: handle temporary authentication failures
vmx: handle build arch exclude in /sys/src/cmd/mkfile
vncv: fix snarf buffer realloc memory corruption
DOCUMENTATION
2c(1): document 7c (arm64)
draw(3): memlorigin
nusb(2): remove startdevs() reference, document getdev() (thanks BurnZeZ)
rsa(2): document asn1encodeRSApriv() and asn1encodeRSApub() functions
rune(2): complete source references
sshnet(4): … and incoming TCP calls
tinc(8): add history section
vmx(1): update BUGS
walk(1): add history section
OTHER
/sys/lib/dist/mkfile: adjust 2GB for pi3 and zynq img
/sys/lib/dist/mkfile: storage vendors idea of 2GB is deflating
/sys/src/cmd/mkfile: fix PCONLY exclude (thanks stefan)
/sys/src/boot/bcm/mkfile: add missing device tree file for raspberry pi 4
/sys/src/boot/bcm/mkfile: add raspberry pi 4 kernel and bootloader to pi3.img target
bootrc: remount devip after /dev/hostowner has been written by factotum
bootrc: unmount devip before starting factotum
mkone: fix man target (thanks Amavect)
9FRONT RETURNS TO PRINT WITH STUNNING NINE VOLUME SERIES (2019/06/23)
Stun a burglar by hurling one volume after another at the unsuspecting intruder. Stun yourself by actually learning something. Sell them later at a profit.
DASH 1
The usual suspect. An overview of what the fuck just happened today, Re: 9front.
Online: http://fqa.9front.org
Print: https://amzn.to/2Qg0v92
PROGRAMMER’S MANUAL
The standard, venerable man pages, divided into eight sections. The rainbow books, each with a different color border drawn from the paint(1) palette. Verified complete. It’s a good idea to read them all.
Online: http://man.9front.org
Print:
9FRONT “SKIN OF EVIL” RELEASED (2019/05/16)
http://gabe.felloff.net/usr/cinap_lenrek/9front/9front-7233.24d21d7c0868.iso.gz.torrent
DASH 1 MANUAL
Online: http://fqa.9front.org/dash1.skinofevil.pdf
Print: http://9front.org/propaganda/books
THANKS: miron lukyanov
KERNEL AND DRIVERS
bootrc: add nora6= option to disable automatic ipv6 configuration
bootrc: handle automatic ip configuration on gbe media
bootrc: fix $rootdir and $rootspec handling (thanks lucio)
kernel: exec support for arm64 binaries
kernel: export freepages() function so it can be used in mmurelease()
kernel: get rid of TSTKTOP, USTKTOP is the end of user address space
kernel: get rid of KSTKSIZE alias for KSTACK
kernel: get rid of PTR2UINT() and UINT2PTR() macros
kernel: get rid of checkpagerefs() debugging
kernel: include lock pointer in error report, stop spamming lockloop prints when we are panicing
kernel: insert memory barrier in the scheduler before setting up->mach = nil
kernel: remove ptclbsum dependencies from configs
ktrace: arm64 support
qio: handle common case in trimblock()
bcm: add pl011 uart driver, dont touch line control while uart is enabled
bcm: don’t call nil on PADDR() in dmaaddr(), return busdram dummy address
bcm: don’t use PADDR() to convert bus address to physical in vcore
bcm: dont assume PHYSDRAM 0 in dmaaddr(), fix dmaioaddr()
bcm: include sdmmc in pi kernel configuration
bcm: list devswap only once in devtab array
bcm: move CONFADDR parsing into bootargs.c, simplify initcode start() args handling
bcm: move fiq saved pc adjust into lexception.s so it can be shared with arm64
bcm: move interrupt handling out of trap.c into irq.c, add irq.c to mkfile
bcm: move okay() from uartmini.c to devarch.c
bcm: make sure fiq is on enabled on cpu0
bcm64: add experimental work in progress arm64 kernel for raspberry pi 3
bcm64: get rid of usb workaround delay
bcm64: map framebuffer write-through to allow unaligned access
bcm64: provide idlehands() function
bcm64: use MOVP instruction for saving and restoring registers
bcm64: use exclusive monitor on nrdy to wake up idlehands()
pc, pc64: fix %.*s format in multibootargs
pc, pc64: properly track dependencies for mem.h on autogenerated apbootstrap.h and reboot.h targets
pc, pc64: pci: add AMD FCH LPC bridge to southbridges
pc, pc64: devarch: recognize AMD Ryzen model
pc64: properly handle faulterror in faultamd64()
devdraw: get rid of softscreen==0xa110c hack and make attachscreen() return Memdata*
devdraw: simplify drawgen()
devip: fix block list handling for icmp/icmp6, use proper MinAdvise for icmp6
devip: fix fragment forwarding
devip: fix ip fragmentation handling issues with header options
devip: handle packet too big advise for icmp6, remove fragment header
devip: ignore icmp advise about laggard fragments
devip: ignore reserved fragment offset bits
devip: ignore the evil bit in fragment info field
devip: ipv6 loopback ::1 has link-local scope
devip: reject bad numeric ports (such as 9fs -> 9)
devip: remove unused eipconvtet.c and ptclbsum.c files
devip: simplify ip reassembly functions, getting rid of Ipfrag.hlen
devip: tcp: Don’t respond to FIN-less ACKs during TIME-WAIT (thanks Barret Rhoden)
devip: use common code in icmp for handling advise
devip: use parseipandmask() for ipifc and route control message parsing
devip: zero fragment offset after reassembly, remove tos magic, cleanup
devip: avoid media bind/unbind kproc reader startup race, simplify etherbind
devip: do not lock selftab in ipselftabread(), remove unused fields from Ipself
devip: make sure ifc is bound in add6 ctl command
devip: remove unused c->car qlock, avoid potential deadlock in ipifcregisterproxy()
devip: reset speed and delay on bind, adjust burst on mtu change, ifc->m nil check, consistent error strings
devsd: fix panic when using “delpart” to remove a partition that was already removed
devswap: simplify, don’t panic when writing swapfile fails
devtls: remove static “already” flag in tlsinit(). this function is only run once.
audiohda: add support for Gemini-Lake audio in Intel NUC nuc7pjyh (thanks sam-d)
audiohda: recognize AMD Family 17h hd audio controller
ether8169: fix thinkpad A485 ethernet (thanks mischief)
ether82563, ether82598, etherx550: round rbsz to multiple of 1K
ether82563: fix bogus FCA write and link detection for i217
ether82563: use 9018 byte mtu from datasheet for i217, i218, i219
ether82563: work around spurious jumbo packets on i217 (thanks k0ga)
ether82598: fix multicast filter (thanks aiju, joe9)
etherx550: add intel 10GB ethernet controlller x550 driver (thanks joe9)
igfx: add support for 915gm
nusb/audio: fix %.*s format usage
nusb/disk: implement 64 bit lba read/write commands (16 byte commands)
nusb/disk: don’t unnecessarily unstall devices.
nusb/kb: fix continuous scrollwheel delta not being reported (thanks sam-d)
nusb/usbd: fix dump %U formatter
nusb/usbd: stop sending port enable commands
nusb/usbd: work around devices that ignore the high byte of wLength in control transfer reads
nusbrc: detect “keyboardio model 01”, appears as multifunction device with IAD csp(0102EF) (thanks sam-d)
usbdwc: enable Slowbuilkin workarround, improve split transaction timing, handle erroring sleep(), debugging
usbxhci: make stuck usb transactions interruptible.
wifi: fix %.*s format in wifictl
COMPILERS AND DEBUGGERS
7c: add arm64 c compiler and assembler (thanks Charles Forsyth)
7a: fix indexreg operations, fix post increment operands
7c: don’t emit SXTW for non-register source operand
7c: fix long to vlong/pointer conversion, avoid negative immediate offsets
7c: fix registerization of vlong constants
7l: add arm64 linker from Charles Forsyth (initial sync)
7l: add missing AFMOVD with EXT/AUTO/LOREG operands to optab
7l: deal with huge (negative or > 24bit) register offsets, fix LACON, avoid DWORD in constant pool when we can sign extend
7l: fix bitcon instruction selection and encoding
7l: fix vlong constants in literal pool for non-MOV instructions
7l: there’s no BIC* $bimm variant
7l: implement MOVP instruction
5c: dont substitute (destination) registers contained in MOVM reglist
[5678vq]c: fix .safe node type for FUNC() = FUNC() sugen
cc: fix %.*s format usage in lexer “token too long” error
acid: add arm64 support
dtracy: avoid dmachlock() race
dtracy: avoid pointer to integer truncation warning on amd64
dtracy: fix &&
dtracy: fix conditional branch generation
LIBRARIES
ape: initial support for arm64
ape: fix malloc to deal with more than 4GB of memory on 64 bit systems
lib9p: fix zero msize abort() due to unknown version (thanks kvik)
libauthsrv: authdial smprint() out of memory autism
libc: Sand edges down on GBIT64()/PBIT64() macros.
libc: initial arm64 support
libc: fix NaN check precedence bug in modf() (thanks BurnZeZ)
libc: provide arm64 assembly versions for memmove() and memset()
libc: use MOVP instruction for arm64 memmove() and memset()
libip: don’t reject ipmask in v6 form for v4 address
libip: move optimized 386 assembly version of ptclbsum() from kernel to libip
libip: prefer v4 over v6 for myipaddr()
libip: replace v4parsecidr() with new parseipandmask()
libip: return -1 in parseipmask() and parseipandmask() when mask is not ipv4 and v4 argument was set
libmach: initial arm64 support
libmach: support for MOVP instruction disassembly for arm64
libmemdraw: handle memarc() phi == 0 and phi <= -360, keep alpha in bounds
libmemdraw: remove static Point p00 and use ZP instead
libmp: add dummy mkfile for arm64
libndb: provide parseipmask() v4 argument in subnet(), use snprint() instead of sprint()
libpanel: fix %.*s format in pl_snarfentry()
libsec: dummy mkfile for arm64
libthread: initial support for arm64
PROGRAMS
abaco: fix %.*s format in findctype()
atazz: fix %.*s format in special command processing
aux/depend: fix %.*s format in path concatenation
aux/statusmsg: fix %.*s format
aux/wpa: fix %.*s format in debug prints
awk: fix nextfile crash (thanks leetspete)
cifs: fix pruning of . and .. directory entries (thanks steve simon)
cwfs: fix %.*s format in cmd_printconf()
dossrv: make GLONG() return ulong, handle getsect() error in dostat()
dossrv: use 64 bit vlong for sectors
gs: arm64 support
gs: avoid stupid shifts by casting to uint64_t
hgfs: fix %.*s usage in walk
ip/6in4: use parseipandmask(), use ipvmp() instead of equivip6()
ip/ayiya: use parseipandmask(), use ipvmp() instead of equivip6()
ip/cifsd: fix %.*s format xdirflush() path
ip/dhcpd: add rootserverip read in lookupip() (thanks k0ga)
ip/dhcpd: change swap to rootserver (thanks k0ga)
ip/dhcpd: provide v4 argument for parseipmask()
ip/dhcpd: remove undocumented dhcpgroup mechanism, group related ndb attributes together
ip/dhcpd: send vendor ndb attribute if available (thanks k0ga)
ip/ipconfig, ndb/dns, libndb: handle parseipmask() errors
ip/ipconfig: format ipmask with %M instead of %I
ip/ipconfig: use defaults for loopback
ip/ipconfig: use ewrite() to enable routing command for sendra
ip/ipconfig: use new parseipandmask() function
ip/ppp: fix %.*s format in debug print
ip/pppoe: fix %.*s format in debug prints
ip/rip: use new parseipandmask() function
ip/socksd: fix %.*s format in dialstring
ip/tftpd: fix %.*s format for homedir path
ip/tinc: 4096 bit RSA, (passive) pmtu discovery, fix udpfd close() race, cleanup
ip/tinc: fix mistake from previous commit
ip/tinc: honor TcpOnly and IndirectData settings, script support, prefer incoming udp connections
ip/tinc: use new parseipandmask() to parse subnets, use ipcmp()/ipmove(), remove prefixlen
ip/torrent: fix %.*s format in dialstring
ip/torrent: avoid trying to fetch blocks past file
mk: fix closing random fd from uninitialized stack variable (thanks BurnZeZ, mycroftiv)
ndb/dns: provide v4 argument to parseipmask(), use snprint() instead of sprint()
postscript: use PI
python: arm64 support
python: clean and nuke pgen and libpython.a for all $CPUS
python: remove /$objtype/lib/ape/libpython.a, track graminit.h dependencies, remove graminit.c
ratfs: implement ipv6 support, replace v4parsecidr() with parseipandmask()
rc: clear out redirections on “rfork F” (RFCFDG)
ssh: add experimental mux mode
ssh: don’t assume error messages are ASCII. format number of complete runes, not bytes.
ssh: implement -W option for making remote tcp connections
ssh: print usage for unknown flags, cleanup
sshnet: actually make sure ssh established connection before exiting main proc
sshnet: allow 0 port
sshnet: bring back sshnet using ssh(1) mux mode
sshnet: don’t leak “Dialing” connections when “connect” ctl write gets interrupted
sshnet: don’t leak error string
sshnet: fix eof and close handling, use proper packet size, cleanup
sshnet: fix memory leak
sshnet: fix write count for ctl message writes
sshnet: get rid of Announced state, simplify
sshnet: implement listen (port forwarding)
sshnet: pass on open failure error message, simplify
sshnet: reduce memory consumption by lowering stack sizes
tcs: clean up old port code, and avoid writing 0 to stdout
troff: fix -ms mug (thanks aksr)
upas/fs: don’t put messages on the lru that cannot be uncached
upas/fs: fix %.*s format usage
upas/fs: fix infinite loop in putcache (again)
upas/fs: include mkupas in mkfile last to get default target
upas/fs: release mailbox syncing lock after encountering error
upas/fs: remove unused function pop3log
upas/ned: fix %.*s format in parsesearch(), improve mkfile
upas/scanmail: fix %.*s format in xprint(), improve mkfile
upas/smtp: fix %.*s format for challenge in smtpcram()
upas/smtpd: implement ipv6 support for ip blacklist, replace v4parsecidr() with parseipandmask()
uptime: rewrite in awk
vmx: build vmx only for 386 or amd64
vmx: check for draw initialization errors
vt: dont make fs procs hang around when closing rio window
vt: fix %.*s in sendnchars()
walk: remove unused depth argument from dofile()
wadfs: avoid comma operator after PBIT32() macros
webfs: bracket literal ipv6 host in “Host:” header
webfs: properly handle %.*s in url path and debug prints
DOCUMENTATION
dhcpd(8), ndb(6): group related ndb attributes together
dhcpd(8), ndb(6): update documentation (thanks k0ga)
dtracy(1): fix print(2) reference
ip(3): document TCP ctl close command
mach(2): fix byteswapping function signatures
memdraw(2): remove references to iprint()
plan9.ini(8): add USB section, documenting various usb options
plan9.ini(8), boot(8): clarify the use of $rootdir and $rootspec
rsa(8): add example for tinc(8) (thanks k0ga, qwx)
segment(3): use bind -c in examples (thanks henesy)
ssh(1): add sshnet(4) reference
sshnet(4): add documentation
sshnet(4): fix user@host syntax, add BUGS section, add ip(3) reference
thread(2): threadsetname takes a fmt string
added walk(1)
OTHER
arm64: add mkfile
/sys/lib/plumb/basic: make plumbing page bookmarks work with relative paths (thanks Tobias Heinicke)
fix DST begin/end timestamps for South Australia
fortunes: Open source may not be safe if it has no super excellent moderator.
inst/startether: skip ipv6 auto configuration when nora6 was specified
dist/mkfile: aux/stub -d /n/src9/usr to avoid overbinding /usr in case /n/src9 an / alias
dist/mkfile: add *.pi3.img target for ARM64 raspberry pi3
distproto: add /lib/ndb/dhcp/ and /lib/news/ directory (thanks lyndon)
rootstub: add /sys/lib/dist/ndb/dhcp/
rootstub: create arm and mips directories in /usr/glenda/bin (thanks timclassic)
rootstub: create arm64 directories
vgadb: add t43p 1600x1200 panel entry
lib: update pci database
timezones: add India (thanks joe9)
9FRONT “CALLING DICK TRACY” RELEASED (2018/12/31)
http://9front.org/iso/9front-6977.c7e7268b0786.iso.gz.torrent
http://9front.org/iso/9front-6977.c7e7268b0786.iso.gz
DASH 1 MANUAL
http://fqa.9front.org/dash1.callingdicktracy.pdf
THANKS: to aiju for cover assistance
KERNEL AND DRIVERS
9boot: get rid of 64 byte line length limit
9boot: don’t let user erase the prompt (thanks mischief)
bootrc: NEW experimental reboot method to load another kernel
bootrc: remove $ff references (was old parsed /boot/boot argument list)
kernel: change peek to return number of characters left rather than 0/-1
kernel: fix allocb for BLOCKALIGN*2 >= Hdrspc
kernel: fix livelock in rebalance (thanks Richard Miller)
kernel: fix tprof on multiprocessor
kernel: remove unused static variable “sofar” from timerintr() (thanks mischief)
kernel: sync two longjmp fixes from drawterm
bcm: NEW import changes for raspi2/3 from richard miller
bcm: cleanup timer and clock code
bcm: fix /dev/reboot text/data corruption (thanks richard miller)
bcm: fix l2 cache maintenance routines for raspi3 (armv8)
bcm: fix mysterious core clock resets under SMP (thanks richard miller)
bcm: intrenable() can happen from any cpu in case of dma interrupts
bcm: provide /dev/cputemp in a format stats can understand
bcm: simplify irq handling by having per cpu Vctl chain
bcm: simplify reboot code
bcm: speed up co-processor operations by avoiding i+d cache flush on each operation
pc, pc64: add pcienable() and pcidisable() functions
pc, pc64: increase CONFADDR buffer from 4K to 24K
pc, pc64: park application processors in rebootcode with mmu off
pc drivers: use pcienable() to handle device power up and missing initialization
devbridge: fix runt packets going through the bridge (thanks cinap)
devip, ipconfig: avoid overflow on lifetime checks
devip: fix arpread, dont return partial entries
devip: fix default parameter calculation for router life-time
devip: fix swapped tcp snd.scale and recv.scale in tcpstate() format (thanks joe9)
devip: make updating ra6 router parameters atomic
devip: only add interface route for “on-link” prefixes
devip: remove unused QLock from udp and icmpv6 control blocks (thanks brho)
devip: valid and prefered life-time should be unsigned, add remove6 ctl command
devuart: don’t sleep in uartdrainoutput() when called splhi or without a process
devusb: use Enotconf[] string constant
devvmx: remove bogus . direntry
ether82563: ignore i82753 checksums, fixes T60 ethernet
ether82598: fix multicast filter (thanks aiju, joe9)
etherx550: NEW intel 10GB ethernet controlller x550 driver (thanks joe9)
etheriwl: NEW Centrino Wireless-N 1030 (thanks lksmk from brazil)
etheriwl: NEW support type 2000 devices and the 2200 chip in x230t
mtx, ppc: remove cistrcmp() and cistrncmp() redefinition
nusb/disk: also drive usb attached scsi devices
nusb/disk: implement 64 bit lba read/write commands (16 byte commands)
nusb/disk: dont issue capacity command when theres no media present
nusb/ether: NEW support for lan78xx (raspi3) (thanks richard miller)
nusb/ether: tune buffer size parameters for SMSC ethernet (raspi) (thanks richard miller)
nusb/joy: send magic packet to enable playstation controller events
nusb/joy: update misleading comment (thanks Tobias Heinecke)
nusb/kb: lilu dallas multitouch
nusb/kb: multitouch support (touchscreens, stylus)
nusb/kb: work arround broken split transaction on raspi’s dwc otg usb controller
nusb/serial: NEW support for CH340 serial converter
nusb/serial: fix wrong guard statement (thanks deuteron)
nusbrc: support for raspi3 ethernet
nusbrc: prevent nusb/kb from attaching to sony ps3 controller
usbehci, usbxhci: add noehcihandoff= and noxhcihandoff= parameters
usbxhci: delay after reset, preserve reserved bits in legacy status control register in handoff()
usbxhci: only clear RW1C bits when set.
COMPILERS AND DEBUGGERS
5e: byte access incorrectly checked for long; brk has to round up addresses
5i ki qi vi: avoid buffer overflow in command read loop
ape/make: fix \ line continuation parsing
acid: fix transcript
cc: fix wrong “useless or misleading comparison” warning
dtracy: add support for aggregations
dtracy: avoid pointer to integer truncation warning on amd64
dtracy: call dtptrigger with a struct pointer rather than a list of arguments; put return value in arg9
dtracy: catch page faults
dtracy: fix lexer bug
dtracy: get rid of DTName struct, support more than three parts in a probe name, wildcard matching
dtracy: missing break in dteverify
kencc: make “function not declared” a warning unless compiling with -T
kencc: turn “function args not checked” warning into “function not declared” error if appropriate
kprof: fix precedence (thanks geoff)
snap: add debug flag, make debug less verbose
snap: be more conservative taking stack snapshot
snap: check for overflows, cleanup error handling
snap: consequently use ulong for page index and count
snap: use Mach->szaddr as the width of the stack pointer (fixes snap on amd64)
LIBRARIES
ape: declare gethostname
audio/libogg: sync to ogg v1.3.3
libaml: allow amlmapio() to re-enter the interpreter (can happen by pciadd() -> amleval())
libc: NEW procsetname()
libc: NEW utf2idn() and idn2utf() functions to deal with internationalized domain names
libc: return number of bytes produced for idn2utf() and utf2idn()
libdisk: catch null bytes in proto file, fix memory leaks
libdisk: check for proper line termination in proto file parser
libdraw: avoid deadlock for mouse ioproc sending on resizec
libdraw: fix gengetwindow()
libdtracy: wrong operator in XORI (thanks aiju)
libhtml: increase Nestmax to render some convoluted pages (thanks fernan)
libmach: change amd64 szreg to 8 (thanks charles forsyth)
libmp: add tests for integer conversions
libmp: mptov: make it actually work
libmp: declare mpfactorial
libmp: fix mptouv behaviour to match mptoui
libndb: add missing ndbdedup.c
libndb: make ndbipinfo() walk ipnet for all matching entries, concatenate and dedup result
libsec: fix memory leak in pkcs1_decrypt()
libttf: add SHZ[] instruction
libttf: dont unset LOOP in SHC
libttf: fix swapped argument in vscan()…
libttf: instruction 0x24 is DEPTH, not CLEAR
libttf: SHZ also uses 0x36
PROGRAMS
awk(1): fix append operator to avoid truncating file
acme: fix fd checks - initialize Window.rdselfd to -1 not 0
cfs: close mount half of pipe, fixes cfs not exiting when unmounted
cwfs: Disallow ‘/’ in file names.
disk/mkfs: remove unused cputype variable (thanks kvik)
dnstcp: temporarily switch on resolver mode so we can resolve the dnsslaves for axfr check
dossrv: use 64 bit vlong for sectors
dossrv: make GLONG() return ulong, handle getsect() error in dostat()
dossrv: cleanup
factotum: rsa: use mptober() to get right adjusted result instead of mptobe() and memset()
forp: change indexing to verilog-like semantics
fplot: add min/max operators
fplot: add support for readout with middle mouse button
fplot: color different curves
fplot: compute y range correctly when used with multiple graphs
fplot: fix operator associativity
games/blit: clean up cpu.c and make it pass tests
games/c64: make keyboard table more readable
games/doom: fix music for patch wads
games/gb: when the LCD is turned off, reset ppuy and ppustate to 0, fixes bug in dragon warriors iii reported by mischief
games/md: use cpu.c from blit
hget: do a HEAD request to check if the file is already complete (thanks miscief)
hgwebfs: read to eof by default to match urllib2 behavior
hgwebfs: write headers individually, so they are not limited by webfs iounit (thanks mischief)
ndb/dns: avoid format strings in procname
ndb/dns: do recursive lookup for dnsslave=
ndb/dns: fix format print warning for procsetname(), cleanup
ndb/dns: send_notify() to multiple ip addresses in parallel, filter myip()
ndb/dns: use libc’s new idn functions
ndb/dns: use nil for pointers in dnresolve() args
ndb/dnstcp: only lookup the expected address type in findserver()
ndb/dnstcp: restrict DNS zone transfers to clients listed as dnsslave=
ndb/dnstcp: return a proper non-answer when rejecting zone transfer
ndb/inform: handle internationalized domain names
netaudit: handle multiple ip addresses
ip/dhcp6d: handle internationalized domain names
ip/dhcpd, ip/tftpd: change default for tftp homedir to /
ip/dhcpd: Add swap server support in dhcpd (thanks k0ga)
ip/dhcpd: handle internationalized domain names
ip/dhcpd: implement rfc3397 dhcp search domain option (dnsdomain)
ip/ipconfig: default onlink and autoflag to 1
ip/ipconfig: handle internationalized domain names
ip/ipconfig: handle noconfig flag for router advertisement, add debug prints, cleanup
ip/ipconfig: implement rfc3397 dhcp dns search option (dnsdomain)
ip/ipconfig: increase maximum host and domainname size to 255 bytes. idn for -h option
ip/ipconfig: remove expired default routes on router advertisement
ip/ipconfig: silently ignore prefix information with Autonomous flag clear
ip/ipconfig: valid lifetime is in seconds, not milliseconds.
ip/tftpd: remove sunkernel hack
kbdfs: don’t get confused by broken utf8
pc: reference counting bug
plumber: fix memory and filedescriptor leaks (thanks BurnZeZ)
python: explicitly declare WaitForThreadShutdown as void
rc: ignore $cdpath for # device rooted paths (thanks kivik)
rc: implement $“x in terms of Xdol() and new Xqw() instruction
rc: skip searchpath for “”, “.” and “..”
rc: use searchpath() logic to handle $cdpath
rcpu: fix pvar to initialize empty variables (thanks mycroftiv)
rio: get rid of window delete thread, fix mysterious disappearing windows
sed: only dollars as first address are a problem for -u
ssh: fix spinning due to sticky intr flag on connection timeout
ssh: handle MSG_GOBAL_REQUEST
ssh: handle unknown MSG_CHANNE_REQUEST messages
sshfs: add exits(nil) to threadmain
sum, md5sum, sha1sum: set exit status properly on open/read errors
truetypefs: NEW (unfinished but working) truetypefs
truetypefs: fall back to width if advance is zero
truetypefs: fix subfont indices (thanks aiju!)
truetypefs: use /lib/font/ttf as default font path
upas/imap4d: ignore messages without digest info
upas/fs: allow msgincref() with mb->refs == 0
upas/fs: avoid switch on vlong breaking build (thanks k0ga)
upas/fs: checkfid() might be called with uninitialized fid, ignore
upas/fs: delete extra binaries
upas/fs: don’t enter mailbox into hashtree when it is being freed
upas/fs: fix broken body.ext in walk (thanks sl)
upas/fs: fix infinite loop in putcache
upas/fs: fix walk
upas/fs: handle errors from fetch for cachebody()/cacheheaders()
upas/fs: keep messages marked for deletion in the index
upas/fs: remove now unnecessary “force” argument to cachefree
upas/fs: rework the refcounting, use 64bit qid path, add checks
vt: fix backup/forward after resize
vt: implement line selection by double click
vt: implement word select
vt: make selecting() wait until all buttons are lifted avoiding menu when chording
webfs: fix memory leak in Nfmt(), use libc’s new idn functions
webfs: remove automatic Referer header
webfs: write headers individually so they are not limited in sum to the 8k buffer
DOCUMENTATION
add dtracy manpage
atazz(8): fix probe formatting
boot(8): document tls and reboot methods
2c(1): document some differences with ANSI C
kbdfs(8): fix nit
keyboard(2) spelling (thanks Amavect)
idn(2): add documentation for idn2utf() and utf2idn()
mp(2): clarify mptoa() and mpfmt() default base
mp(2): document mpfactorial
mp(2): fix spelling
namespace(4): document new TrueType path, drop unused Hershey fonts path
namespace(4): fix $home bin paths
procsetname(2): provide manpage
ptrap(4): fix formatting
rio(1): fix typo
sdahci(3): correct device name for top level control messages (thanks joe9)
truetypefs(4): document truetypefs, fix example path
vt(1): vt doesnt exit when the host process exits as claimed (thanks driusan)
OTHER
add ndb entries for il rcpu
/sys/lib/dist/mkfile: add pi.img target for raspi sdcard image
add /sys/src/boot/bcm/mkfile to download raspberry pi bootcode firmware
cpurc: filter ipv6 loopback address for automatic ip address setup (thanks fhs)
cpurc: handle multiple auth servers
fortunes: [9fans] ….. UNSUBSCRIBE_HELP NEEDED
fshalt: wait for fileservers command file to vanish
get rid of /lib/tftpd
upas: get rid of broken validatesender example, remove redundant upas/misc and setup target
9FRONT “RUN FROM ZONE!” RELEASED (2018/09/09)
http://9front.org/iso/9front-6720.d6cb2bd03583.iso.gz.torrent
http://9front.org/iso/9front-6720.d6cb2bd03583.iso.gz
DASH 1 MANUAL
http://fqa.9front.org/dash1.runfromzone.pdf
COMING SOON: Print edition!
KERNEL AND DRIVERS
9boot: DHCPv6 support for efi
9boot: detect SYSLINUX “memdisk” and pass to kernel via ramdisk0= parameter
bootrc: write fatal error message to fd2
kernel: don’t cap the minimum sleep time to TK2MS(1) for syssleep()
kernel: stop the practice of passing DMDIR to devir() perm argument
pc kernel: get rid of ugly and partially broken cpuid macros
pc, pc64: look for “RSD PTR ” in ACPI reserved memory region from e820 map
pc, pc64: make mapalloc() and mapfree() static in memory.c
pc64: fix fpu bug
pc64: update headers to match pc
pc: fix ugly and partially broken switch() statement
devarch: fix /dev/msr (thanks joe9, aiju)
devaoe: fix dotdot walk in devlinkdir, make perms consistent
devdraw: zero initialize DImage.dscreen pointer (vnc, drawterm)
devenv: make #ec files not show up as world writable
devip: arp: interface address only specifies the interface, not the source address for route lookup
devip: do not icmp reply on multicast destination
devip: don’t pad the tag for routing commands (fixes removing routes with < 4 character tags)
devip: don’t send arp requests from null address
devip: fix flush, copy tag when replacing route entry
devip: fix missing wunlock() for “ipifc not yet bound to device” case, don’t create multicast entry on error
devip: fix multicastarp() when ipconfig assigned the 0 address
devip: fix router adv/sol options validation (options padded to 8 bytes)
devip: fix udp checksum
devip: fix use after free in ipifcremmulti()
devip: make il connect fail quickly when theres no route
devip: reject incompatible multicast/interface ip address pairs for ipifcaddmulti()
devmnt: make sure auth chan is on said conection in mntattach()
devmouse: produce signed msec timestamp in /dev/mouse, accept unsigned on write
devvga: disable cursor on shutdown avoiding graphics glitches on reboot
nusb/ether: fix ethertype filtering
nusbrc: add LG G5 for nusb/ether
sdloop: NEW import sdloop driver (thanks erik)
sdram: NEW experimental ramdisk driver
sdram: NEW properly support multiple ramdisks, so that ramdiskX corresponds to sdZX
wifi: lilu dallas multirate
audiohda: support Intel Sunrise Point-LP on thinkpad X1
etheriwl: add pci did for WifiLink 5300 (thans senthil)
igfx: support blanking by turning off panel power and backlight
rtl8169: fix receive for nuc BOXNUC7CJYH
LIBRARIES
ape: add some common fields for stat, grp and pwd
ape: add strnlen
ape: fix auth.h
ape: floating point improvements (thanks spew)
libttf: NEW add libttf for truetype font rendering
libdraw: accept unsigned msec timestamp in /dev/mouse
libip: ignore ipv6 link local addresses for myipaddr()
libmach: substitute /dev/zero for /proc/$pid/fpregs when missing (for snapfs)
libogg: nuke old libogg.au
libvorbis: fix broken free() (thanks mischief)
mklib: add %.acid target
PROGRAMS
6c, 8c: Fix nocast cast bug which prevents address arithmetic from being computed at compile time
Bfn improvements
acme: add spacesindent mode
acme: pass pointer to int type to avoid pointer to int cast warning
asaudit: make error more explicit
authsrv: implement AuthNTLM
authsrv: log message when no AES key is found for pak
authsrv: separate MSCHAP(v2) and NTLM(v2) authentication
authsrv: work arround linux omiting final Z(4) after the AvrPairs
camv: fix leak on resize
cc: fix result of operation not used warning for void casts
cwfs: cwfs -a option misleading
dc: fix off by one in stack overflow check (thanks BurnZeZ)
dontkill: explicitely set exit status to ‘’
emulators ui: add option for fixed factor scaling and bound scale vertically
emulators ui: don’t call flushmouse twice
emulators ui: don’t drink and code
emulators ui: fix input botch and typo
fplot: draw axes; zoom more naturally; unzoom
games/dmid: NEW add games/dmid and games/opl3
games/dmid: NEW add support for midi streams
games/dmid: NEW better fnumber calculation and fix fine tuning for 2nd voice
games/doom: don’t set repl if scale is 1
games/doom: use wadfs to expose music lumps
games/dpic: NEW add games/dpic and games/todpic
games/gb: attempt at fixing sprite priority
games/gb: fix mbc5 register addressing (fixes warioland3 gamebreaking bug)
games/gba: handle 8bit writes to vram
games/midi: properly skip sysex messages
games/mines: add missing checks for UseGhost
games/mus: fix note volume and channel selection; simplify
games/snes: fix input botch
hjfs: fix unbounded recursion bug in hjfs
hjfs: set group of new files to that of the parent directory (thanks umbraticus)
ip/cifsd: fix ntlmv2 authentication
ip/cifsd: limit response data count in TRANS2 for remotebuffersize, avoid empty filename for the root
ip/dhcp6d: NEW add minimal stateless DHCPv6 server for network boot and DNS configuration
ip/dhcp6d: NEW make constants for message types, check server identifier in request, only recheck ndb every minute
ip/dhcp6d: NEW ignore short and from non-local source packets
ip/dhcp6d: NEW only announce all-dhcp-servers multicast address on interface with link-local address on it
ip/dhcpd: add varargck pragma for warning() and fatal(), do syserr with %r format
ip/dhcpd: handle multiple networks on the same interface, dont get confused by v6 interface address
ip/dhcpd: parseip() error handling, make sure client ip is ipv4, add explicit length arguments to lookupname() and lookupserver()
ip/dhcpd: reject bogus requests, handle multiple ether= attributes in ndb, cleanup
ip/ipconfig: add missing {} as DEBUG() is a macro
ip/ipconfig: add varargck pragma for warning() function
ip/ipconfig: call mklladdr() to get conf.hwa initialized for ipv6
ip/ipconfig: check for recvra 0 on timeout
ip/ipconfig: make ra6 daemon less chatty, log to /sys/log/ipconfig instead of /sys/log/v6routeradv
ip/ipconfig: simplify by combining mklladdr() into mkclientid()
ip/ipconfig: use ipmove() instead of memmove()
ip/tftpd: deal with block wrap arround
kbdfs: handle mouse control (Kmouse, Kshift button swap) in parallel, bring back ^X form handling
kbdfs: ignore first 16 scancodes (number row) in kbtabctl[] for control key reverse mapping
mothra: Persist ‘k’ command in mothra and add matching -k flag (thanks piroko)
ndb/cs: add -6 flag for v6 only lookups and “ipv4” control message to toggle v4 lookups.
ndb/cs: make ipv6 only host practical by checking ip version on local interfaces
ndb/cs: prevent deadlock with ndb/cs by mounting /srv/dns AFTER /net
ndb/cs: don’t do dns lookups when all we got is loopback or link local addresses
ndb/dns: fix delegation with norecursion (-R flag)
ndb/dns: fix encoding of srv record target
ndb/dnsdebug: handle .ip6.arpa names
ndb/dnsgetip: report errors when dns resolution fails
ndb/dnsquery: handle .ip6.arpa names, don’t mount the dns service
play: handle file names containing consecutive spaces
rc: fix Xpipefd unbalancing the redir stack
screenrc: bind ‘#v’ when not already done (for cpu servers)
ssh: add -r for extra raw mode
ssh: fix nil dereference when TERM isnt set and -r is requested
ssh: wait for remote channel close (thanks piroko)
sshfs: if we’re going to annoy everyone we should at least match documentation
stats: fix crash with -Y fag when window too narrow
stats: read cputemp as C, set scale max to 100 C
stats: fix etherstats, avoid vmax == 0
sysinfo: minor formatting fix
tcs: shift-jis: add support for half-width kana
tcs: support EUC-JP JIS X 0212 codes
upas/nedmail: marshal(1) options -n and -8 are mutually exclusive
upas/smtp: allow remote port to be set to something other than smtp (e.g. ssmtp)
upas/smtp: use current login id in absence of -u option (as per man page)
valley: call srand so that actual random phrases are used
vncs: fix mistake “screen” vs “gscreen”, thanks eekee
vncs: silence devdraw debug prints
vncs: support for desktop resize extension, update devdraw
vncv: adjust window size on desktop resize, fix canresize checks
vncv: handle [] enclosed literal ipv6 addresses in host
vncv: implement extended DesktopSize extension, cleanup
vt: implement proper selections (thanks Ori_B)
webfs: don’t handle unknown status codes as continuations, reset status when handling continuation to avoid infinite loop
win: bind the text file properly instead of a special case in "
DOCUMENTATION
avl(2): add avlmin/avlmax in synopsis
dc(1): add pi program as example
getuser(2): add source or sysname()
hgfs(4): fix typo (thanks piroko)
ip(3): document ipifc ipv6 connection and fix delay formatting
mothra(1): fix formatting
ndb(8): ndb/inform also publishes ipv6 address now
plan9.ini(8) iwlwifi essid/bssid misleading
sshfs(4): don’t drink and troff
sshfs(4): language
sshfs(4): replace the much maligned -r option
stats(8): document -z flag (thanks xcko)
ttfrender(1): NEW
wadfs(4): fix typo
OTHER
/sys/lib/dist/ndb/common: synchronize root servers and link to root hints source
fix incorrect character range in vga/unicode.font leading to missing CJK characters
turkey simplified timezone (thanks erkin from 9front ml)
update pci database
fortunes: I’ve been looking into running Plan 9 in JSLinux – Skip Tavakkolian
9FRONT “GHOST IN THE MINESWEEPER SHELL” RELEASED (2018/05/14)
http://9front.org/iso/9front-6517.dcfbb100317e.iso.gz.torrent
http://9front.org/iso/9front-6517.dcfbb100317e.iso.gz
DASH 1 MANUAL
http://fqa.9front.org/dash1.ghostintheminesweepershell.pdf
KERNEL AND DRIVERS
kernel: add missing ethermii.h dependencies. patch from cinap_lenrek
kernel: fix missing header dependency for ethersink.$O
kernel: let /rc/bin/diskparts attach #k after #S partitions are loaded up
kernel: move devether and wifi to port/
kernel: properly handle bad attach specifiers
aijuboard bootloader: fix 10BASE-T / 100BASE-TX support
pc64: add magic _intrr() symbol for ktrace (thanks mischief)
pc64: fix intrr(), avoid the linker moving intrr() arround
zynq: fix 10BASE-T and 100BASE-TX support
devether: mux bridges, portable netconsole
devether: remove (unimplemented) detach, allow device creation on attach
devfs: only set configed flag if config was read successfully
devip: add “reflect” ctl message, fix memory leaks in icmpv6, fix source address for icmpttlexceeded, cleanup devip: fix crash on negative dev id on attach
devip: fix ipv6 icmp unreachable handling, fix retransmit, fix ifc locking, remove tentative check
devip: implement source specific routing
devip: improve arp and ndp code
devip: increment in counter AFTER acquiering the ifc lock or loopbackmedium
devip: make v4 ifc broadcast and multicast routes specific to address
devip: more v6 improvements
devip: pick source address for neighbor solicitations as of rfc4861 7.2.2, cleanup
devip: properly initialize the connection ignoreadvice and tos flags
devip: various icmp stuff
devip: verify ifcid on routehint check, check Route.ref for free’d routes
devip: add some primitive rate limiting knobs to counteract bufferbloat
devip: don’t set mtu of interface to zero when not specified (thanks joe9)
devloopback: reassign device letter from #X to #λ to avoid collision with devvmx
devusb: fix format print warnings for ep->ntds and ep->uframes
ethersink: after the experiment, the zeros get dismantled. and then destroyed.
ethersink: provide promisc and multicast functions for v6, set out queue limit to 0 on attach, add to pc64 config
audiohda: add device id for x260’s Intel Sunrise Point-LP. (thanks rodri)
igfx: add support for T510 (thanks mycroftiv)
nusb/cam: NEW usb video driver
nusb/ether: mux bridges, bring in line with devether
nusb/lib: add maxpkt and ntds to Altc struct
nusb/kb: add usb tablet support
nusb/ptp: set storage name to their human readable description string
nusb/usbd: increase buffer size to capture port information
nvidia: add pci device id for GeForce 6200 AGB (thanks bitmapper)
usbehci: add uframes control request to return uframes one at a time
usbehci: catch interrupt in tsleep
usbehci: fix medium- to low quality highspeed isochronous transfers
usbxhci: fix mistake in completering()
vmx: allow setting mac address of using ea:nnnnnnnnnnnn! prefix, use genrandom() to generate mac globally unique mac address
LIBRARIES
ape: improve assert macro
ape: add signed fixed size integer typedefs to u.h
libc: allow /net/cs to specify local address for dial()
libc: add signed fixed size integer typedefs
libmp: add awk-generated tests
libmp: add new tests
libmp: add mptod and dtomp
libmp: more tests
libmp: mpdiv: fix dividing 0 by a small power of two
libmp: mpdiv: fix sign bug
libmp: mpdiv: get signs right…
libmp: mplogic: don’t drop carry out
libmp: mpmagadd: force output sign +1 always
libmp: mpmagadd: oops…
libmp: mptod/dtomp: add to mp.h
libplumb: allow attributes larger than 4096, set some malloc tags
libplumb: fix old leak introduced in 18b8ed1a5ea3
libplumb: fix plumbunpackpartial()
libsat: NEW sat solver
libsat, forp: fix va_list hack on amd64
libsat: fix one of the satmore() bugs
libsat: satmore: don’t try to override user defined variables
libsat: setmalloctag, fix incorrect allocation size
libsat: satget: don’t duplicate binary clauses
libsat: satget: include unit literals
PROGRAMS
9fs: break 9front case into several cases: 9front, 9bugs, 9contrib, 9grep
audio/pcmconv: fix accidental cast to float instead of double
auth/asn12rsa: also convert ASN.1 encoded public key to plan9 format
camv: NEW camera viewer
camv: fix display locking issues
forp: NEW formula proover
forp: fix multiplication; change division to C semantics
forp: fix precedence for []
forp: fix ternary operator
fstype: make copy of first sector in /env to avoid unaligned reads on the disk (for devfs)
ftpfs: no caching by default, add -c flag to enable it (patch by mycroftiv)
g: revert accidental change, document missing file type
games/gb*: reverse savegame field polarity
games/gb*,blit,c64: fix phaser coolant leak during resize
games/2600: NEW add port of aiju’s 2600 emulator
games/mines -g: elements taken from list should be -2, not -1
games/mines: bikeshedding
games/mines: build a better ghost trap
games/mines: chain new CLists in splitknown correctly
games/mix: fix incorrect line numbers
ip/gping: icmpv6 support
ip/ipconfig: always refresh ndb/cs and ndb/dns when adding or removing ip addresses
ip/ipconfig: fix exit status for ndbconfig
ip/ipconfig: fix v6 ndp code, use source specific default routes
ip/ipconfig: populate /net/ndb from v6 router advertisements, configure multiple addresses in ndbconfig()
ip/ipconfig: setup per local address default routes
ip/ipconfig: stop spamming the console about router receiving RA’s
ip/ipconfig: use unique ip/ipmask/ipgw values close to match for ndbconfig
ip/ipconfig: fix parseip() error handling in ipconfig, ppp, tftpfs and dns
ip/linklocal: invert the localadm bit from mac address instead of just setting it
ip/ping: stop doing clever things with dialstrings, just let cs/dial figure it out
ip/ppp: remove old struct
ip/ppp: set source specific default route regardless of primary flag, set link speed thru new ctl message when -b is specified
ip/traceroute: icmpv6 support
ndb/cs: fix crash in ndbredorder due to ndbnew() not maintaining the ->line ring
ndb/cs: remove paranoia debug toggle
ndb/cs: remove single-ip-address assumptions
ndb/csquery: insert \n between read chunks
ndb/dns: lookup all entries in dblookup(), v4 and v6 queries in parallel, remove weigthed timeouts
ndb/dns: remove single-ip-address assuptions
ndb/dnsquery, ndb/csquery: handle long lines
ns, devproc: quote path and spec arguments for /proc/$pid/ns, namespace(6) does support quoting
ns: remove left over vararg check pragma
pc: add $ operator
ptrap: NEW plumber filter
sort: fix bug where it incorrectly included the field separator in the comparison if it was >= Runeself
sshfs: update qid and filename on Tcreate
upas/fs: fix imap atom quoting (thanks Piotr Kubaj)
DOCUMENTATION
forp(1): NEW manpage added
forp(1): document [] and some bugs
ip(3): document changes on /net/arp and /net/iproute
ipconfig(8): clarify -p and -P options
lock(2): fix typo
mines(1): fix misleading HISTORY wording, documentation and chronometric control of supernatural apparitions
pc(1): always allocate at least one mpdigit (itomp assumes this)
resample(1): document -n option
twsi(3): fix wrong unicode codepoint in manpage
upasfs(4): remove duplicate -m definition (thanks rodri)
manpages: shut up about tex(1)
OTHER
fortunes, rob, rsc, theo: What’s this? https://plan9.io/
drop your /lib/keyboard sir william, I cannot wait till lunchtime.
cpurc: remove obsolete device binds, run diskparts after $sysname is known. remove /env/boottime. document.
termrc: put #u in front for endpoint renaming to be effective, handle multipe ether= tuples in ndb
remove ipv6on
9FRONT “CONTENTS, MAINTAINED, STABLE” RELEASED (2018/02/02)
http://9front.org/iso/9front-6350.c07f998304d6.iso.gz.torrent
http://9front.org/iso/9front-6350.c07f998304d6.iso.gz
dash 1 manual
http://fqa.9front.org/dash1.contentsmaintainedstable.pdf
NEW IN THIS RELEASE
this release featues some updates on wifi, especially support for transparent arp proxy on kernel wifi interfaces so wifi can be bridged just like ethernets (as used by vmx). improvements in ipv6 support. devbridge is in the default pc kernel configuration now. and many other bugfixes.
KERNEL AND DRIVERS
kernel: convert textmode cga screen contents to kmesg only once
kernel: initialize cyclefreq for machno > 0 in guesscpuhz()
kernel: remove Ipifc.mbps, unused.
pc: fix wrong simd exception mask (fixes go bootstrap)
pc64: fix kmap() and invlpg()
devbridge: disable write blocking on ethernets, fix mss clamping
devether: allow spoofing of source mac address for bridges; used by vmx
devether: dont forward loopback packets on bridges
devether: remove duplicated parseether() implementation (pull from libip)
devmnt: use u32int for tagmask, simplify alloctag()
devtls, devssl: avoid ~0UL comparsion (from drawterm)
devvga: removing #v/vgabios, use /dev/realmodemem instead
ether79c970: dont disable promisc mode when multicast table is not empty
ether8169: add Macv45 for RTL8111HN, rename Macv45 -> Macv42 (thanks qeed, sam-d)
ether8169: deal with kernel memory exhaution
ether82557: don’t turn off promisc mode when mcast table is not empty
etheriwl, etherwpi: limit transmit queue buffer bloat to 48k (at 22Mbit ≅ 20ms)
gre: don’t drop pptp packets when smaller than v4 header
ipv6: set router R-flag when sendra is active for neighbor advertisement
nusb/ether: dont forward loopback packets on bridges, remove read nonblocking hack
realemu: fix pit bcd mode, fix precedence bug in argconv() format routine (thanks dan cross)
usbxhci: add missing pexit() in xhcirecover proc (thanks sam-d)
wifi: don’t assume Wifi.rates[] is sorted, return net data rate for mbps (50% theoretical)
wifi: don’t implicitely update lastseen timestamp on nodelookup()
wifi: filter out loopback traffic from myself
wifi: get rid of custom hextob() routine, use dec16(), avoid copies in parsekey()
wifi: learn target ip address from neighbor advertisements in dmat proxy
wifi: matt damon wifi bridging support
wifi: revert rate adoption divider, breaks arpunks wifi
wifi: use protocol constants from ip/ip.h and ip/ipv6.h for dmatproxy()
LIBRARIES
libauth: add auth_respondAI() function to get AuthInfo for mschap/mschapv2
libauth: fix out of bounds memory access in _parseattr()
libauth: remove auth_wep() function, and non-existing httpauth() declaration
libauth: simplify _attrfmt() using fmtprint() avoiding stack buffer
libc: constant time implementation for encode(2) routines, fix base32
libc: make encXchr()/decXchr() functions available
libflate: force non-empty huffman table in mkzprecode() for deflate
libmp: use constant time encode(2) routines instead of lookup tables
libndb: retire deprecated csgetval(), ndbgetval() and ndblookval() functions
libsec: avoid unneccesary memory copies and redundant code in x509
libsec: fix mistake: strnchr -> strchr
libsec: get rid of dummy data[1] in Bytes and Ints types (thanks pr)
libsec: implement SPKI fingerprinting for okCertificate()
libsec: remove asn1toDSApriv()
libauth: remove auth_wep.$O from mkfile
PROGRAMS
auth/dsa: remove asn12dsa, dsa2pub, dsa2ssh and dsagen
auth/asn1dump: include in mkfile
authsrv: fix chap, implement mschapv2 authentication, include MPPE secret in the ticket
aux/wpa: get rid of custom Hfmt() routine, just use encodefmt. use %E for mac addresses
disk/edisk: allow printing and readonly inspection of hybrid MBR/GPT disks (thanks aiju)
factotum: implement mschapv2 role=server authentication (for ppp)
factotum: remove legacy wep protocol
factotum: remove unused sshrsa.c
factotum: replace custom hex parsing code with dec16() avoding timing side channels
ip/dhcpd: remove old testing code
ip/ipconfig: add v6 deault route from router advertisements
ip/ipconfig: set on-link flag in router advertisement prefix info (fixes windows7)
ip/ipconfig: use 2000::/3 instead of ::/0 for v6 default route
ip/ipconfig: don’t put automatic link-local address configuration in /net/ndb
ip/ppp: mschapv2 support
ip/ppp: remove left over debug print
ip/pptpd: don’t mess with ipifc (handled by ppp), slay note gorup on exit
ip/tinc: handle and set ethertype for ipv6
ip/tinc: handle single byte noop and end-of-option-list tcp options in clampmss()
ip: make pkt interfaces unbind on close (from inferno)
ndb/cs: handle v4 only case for rudp
ndb/dns: fix leak in myaddr(), normalize ip strings, cleanup
rconnect: support -t timeout for aan like in drawterm; also rcpu, rexport/import
stats: show amount of reclaimable pages (add -r flag)
sysinfo: #c/swap -> #¶/swap
tlsclient: allow dumping the server’s certificate with new -d flag
tlsclient: remove X509dump() call, writes to fd 1
tlssrv: remove usage reference to lost auth/secretpem
upas/fs: deal with imap returning more uid’s than allocated from previus “messages” command
upas/fs: fix precedence bugs, compare digest pointer to nil
upas/fs: try to deal with nil mail body (can happen when fetch fails)
venti/conf: fix padding so we write multiple of sector size
venti: fix wrong channel element size for amd64 (thanks mycroftiv)
DOCUMENTATION
arch(3): document #P/realmodemem file
auth(8): auth/debug tests both dp9ik and p9sk1
bridge(3): clarify manpage, this is a layer2 bridge
factotum(4): document dp9ik, update protocol list
ipconfig(8): remove dhcp mention from -6 example
listen(8): add -a option to restrict announce address
ppp(8): remove BUGS section, client auth has been fixed.
vmx(1): fix virtio network bloomfilter
webfs(4): document -d and -D flags
OTHER
/lib/bullshit: +converged +blockchain
/sys/lib/dist/mkfile: fix cfg/plan9.ini dependency (only visible after binds)
/sys/lib/dist: split 9boot into 9bootproto, make .386.iso and .amd64.iso targets
inst: determine kernel for bootsetup from $bootfile and $cputype
fortunes: Subject: [oss-security] nvi denial of service
http://okturing.com/src/2115/body
9FRONT “SCREENLOCK GOODNIGHT” RELEASED (2017/12/04)
http://9front.org/iso/9front-6245.6153167c7bd4.iso.gz.torrent
http://9front.org/iso/9front-6245.6153167c7bd4.iso.gz
dash 1 manual
http://fqa.9front.org/dash1.screenlockgoodnight.pdf
NEW IN THIS RELEASE
this release features AES-NI and SSE2 chacha20 implementation for amd64 using the new sse-in-syscall support of the kernel. SHA2 got up to 40% faster for some archs by loop unrolling. a bunch of improvements for pc plan9 console (handles resize, pre-kernel boot messages in /dev/kmesg). qu7uux implemented framebuffer extending in aux/vga so he can get resolutions higher than the bios allowed before. aiju got openbsd 6.2 working on amd64 vmx. Ori_B imported new version of spin. tinc mesh peer-to-peer vpn client got written.
KERNEL AND DRIVERS
kernel: introduce per process FPU struct (PFPU) for more flexible machine specific fpu handling
kernel: make isaconfig() consistent, not inplace tokenizing the conf string
pc64: allow using the FPU in syscall and pagefault handlers
pc64: set ts flag before schedinit()
cga: capture cga console contents on boot, make sure cgapos is in range
devvga: properly handle physical screen size and panning
devvga: re-render text from kmesg after resize
igfx: allocate backing memory for framebuffer and hw cursor when not done by bios (from qu7uux)
LIBRARIES
libauth: replace proto=p9cr with new proto=dp9ik/p9sk1 role=login for auth_userpasswd()
libmach: fix format for 8db sse shift ops
libsec: AES-NI support for amd64
libsec: make includes consistent for sha2block*.c
libsec: optimize aesCBCencrypt()/aesCBCdecrypt()
libsec: unroll portable sha1block and sha2block functions
libsec: write optimized _chachablock() function for amd64 / sse2
COMPILERS AND DEBUGGERS
6l: fix typo in optab table for APSLLQ (0x7e -> 0x73)
PROGRAMS
6in4: add -m mtu option to specify outer MTU
audio/flacdec: add eof handler avoiding endless spinning on broken files (thanks deuteron)
auth/factotum: add role=login protocol variant to dp9ik/p9sk1
auth/login: add missing quotefmtinstall(), quote dom attribute
games/blit: update screen when display address changes (thanks aap)
inst/mounthjfs: use /dev/swap instead of #c/swap to determine memory size (thanks aap)
screenlock: some improvements
spin: Update to most recent version. (thanks Ori_B)
tinc: implement experimental mesh peer to peer VPN from http://www.tinc-vpn.org/
vmx: fix openbsd 6.2 amd64 !entrystate bug
DOCUMENTATION
errstr(2): add /sys/src/libc/9sys/rerrstr.c to SOURCE section
plan9.ini(8): 9boot(8) is not a DOS program, remove outdated BUGS section
tinc(8): spelling, thanks jpm
OTHER
/lib/rsc: It only works when we’re in the process of preparing a release.
9FRONT “SYNCHROPHASOTINC” RELEASED (2017/11/01)
http://9front.org/iso/9front-6204.09e34a98b1e5.iso.gz.torrent
http://9front.org/iso/9front-6204.09e34a98b1e5.iso.gz
dash 1 manual
http://fqa.9front.org/dash1.synchrophasotinc.pdf
KERNEL AND DRIVERS
kernel: get rid of 36 bit Paerange mask in mtrr (supporting machines with more than 64GB of memory)
kernel: don’t tokenize inplace in isaconfig() to make /dev/reboot work
kernel: introduce devswap #¶ to serve /dev/swap and handle swapfile encryption
pc64: add ether82598 driver to configuration
devfs: rewrite cryptio()
ether82598: support for T540-T1, use physical addresses for isaconf port
sdnvme: identify namespace list fails on intel ssd, just assume nsid=[1]
xhci: do bounds checking in capability walking, check if controller vanished on init (thunderbolt unplug)
LIBRARIES
libauthsrv: preserve readcons() error message from read() error
libc: cleanup atexit and put exits() in its own compilation unit
libc: wunlock() part 2
libc: improve alignment of QLp structure on amd64, cosmetics
libsec: add AES CFB and AES OFB stream ciphers
libsec: allow \r\n terminated lines in decodePEM()
libsec: export asn1encodedigest(), asn1encodeRSApub(), asn1toRSApub(), pkcs1padbuf() and pkcs1unpadbuf()
libsec: make sectorNumber argument for aes_xts routines uvlong
libsec: fix the (ape) build, bring ape libsec.h in sync with plan9 version
libsec: rewrite aex_xts_encrypt()/aes_xts_decrypt()
PROGRAMS
aux/wpa: prevent PTK re-installation attack by replaying AP retransmits
cwfs: use /dev/swap instead of #c/swap to determine memory size
netaudit: check for fs=
hg: disable tag caching, allows accessing hg repo from dump
hgwebfs: simplify retry loop construction
ndb/cs: icmp only supports version 4 addresses, icmpv6 only version 6 addresses
rsa: add auth/rsa2asn1, check write error in auth/rsa2x509 and auth/rsa2pub, document in rsa(8)
ssh: remove extern declarations for pkcs1padbuf() and asn1encodedigest() (now in libsec.h)
sshfs: use mtime for qid.vers, fix wstat without name change, fix wstat memory leak
upas/fs: fix putcache(), sub-part messages should never go into the lru
upas/fs: replace fixed cache table with lru linked list
upas/smtpd: don’t call syslog() from the note handler, this can deadlock
vt: block when sending input to host (fixes truncated paste)
winwatch: show windows with empty labels (thanks jpm)
DOCUMENTATION
aes(2): document aes_xts_encrypt() and aes_xts_decrypt() functions
swap(3): document permissions and encryption behaviour, reference to memory(8)
OTHER
9boot: limit read size to 4K for efi simple file system protocol
COMING SOON
tinc(8): mash peer to peer VPN
9FRONT “SOLARIS ECLIPSE” RELEASED (2017/09/11)
http://9front.org/iso/9front-6165.2a79d5dddf41.iso.gz.torrent
http://9front.org/iso/9front-6165.2a79d5dddf41.iso.gz
dash 1 manual
http://fqa.9front.org/dash1.solariseclipse.pdf
NEW IN THIS RELEASE
multiple vm’s in vmx(1)
window size changes with ssh(1) and vt(1)
games/wadfs
KERNEL AND DRIVERS
devdup: remove useless OCEXEC check, handled by namec()
devsegment: handle ORCLOSE on segment directory correctly, fix wrong qid, missing COPEN flag for segmentcreate()
devusb: double READSTR buffer size to 8000 bytes for devusb
devusb: superspeed bandwidth allocation handled by controller, skip usbload() calculation
devvmx: lilu dallas multivm
devvmx: call vmxshutdown from reboot() function manually
devvmx: more efficient data structure for memory map; simplified (more reliable) step function
audiohda: Intel Sunrise Point-H support (thanks sam-d)
audiohda: add pci id for ICH10 (thanks echoline)
audiohda: add pci id for Intel 9 Series
audiohda: add pci id for nvidia GM204
ether82563: add more pci ids for i210 and i354 from 9atom / openbsd
ether82563: make the ethernet of thinkpad p50 work (thanks sam-d)
ether82563: support for i211 with iNVM. (thanks mfny and brennan for testing)
etheriwl: add pci id for Intel Centrino Advanced-N 6200 on x201 tablet (thanks arpunk)
igfx: add did for x220
igfx: fix cdclk and dpll settings for dual channel lvds on sandybridge
igfx: fix sandybridge fdi link training bits and ordering
sdiahci: Intel 200 Series Chipset Family PCH support (thanks aiju)
sdnvme: pass 0 instead of 0xffffffff as NSID for identify controller and create completion/submission queue commands (thanks Ori_B)
usbxhci: abandon multiple requests per endpoint, cleanup
usbxhci: handle out of memory in controller initialization
usbxhci: implement recovery from host controller errors
nusb/disk: add a 100ms sleep after ums reset, remove unused note handler, cleanup
COMPILERS AND DEBUGGERS
libmach: support disassembling from memory
PROGRAMS
awk: allow string as exit status
awk: don’t get into a infinite loop with eof while in string (thanks BurnZeZ)
cwfs: -n always overrides postservice() name, no matter if config mode changes service
doom: add games/wadfs
doom: clean up temporary mus files
ssh: issue “winchon” ctl request to /dev/consctl to get interrupt on window size change from vt(1)
sshfs: fork ssh in its own namespace so it wont keep the mountpoint open
sshfs: start sendproc and recvproc in the same notegroup as the fs process so theadexitsall() works on sshfs: ending.
sysinfo: only dump #r/nvram on amd64,386
sysinfo: run aux/icanhasvmx with verbose flag
vmx: lilu dallas multivm
vmx: VGA framebuffer should be normal memory
vmx: don’t realloc virtio queues – breaks pointers
vmx: fixed code that assumed uintptr==uvlong
vmx: memory map improvements, x86 simulator for MMIO
vmx: allocate sticky instead of more expensive fixed segment
vmx: fix hlt idle problem
vmx: pass multiboot framebuffer info to kernel
vt: block selection mode for snarf
vt: fix silly bug causing characters be drawn one at a time
vt: implement /dev/cons and /dev/consctl as a fileserver, winch, incremental redraw
vt: turn off nl -> nl+cr translation default in raw mode, don’t scroll more than screen height
OTHER
booting: rename pcf kernel to pc, remove pcf, pccpuf, pccpu64 kernels, update documentation
inst: don’t hardcode /net/ether0, might have usb ethernet
inst: get rid of halt, just run fshalt in finish directly
inst: get rid of ppp configuration
inst: post newfs fileservers under /srv/$fstype.newfs to avoid conflict with preexisting local filesystem
DOCUMENTATION
vmx(3): document changes to devvmx interface
9FRONT “FULL SPEED (SINCE 1.0)” RELEASED (2017/08/01)
http://9front.org/iso/9front-6111.cef8f3fb17e6.iso.gz.torrent
http://9front.org/iso/9front-6111.cef8f3fb17e6.iso.gz
dash 1 manual
http://fqa.9front.org/dash1.fullspeed.pdf
NEW IN THIS RELEASE
debug watchpoints
multiboot framebuffer
usb3 support (xhci)
vmx(1), vmx(3)
KERNEL AND DRIVERS
kernel: add support for sticky segments (cached, preallocated, never paged)
kernel: fix bounds check in screenputc()
kernel: pass bootargs also in multiboot command line, retire the bootline mechanism to pass arguments to /boot/boot
pc kernel: mkfile target usbehcipc.$O needs ../port/usb.h, add usbxhci.$O
pc, pc64: adapt devvmx to ork on pc64
pc, pc64: enable usbxhci in the configuration
pc, pc64: support for multiboot framebuffer, common bootargs and multiboot code
pc, pc64: debugexc: ignore exception if in kernel mode and can’t get hold of up->debug
pc, pc64: keep shadow copy of DR7 in Mach and use that to check whether we need to reset DR7 in procsave(); remove superfluous reset of DR7 in mmurelease()
pc, pc64: reset DR7 in mmurelease
pc: add vmx device
zynq: simplify initcode stack setup (just do it in init0 when the stack is mapped)
devusb: fix wrong pollival calculation in setmaxpkt()
devvmx: add support for SG_STICKY segments
devvmx: add support for extrap command to configure halting on exceptions
devvmx: error handling in clearmeminfo
devvmx: fix CR0/CR4 readout; also don’t exit on PAUSE instruction
devvmx: remember segment names and free segments properly
devvmx: support debug registers; simplify assembly
devvmx: support pat and efer registers
usbehci: fix crash in cancelisoio() for highspeed device due to wrong pollival
usbohci, usbehci, usbxhci: save mmio base address in ctlr, cant PADDR() on 386…
usbohci, usbuhci, usbehci: use physical address of registers for matching controllers and printing
usbxhci: basic iso write support (usb soundcard playback)
usbxhci: better approach to unstalling endpoint and fixup td ring
usbxhci: commit work in progress xhci driver, no config yet
usbxhci: experimental usb3 support
usbxhci: handle changing maxpkt on control endpoint by reevaluating endpoint context
usbxhci: implement command timeouts and aborts, serialize unstall
usbxhci: implement controller handoff, ignore usb3.0 ports, honor pollival for isochronous endpoints
usbxhci: provide shutdown function to halt the controller
usbxhci: simplify xecp()
usbxhci: use physical register addresses for matcing controllers and printing. simplify endpoint slot initialization.
aux/vga: simplify vesa by adding rgbmask2chan() function
nusb/usbd: create endpoint files for conf #1, usb3 preparation
nusb/usbd: support for usb3 hubs
LIBRARIES
libfis: fix inverted CHS bit
libregexp: fix lexer so it doesnt move past the string when it gets a \ escape
COMPILERS AND DEBUGGERS
8l, 6l: get .frame offset right undoing $-4 hack
acid(1), proc(3): document watchpoints
acid: add getfields() builtin
acid: always create proclist variable
acid: provide hooks ‘procattach’ and ‘dying’
acid: watchpoint support
ktrace: handle amd64 stacktraces correctly
PROGRAMS
add aux/icanhasvmx
aux/cpuid: decode family and model bitfields
auth/factotum: complete p9any v.2 server protocol, but don’t enable it.
hpost: delimit @filenames by newline so files with whitespace aren’t mangled
hpost: fix field content mangling when newlines are present
upas/fs: handle plumbing for new messages for concurrent index updates
vmx: I/O string instructions, incomplete support for IDE disks, misc fixes
vmx: add support for (so far) crude 9p debugging fs; add gdb stub; clean up linux gdt code
vmx: clean up region handling code; changes to support amd64
vmx: don’t zero all memory, don’t abandon uart on eof, sleep before transmitting uart data
vmx: fix ‘-v text’
vmx: fix non-vesa framebuffer mode
vmx: fix translateflat on 64-bit
vmx: i8042: translation changes reported keyboard id
vmx: linux kernel loading; PIT fixes to support linux; support VGA 0x3D4 word writes; support sending virtio ethernet packets to a file and prepending snoopy headers
vmx: obsdfb: check if curmode is nil
vmx: round up frame buffer size to whole pages, ignore vga access in linear framebuffer, tell openbsd about framebuffer
vmx: support debug instructions
vmx: VESA support and other misc I/O improvements
vmx: complete cmos
vmx: fix build on non-x86 architectures (switch vlong)
vmx: fix pic ‘specific eoi’ bug, fix kbd bug, add fake IDE and floppy controller
vmx: fix virtio bugs
vmx: implement virtio reset
vmx: improve PIT/keyboard support
vmx: obsd: load kernel symbol table and allow setting root device
vmx: openbsd support: parse more options
vmx: remove debugging print
vmx: slightly more vga support
vmx: support EFER and PAT access
vmx: support loading openbsd kernels
xd: use new bio magic to make -u more efficient
OTHER
/lib/{rob, rsc, theo}: Yup.
remove /sys/lib/##redacted##.##redacted## (thanks ##redacted##)
DOCUMENTATION
authsrv(6): don’t say old p9any isnt in use anymore…
pc(1) clarification
print(2): clean up vlong flag description
rc(1): catch up with a change made long before 9front
segment(3): document sticky segment type
vmx(1), vmx(3): add vmx documentation
9FRONT “MARITIME ENGINEERING STANDARDS” RELEASED (2017/05/04)
http://9front.org/iso/9front-5966.df2c352ae695.iso.gz.torrent
http://9front.org/iso/9front-5966.df2c352ae695.iso.gz
dash 1 manual
http://fqa.9front.org/dash1.maritimeengineeringstandards.pdf
KERNEL AND DRIVERS
kernel: avoid waserror() botch in devwalk (from drawterm, thanks aiju)
kernel: fix memory leak in checkpagerefs() debug function (thanks aiju)
kernel: fix rewinding in directories with pread() offset
kernel: fix twakeup()/timerdel() race condition
pc: handle PCMP and RSD being in low (kaddr) or reserved (vmap) memory
pc: fix memory leak and add clog() function
pc64: state mp.h dependency for archacpi.$O
devdraw: ignore drawdebug command
devsd: handle case where theres no ifc->enable() function
devsd: check return value of ifc->enable(), don’t leak unit name/user strings
devvga: include hwgc in vgactl file
devvga: remove unused copy of checkport() function
sdvirtio: return 1 for success in vioenable()/viodisable()
sdnvme: NVMe controller driver (work in progress)
sdnvme: don’t write completion queue doorbell register when nothing has been processed
sdnvme: enable in pcf, pccpuf, pc64 kernel configuration
LIBRARIES
lib9p: allow rewinding in 9pfile directories
libavl: fix documentation
libavl: lookup can return the closest match
libdraw: get rid of _drawdebug variable
libmemdraw/libmemlayer: get rid of drawdebug prints
libmemdraw: get rid of kernel iprint() emulation
libregexp: miscellaneous little cleanups
libsec: sha256 support for thumbprint files, use it in ssh as well
libsec/tlshand: fix ECDHE and DHE for SSLv3
libsec/tlshand: fix mpint to bytes conversion, reorganize send/recv buffer, check for overflow in msgSend()
libsec/tlshand: simplify tlsReadN()
COMPILERS AND DEBUGGERS
5e: fix special bitshift and rotations
[012568kqv]a: correctly lex full range of integers in the assemblers (thanks Ori_B)
fix yacc bug (found by dan cross)
PROGRAMS
aux/wpa: go to background when not prompting, handle open networks
chgrp: remove unused function declaration (thanks archeus)
cwfs: allow “none” user to rename files
factotum: append public rsa encyption exponent after the modulus
file: recognise Xilinx bitstreams
fortune: avoid buffer overflow for lines >= 2K, make sure index has at least one entry, use nrand()/ntruerand() for uniform distribution
games/blit: mkfile: install into /bin/games
games/blit: always show top-left corner; add tony kaku’s -m flag
games/blit: remove strange debugging line
games/galaxy: fix exit race condition by pausing the galaxy before threadexitsall
games/galaxy: parallelize gravitational force calculations
games/md: copy updated cpu.c from blit
hjfs: Add comment to change the OFF size to 8 when given the chance
hjfs: Clear all refs to zero when reaming.
hjfs: Fix bugs in ref count scan check. Enable as a console command (caveat: command arguments will change as I implement more functionality)
hjfs: add simple scan check of directory entry blocks
hjfs: avoid 8c “non-interruptable temporary” warning
hjfs: check: check a block if its ref count is not zero. Also check all the ref counts of blocks of a directory and clean up messages
hjfs: disable hjfs check until more functionality is complete
hjfs: fix broken dprint
hjfs: improve error messaging around blocks that are not found
hjfs: merge start of hjfs check implementation
hjfs: simplify dprinting
hjfs: start implementation of checking a directory
ip/torrent: avoid requesting same chunks
ip/torrent: avoid peerid collision using truerand() instead of time(0)
ip/torrent: exit immidiately when file is complete after verification and not being in seed mode
ndb/dns: double Maxretries for long cname redirection chains
nusb/lib: make usbcmd() return value symmetic; returning size of data phase (if any) (thanks aiju)
nusb/ptp: treat any assocation as a directory
nusb/serial: pl2303: better error handling
replica: use libavl for avl tree implementation
rsa2ssh: drop support for version 1 key format
ssh: weekend project
ssh: actually handle flow control and channel id’s
ssh: add “none” method to find out list of acceptable methods
ssh: add support for subsystems
ssh: cleanup debug messages
ssh: close the channel when vt hangs up
ssh: do not try authentication methods that we know are not possible
ssh: document thumbfile options
ssh: fix locking, and key reexchange handling
ssh: fix typo
ssh: implement password and keyboard-interactive authentication methods
ssh: implement primitive hostkey verification
ssh: increase initial window size for better throughput
ssh: loop keyboard-interactive on failure
ssh: make number of retries configurable
ssh: print the whole ssh-rsa hostkey in base64 when thumb check fails
sshfs: add -r and -M options
sshfs: check correctly for directory bits; calculate parent directory correctly
sshfs: don’t cache directory contents
sshfs: don’t crash when no /etc/password file could be read on the remote side
sshfs: fix -r / retulting in “//foo” paths, memory leaks, use estrdup9p()
sshfs: look up uid/gid from /etc/^(passwd group)
sshfs: remove debug print
sshfs: reset SReq->reqid field to fix double-free of request ids
upas/common: deliver mail to mdir as .tmp file and rename after it has been fully written
upas/fs: don’t abort on malformed unix header
upas/fs: fix dir comparsion and skip directories in mdir, avoid stat
upas/fs: fix sync condition
upas/fs: fix warning about unused Err: label
upas/fs: make use of Maxmsg consistent
upas/fs: remove imap lastread debounding
upas/fs: simplify imap4read()
upas/send: use openfolder() to deliver mail to avoid code duplication
upas/smtp: Revert smtp dial string behavior to match that of old upas (thanks sam-d)
upas/smtp: fix cram-md5 auth, simplify doauth(), check varargs for dBprint()
upas/smtp: generate 128-bit random message id (was 32 bit), use dBprint(), cleanup unused variables
vt: convert from event to threads
vt: cursoron, don’t resize winow when replying history
vt: fix background drawing
vt: fix xterm cursor keys
vt: handle application/normal mode (really fixes cursor keys)
vt: handle insert/delete/home/end keys for vt220/xterm
vt: handle nocolor flag and reversed background colors
vt: handle underline attribute
vt: implement snarf support
vt: increase history buffer to 64K runes
vt: send interrupt on exit, open logfile OCEXEC, run host after environment got exported, send rest of arguments to host
OTHER
change cpurc to look for service folder in /cfg/$sysname and /cfg/default
disable all services except 17019, 17020 by default
dist/ndb: move sources auth server to ndb/common, list root dns servers in ndb/local as a fallback
inst/configether: in manual network configuration, ask for dns server
/lib/rob, /lib/theo: I don’t think so.
DOCUMENTATION
9p(2): fix typo in manpage
add blit(1) manpage
plumb(2): Fix typo in description of Plumbdelattr (thanks sam-d)
webfs(4): timeout is in milliseconds not seconds (thanks sam-d)
vt(1): the “send” menu became “paste”
ssh(1): add $home/lib/thumbfile to FILE section
ssh(1): add bugs section about host not being authenticated
ssh(1): initial documentation, needs examples for authentication
ssh(1): refer to thumbprint(6) for the sshthumbs file format
rsa(8): fix description of rsa2ssh (now, ssh2 format only)
add sshfs(4) manpage
sshfs(4): fix bad cross reference
THANKS FOR COMING IN
9FRONT “полезные дураки” RELEASED (2017/03/19)
http://9front.org/iso/9front-5817.cb352df7ccf2.iso.gz.torrent
http://9front.org/iso/9front-5817.cb352df7ccf2.iso.gz
dash 1 manual
http://fqa.9front.org/dash1.usefulidiots.pdf
KERNEL AND DRIVERS
ether8169: add support for RTL8106E (thanks _potato)
ether82563: work arround phyprobe() failing on 82579LM without cable plugged in (thanks mischief)
pc, pc64: bump Qmax in devarch
pc, pc64: get rid of active.Lock and active.thunderbirdsargo
pc, pc64: avoid AP’s spinning in syncclock(), don’t wait for thunderbirdsargo
pc, pc64: assume tsc and lapic clock rate on application processors is the same as on bootrap processor
pc, pc64: give cpu servers as many image cache strctures as processes
pc: don’t use active.thunderbirdsargo in vunmap() tlb flush code
pc64: enable cputemp driver
teg2: fix format string warning in mmu.c
devmouse: refactor screen blanking logic
LIBRARIES
libaml: make heap size field int, implement BankField definitions
COMPILERS AND DEBUGGERS
5l,6l,8l,kl,ql,vl: allow duplicate GLOBAL symbols (from Ori Bernstein)
PROGRAMS
auth/asaudit: check factotum key ; netaudit: mention asaudit NEW
auth/asaudit: missing \n in print
auth/asaudit: quote user and dom attributes in factotum key
auth/keyfs: support -r flag to mount read-only
auth/readnvram: also print dp9ik key
authsrv: more useful error reporting
authsrv: don’t hash in hostowner key for keyseed
authsrv: salt the keyseed from /adm/keyseed file
authsrv: handle short reads in initkeyseed()
authsrv: fix mkkey() dummy key generation (thanks aiju)
authsrv: get rid of needreply parameter by changing vnc protocol handler
cwfs: handle DMTMP flag in create
games/doom: music support (thanks qu7uux)
games/doom: avoid /dev/cursor fd leak into music process
games/doom: don’t spawn midi process when opening /dev/audio failed (thanks qwx)
games/galaxy: Change button 2 to reposition the galaxy, remove “move” from the button 3 menu
games/galaxy: avoid unnecessary calculations
games/galaxy: fix creation of new bodies
games/galaxy: fix zoom
games/galaxy: new mouse behavior
games/galaxy: simplify zoom loop
games/galaxy: tweak pausing behavior
games/midi: ignore bends, allow piping from stdin and to stdout, write in chunks from within sample loop (thanks qu7uux)
games/mus: midi converter (by qu7uux)
gs: fix dangleing pointer crash with “lock” (ghostscript Bug 697204)
gs: check for sufficient params in .sethalftone5
gs: validate parameter is dict in .initialize_dsc_parse
hgwebfs: keep trying as long as we get needkey response
hgwebfs: rewind data before pushing
ip/ipconfig: don’t null terminate the dhcp string options.
play, file: recognize midi and mus audio
tapefs: handle more cpio formats (thanks qrstuv)
upas: merging erik quanstros nupas
upas/fs: fix memory leaks in tls code, handle tls in a common wraptls() function
upas/fs: tls sni support for pop3/imap
upas/fs: remove planb mbox code
upas/fs: getting rid of the fine-grain locking…
upas/fs: remove unused segbrk memory allocator
upas/imap4d: change listener from ip/imap4d to upas/imap4d
upas/imap4d: simplify auth with encodefmt (backport from 9front)
upas/spf: delete okcidr(); always trust spf records
DOCUMENTATION
vga(3): complete list of vga controllers and software cursors
mus(1): fix manpage references
send(8): document new reject behaviour with -r flag
diskparts(8), prep(8): add edisk in NAME section
games(1): document games/midi -c arguments
add mdir(6), splitmbox(8) and update upasfs(4)
add redact(1)
authsrv(6): fix typo “ther” -> “their” (thanks aiju)
OTHER
update /lib/legal/NOTICE
inst: make command window not overlap stats window in glendas riostart
cdproto: make mdir for glenda, various cleanups
9front “FOR IMMEDIATE RELEASE” Released (2017/02/21)
http://9front.org/iso/9front-5736.d347c9119bb1.iso.gz.torrent
http://9front.org/iso/9front-5736.d347c9119bb1.iso.gz
PRAISE FOR 9FRONT’S BOLD ACTION
9front “Is Coming Out As A Winner On Many Issues…” – SD Times
rkrishnan, Cisco Systems: “I am extremely sorry to see plan9 die a silent death.” (rkrishnan.org, 10/25/13)
Rod Person, VPN Cryptographer: “Does 9front have an email app and how usable is mothra, I’m guessing not ebay or youtube?” (daemonforums.org, 6/25/15)
Christoph Reiter, German: “Wer verwendet 9Front eigentlich? Die Antwort lautet: fast niemand.” (golem.de, 8/3/16)
seesomesense, Hacker News: “Plan 9 was probably the finest operating system in the world.” (HN, 11/16)
pranomostro, Redditor: “The future of plan9 is pretty bleak imho.” (reddit.com, 1/17)
dash 1 manual
http://fqa.9front.org/dash1.forimmediaterelease.pdf
kernel and drivers
kernel: add “close” ctl message for tcp connection to gracefully hang up a connection without a tcp reset (used by go)
kernel: make the mntcache robust against fileserver like fossil that do not change the qid.vers on wstat
pc/pc64: get rid of timerset(0) case, was used with “i8253set off” ctl
sgi: change definition of tas() to take void* like the rest
sgi: cleanup timer code
sgi: get rid of timerset(0) case
ether82563: support for i219 (tested on t460p, thanks aiju)
etheriwl: add support for Centrino Advanced-N 6030, 6235 (thanks khm, openbsd)
vgaigfx: enable softscreen by default
wifi: timestamps in debug print, flush queue on deassoc, shorter roam timeout, timeout in blocked state, fix essid seprint race
libraries
libmp: avoid temporary buffer allocation in mprand()
libmp: fix mpmod() aliasing bug when n == r and x < 0 (thanks aiju, mischief)
libregexp: simplify regular expression vm implementation
libregexp: improve the transition to next available thread, instruction, and generation
libregexp: fix assert check for compile1 instruction count
libsec: replace des based X9.17 genrandom() with chacha random number generator
libsec: implement extended 192-bit nonce xchacha variant and hchacha function
libsec: avoid temp variables in chacha/salsa ENCRYPT() macro
libsec: have rsagen() always produce postive !dk to avoid confusion
libsec: need PKCS#9 “Extension Request” attribute (rsareq())
libsec: check if modulus is too small for message in pkcs1padbuf()
libsec: fix mkbigint(), asn.1 uses two’s compement signed representation
libsec: handle signed asn.1 bigint to mpint conversion for x509
libsec: revert asn1mpint(), rewrite rsa signature validation, cleanups
libsec: make X509toECpub() return CN name like X509toRSApub()
libsec: zero name buffer in X509toECpub()
compilers and debuggers
6c, 8c: fix “DI botch” evacuating DI/SI/CX registers to “.save” variables
6c: reverse register allocation order to avoid having to spill AX,DX and CX
programs
aan: check negative message size in header
aan: use unsigned message counters, reject repeated acks, cleanup debug prints
aan: remove fcallfmt
audio/flacdec: continue after decode error (thanks deuteron)
auth/factotum: fix memory leak in findkey()
auth/factotum: support sha256 algorithm in rsa pkcs#1 signing
auth/keyfs, auth/secstore, auth/secuser: use ulong for time
aux/data2s: compress output
aux/wpa: dont send initial “start” message, faster polling interval waiting for connection
cfs: fix cfsctl interaction with mount cache (mount -C flag)
cwfs: fix cwcmd startdump
cwfs: handle worm exhaustion more gracefully
fplot: parse negative numbers in argument to -r option (thanks qu7uux)
fplot: fix zoom egetrect check (thanks qu7uux)
games/galaxy: add n-body simulator
games/galaxy: fix crash on write to closed display
games/gb: fix typo in the routine to load timer data (thanks qwx)
games/gb: timer array should be unsigned (thanks qwx)
games/gb: fix bug that prevented timer data from being accessed (thanks qwx)
games/jukefs: fix realloc sizes (thanks mischief)
games/mix: Add Knuth MIX emulator/assembler
games/mix: fix STZ bug, print CMPA instruction
games/mix: implement Knuth’s specification for comments
inst/bootsetup: fix unformated esp check (thanks yellow_apple)
ip/gping: fix corruption due to Machine.last pointer not being maintained in pingclean(), cleanup unused stuff
ip/ipconfig: don’t write /net/ndb when getting config from ndb (-N)
ip/ipconfig: have to refresh /net/cs, /net/dns after ndbconfig even tho /net/ndb didnt got written
keyfs: print error message when reading /adm/keys fails
playlistfs: fix playc chan type (thanks mischief)
rcpu: use $cpu environment variable for host when not specified
rsagen: prefer 65537 as the default exponent when elen == 0, otherwise pick randomly
rx: remove ssh code
samterm: avoid flushimage when theres nothing new to flush
ssh: R.I.P.
documentation
auth(8): document authsrv -N flag
cpu(1), import(4): note deprecation and refer to rcpu(1)
ec(2): document ecencodepub(), ecdecodepub() and ecpubfree() and list all the curve parameter functions
ec(2), rsa(2): document X509toECpub(), X509ecdsaverify(), X509ecdsaverifydigest(), X509rsaverifydigest()
galaxy(1): terminate .EX sections with .EE
rsa(2): document rsafill()
srv(4), &c: remove ssh/sshsrv references
other
cdproto: explicitely create /$objtype/bin subdirectories for all archs
/sys/lib/plumb/basic: fix rule for audio files (thanks deuteron)
New 9front release “GZ” (2016/12/28)
http://9front.org/iso/9front-5641.6149f97a7801.iso.gz.torrent
http://9front.org/iso/9front-5641.6149f97a7801.iso.gz
dash 1 manual
http://fqa.9front.org/dash1.gz.pdf
kernel and drivers
kernel: avoid padblock copying for devtls/devssl/esp, cleanup debugging
kernel: fix missing ; in panic() call
omap: fix format string warning %d for long
omap: cleanup mouse.c, just a dummy for mousectl()
pc: pat write combinding support for 386 kernel, honor cpuid bits
pc: modify cpu0 page tables in patwc() instead of current cpu ones
pc64: check if vmap() range fits in VMAPLEN window, remove unneeded vmapsync(), rename fault386() to faultamd64()
pc64: implement simple write combining for framebuffers with the PAT
xen: fix build by adding missing rdrandbuf() function
archacpi: fix format string warning on amd64
gre: check nil for pullupblock()
ip: always pass a single block to Medium.bwrite(), avoid concatblock() calls in Dev.bwrite()
ip: remove nil checks for allocb() and padblock()
ip: fix typo (rfc -> ifc)
ip: get rid of update_mtucache() and restrict_mtu() prototypes
ip/nullmedium: free passed block in nullbwrite()
ip/pktmedium: fix wrong hsize, theres no ethernet header on packet media
ip/pktmedium: no mintu, no maclen… thi is ip packets
ip/tcp: remove useless nil checks for padblock() and allocb() return value
ip/tcp: only calculae mss from interface mtu when directly reachable for v6
ip/tcp: never raise the mss over the link mtu < 1280 for v6
qio: big cleanup of qio functions
qio: fix comments, fix qiwrite() on close queue, remove debug setmalloctag() call in qwrite()
qio: implement concatblock() with pullupblock()
qio: get rid of unused qcopycnt debug variable
qio: make readblist() offset of type ulong as the rest
devbridge: various bugfixes and improvements from charles forsyth
devbridge: simplify etherwrite() as we dont deal with block lists
devcons: simplify putstrn0()
devloopback: simplify loopoput()
devmnt: avoid memory copies of I/O rpc buffer by using bwrite()
devmouse: various bugfixes, simplify
devmouse: change msec argument of *mousetrack() to ulong
devmouse: remove unused static map[] array
devtls: remove unused get32() function
audioac97: support for ICH4-ICH7 based cards with memory mapped registers (thanks echoline)
libraries
libauth: don’t attempt to mount when opening mount srv file fails in nsop()
libavl: put debug functions back
libc: move calloc() into its own compilation unit
libmemdraw: remove unused static drawbuf variables and ptrfn() declaration
libmemdraw: cleanup fillpoly(), remove unused fillcolor hack
libmp: mpxor: sign should be 1/-1, not 0/-1
libregexp: put debug functions back
ape/libsec, libsec: add secp384r1 curve parameters for tls
libsec: remove unused aes_setupDec
libsec: remove unused get32() function
libstdio: fix sclose() buffer overrun when terminating string, realloc() error handling (thanks porlock)
compilers and debuggers
8c: fix double compiling FNX complex lvalue in cgen64()
acid: fix y.tab.h dependency for proc.$O
programs
aan: didn’t ask about sendcommand
auth/as, auth/none, auth/newns: consistent handling of command arguments, cleanup
aux/acpi: make it stats(8)-friendly
awk: improve random number generation
clock: remove unused variable
cryptsetup: fix bugs and cleanup
nusb/ether: support for “bridge” ctl message
page: remove unused variables
ramfs: remove unused variable
rcpu: avoid filedescriptor conflict with <{} (thanks mycroftiv)
stats: alternatively read battery and temp from aux/acpi
tar: remove unused variable
vncs: update devmouse code
vncs: don’t prompt for password on auth_respond() failure
winwatch: middle mouse button click also prompts for label
winwatch: no more ‘l’ key labeling
winwatch: put previous label contents in edit buffer for relabling
documentation
alv(2): new avl implementation
srv(4): add SOURCE for srvtls
other
cdproto: explicitely create /$objtype/bin subdirectories for all archs
tcp17019: make service proto and netdir arguments optional (for aux/listen1)
New 9front release “LOOKS GREAT IN MOTHRA” (2016/10/27)
dash 1
kernel and drivers
devcap: timeout capabilities after a minute, fix memory leak, paranoia
devcons: remove /dev/reboot “halt” command…
devproc: do unsigned subtraction to get MACHP(0)->ticks - up->times[TReal] delta
devip: simplify ipbwrite() by using retun value of qbwrite()
ip/*: simplify code as packblock() and concatblock() will never error
ip/icmp: only reply to echo request when directed to us and source is unicast
kernel: tsemacquire() use MACHP(0)->ticks for time delta
kernel: make sure procalarm() remaining time doesnt become negative
kernel: use tk2ms() instead of TK2MS macro for process time conversion
kernel: always do unsigned subtractions for m->ticks delta for updatecpu() and rebalance(), handle ticks wrap arround in hzsched()
kernel: fix type for utime/stime in pexit(), fix debug format strings
kernel: make randomread() fault reentrant
kernel: rekey chacha state on each randomread() invocation
kernel: replace various custom random iv buffer filling functions with calls to prng()
kernel: xoroshiro128+ generator for rand()/nrand()
etherzynq: implement promisc mode and multicast filter support
nusb/ether: experimental pomisc mode and multicast support for smsc and asix
nusb/ether: multicast and promisc support for rtl8150 (url)
nusb/ether: promisc and multicast support for admtek pegasus (aue)
nusb/kb: set usage to 0 (undefined) for items exceeding usage list
nusb/lib: fix wrong endpoint id when openep() finds already existing endpoint file
scram: disable GPEs before entering S5. x200s shuts down properly now
pc/archacpi: provide generic #P/acpimem file
aux/acpi: batteries and CPU temp reading so far
libraries
ape: bring strtod() in line with plan9’s libc version
ape: fix format clash, %z is for size_t (which is a long currently), not pointer sized
lib9p: limit the number of srv processes kept arround 8
libc: dont use floating point for portable umuldiv(), use 64 bit uvlong
libdraw: avoid dropping queued button change mouse events in emouse()
programs
auth/factotum: bound the number of srv processes to 16, error the 9p rpc when it is over limit
cpu: quote remaining remote command arguments, don’t syslog on missing /mnt/term/dev/cpunote file
gif: just read and decode the first image when -9 or -c flag is specified
ipv6on: get network device from $netdir/ipifc/*/status
iwhois: make -n work, add .org, and a couple minor changes
mothra: avoid flushimage() calls, event() will implicitely flush
mpc: remove unused yylval type
rio: fix onscreen(), improved bandsize()
sam: make current filename available to shell commands in $% (thanks aiju)
scat: hjdicks for amd64
webfs: don’t use cached connections when posting
documentation
authsrv(2): update Nvrsafe structure to include aesmachkey
ip(3): spelling, update description of /net/ipifc/*/status format
pc(1): _ handling in numbers was broken at some point; restore documented behaviour
pc(1): add nsa() command
pc(1): add pb (thanks, BurnZeZ); add bit numbering
pc(1): bugfix: allow setting output base to 0 (thanks, deuteron)
pc(1): if the input base is not 10, print the 0d prefix before decimal numbers; this way, all output is always valid input (for the current mode)
other
fortunes: does that me a dipshit
New 9front release “THINK ABOUT THE FUTURE” (2016/09/04)
dash 1
notes
This release adds aiju’s games/timmy, a physics simulation game and a bignum calculator for programmers called pc.
On the system side, we got a fast portable /dev/random now which is based on the chacha stream cipher - carefully seeded once at boot time. Cipher states for the rng and other kernel crypto services is now kept in a separate memory pool which devproc will prohibit access to and which automatically destroys the data on free.
kernel
acpi: ADR and BBN might be methods, so use amleval() to evaluate the value
aml: define amlintmask and set it according to DSDT revision (64bit / 32bit)
aml: implement ToInteger() and Match() instructions
devmnt: fix mistake in mntrahread()
devsdp: keep cipher states in secret memory
devssl: allocate cipher states in secret memory
devtls, devssl: make sure channel has ORDWR mode and is not a mount chan on fdtochan()
devtls: allocate cipher states in secret memory
ether8169: fix wrong mbps setting (from qu7uux)
etheriwl: add pcid 0x0082 for Intel Centrino Advanced-N 6205 variant
ip/esp: allocate cipher states in secret memory
ip/il: dont attept to connect over IPv6, IL only supports IPv4 packets
kernel: add secalloc() and secfree() functions for secret memory allocation
kernel: dont pprint() into 9p channels
kernel: more (arm) compiler friendly mul64fract()
kernel: switch to fast portable chacha based seed-once random number generator
swap: make sure swap chan has ORDWR mode on fdtochan()
wifi: allocate cipher states in secret memory, do AESstate key setup once
libraries
ape/libap: add d_stat struct in dirent struct allowing the avoidance of stats
ape/libauth: add PASSWDLEN constant to compile passtokey.c from native libauthsrv (thanks lawler)
libauth: fix mount file-descriptor leak in auth_chuid()
libauthsrv: ANAMELEN -> PASSWDLEN
libauthsrv: export common readcons() routine and introduce PASSWDLEN constant
libc: add poolisoverlap() and definitions for Pool *secrmem
libc: native addv() and subv() routines for arm
libcontrol: primitive text entry cut and paste with mouse
libflate: add bounds checking on decode array, add sanity checks in hufftab()
libframe: consistent use of nil vs. 0
libmach: fix RORREG, right shift with shift count 0 means >>32
libmp: allow passing nil to v,x,y results of mpextendedgcd(), simplify mpinvert()
libmp: fix mpnot and add mpasr
libmp: fix mptov and mptouv
libmp: mpdiv: negative divisor has to flip sign of quotient
libmp: mpnrand(), what was i THINKING
libmp: mptrunc: don’t write to r->p[r->top]
libmp: mptrunc: normalize after mpassign to handle the case b==r
libmp: remove unused mpeuclid.c
libmp: strtomp: fix mpbits() call in octal code
libmp: strtomp: update the returned char* even if there were no characters parsed
libmp: timingsafe sign flip for small power-of-two negative divisor for mpdiv()
libsec: add scrypt password based key derivation function
libsec: chacha: calculate rounds in separate function (helps registerizer), get rid of unrolled code
compiler
5a: ROR instruction 5a: assemble constant >>0 right shifts as <<0 (no shift), allow >>32
5c: do shift propagation for rotate right (ROR)
5c: fix int -> uvlong cast bug (thanks to qwx on his patience on a the trouble session to narrowing it down)
5c: format assembly constant right shift encoding 0 as >>32
5c: handle unused results for cgen64()
5c: support for bit ROR, native 64 bit arithmetic
5l: ROR instruction
5l: format assembly constant right shift encoding 0 as >>32
6c: subsitute floating point registers eleminating MOVSD and MOVSS instructions in peephole pass
8c, 6c: native ROL (cyclic shift) instruction support, improve peephole optimizers
?c: track ../cc/cc.h dependency and rebuild cc.a$O as neccesary
cc: add OROL op to side effect free op list
programs
Bfn: add Bfn script - find source code for function
9fs: remove juke, kfs and snap targets, caching for other and dump
acme/win: implement /dev/wdir file in win to change directory tagline, remove awd
audio/flacdec: exit on decode error, print error message
auth/*: various cleanups, use common readcons() from libauthsrv, zero keys after use
auth/changeuser: fix misleading print (secret is 31 chars max, not 256)
auth/factotum: use common readcons() function from libauthsrv
auth/fgui: use pale colors
auth/login: add dp9ik key to sub factotum, get rid of temporary /srv file
auth/secstore: use common readcons() routine from libauthsrv
awk: fix awk format printing bugs (thanks aiju)
disk/prep: if no 9fat, reserve space for plan9 partition table in autopart (thanks Shamar)
games/doom: fix blazing door sounds (from qu7uux)
games/doom: use Kprint for pause function (from qu7uux)
games/timmy: added timmy - a physics sandbox
hgwebfs: make hgwebfs prompt for password
make error handling in 9p service loops consistent
mercurial: use new d_stat from dirent structure in osutil.listdir
mk: remove buggy and unneeded syminit() function (thanks qurstuv)
mk: remove buggy and useless symtab functions (thanks qrstuv)
ndb/cs: don’t lookup AAAA records for IL, make sure translated address is IPv4 for IL, consistent use of nil vs. 0 for pointers
ndb/dns: purge db records on refresh for resolvers, remove old debug and testing code
ndb/dns: remove procname statistics and restart feature, cleanup 9p service loop
pc: added pc - programmer’s calculator
pc: add cat() function
pc: add gcd, rand and minv; set base of logical operation results to 0
pc: add rev function
python: remove automatic compiled module loading (.pyc files)
ratrace: fix fork/exec race with “nohang” procctl (like a debugger)
rc: implement 9atoms ` split {command} syntax extension
rc: write /dev/wdir after printing the prompt, not after executing “cd” command
rio: move the test if w is allowed to change cursor into wsetcursor()
togif: -E flag to read animation from stdin
upas/fs: remove checkmboxrefs() debugging code, properly handle errors in 9p loop
vga/igfx: add pci did’s for kenjis intel graphics cards.
vga/igfx: fix integer overflow in datam calculation (from qu7uux)
vga/igfx: work in progress fdi link train for sandy bridge, properly calculate fdi and displayport lane count
webfs: avoid retry loops when we got a bad key in factotum
webfs: include factotum key query in error string for 401/407 Unauthorized status
webfs: less aggressive url normalization; never unescape reserved characters in path/query/fragment
documentation
acme(1): remove references to awd
aml(2): document amlintmask
authsrv(6): document session secret key derivation for p9sk1 and dp9ik
mp(2): document mplogic functions
pc(1): document pc - programmer’s calculator
rand(2), cons(3): clarify /dev/random behaviour
rc-httpd(8): fix wrong manpage section index generation for rc-httpd(8)
regexp(2): add history for libregexp
rio(4): document text truncation
src(1): document Bfn
thread(2): threadgrp() -> threadgetgrp(), thanks jpm
timmy(1): games/timmy manpage
other
fortunes: Emacs now supports webkit.
New 9front release “NINE FRONT DON’T QUIT!” (2016/05/30)
dash 1
notes
Encrypted TCP booting (over TLS) is now possible. Simply choose tls at the bootargs prompt. See: /rc/bin/service/tcp17020
The 9front.iso image can now be dd’d directly to a USB device.
kernel
kernel: fix cb->f[0] nil dereferences due to short control request
kernel: add srvtls and tlsclient to bootfs.proto for encrypting connection to the file server
devssl, devtls: fix permission checks
etheriwl: add pci id for PRO/Wireless 5350 AGN (thanks Ori_B)
vgaigfx: fix device id for Ivy Bridge (thanks Kenji)
vgaigfx: check gtt to determine graphics memory size, add hw cursor support for g35 (thanks kenji)
efi: allow access to iso filesystem on non-cdrom media (iso/hybrid)
efi: ensure 8 byte alignment of buffer, as ReadBlocks() method will fail otherwise
libraries
libauthsrv: dont pass netroot to netmkaddr()’s defnet parameter in authdial() (thanks kenji arisawa)
libmemdraw: remove unused static variable from memimagedraw()
programs
9boot: add iso hybrid loader 9boothyb
auth/rsa2x509, auth/rsa2csr: allow appending SubjectAlternativeNames (SAN) to multi-domain certificate generation
auth/rsa2x509: generate x509v3 cert as extension field might not otherwise not be expected
awk: restore old buffering behaviour for printf
cc: use UTFmax not 4 (djc)
cc: prevent symbol buffer overflow
dist/mkfile: generate iso/hybrid image for 9front.iso
exportfs: disallow ORCLOSE in readonly mode (charles forsyth)
games/mahjongg: off by one in bmatch(), fix hint() redraw (thanks Kenji)
ip/ipconfig, ip/ppp: preserve preexisting entries when writing /net/ndb
jpg: output partial image data when available (truncated files)
ndb/cs: fix memory leak (charles forsyth)
rc: fix inband globbing bugs, cleanu
rc: remove pointless Memcpy(),Malloc(),Realloc() and efree() wrappers
rc: remove historical unix and win32 ports
rc: remove duplicate Xrdfn entry from fname[] array
rc: fix double close() in addenv()
rc: simplify execfinit() / Xrdfn() using the globber to lookup /env/fn'#‘*
rio: only the current window may change the cursor, fix typo screen->r vs w->screenr in drag()
add srvtls and the corresponding tcp17020 service
upas/marshal: strip trailing whitespace from header values
documentation
9boot(8): document 9boothyb
other
remove š and Š from estonian keymap
add belarusian (by) keymap (thanks eric lindblad)
add polish keymap (thanks chomzee!)
/lib/vgadb: add Panasonic CF-R7 LCD panel (thanks Kenji)
New 9front release “ALLES LÖSCHEN!” (2016/05/06)
dash 1
kernel
retire the dec alpha port
remove unmaintained bitsy (ipaq) kernel
remove unmaintained omap4 (pandaboard) kernel
etheryuk: add Yukon 88R8055 id from erik quanstros driver (thanks Kenji), add to pc64 kernel
libraries
ape: remove openssl
ape: add libauth, libbio, libmp and libsec as replacements for openssl
ape: return plan9 error strings from strerror()
libauth: remove support for import command in namespace files
libauth: remove unneeded includes for authsrv.h, avoid pulling in dependency for rerrstr()
libc: fix out of bounds access in dirpackage(), simplify
libc: remove unneeded #include <auth.h> for crypt() and netcrypt()
libdraw: avoid BPSHORT()/BPLONG() expansion, cleanup loadchar(),cachechars()
libdraw: dont postnote to pid==0 in ekill()
libjson: add slack space to literal string buffer to handle bad runes (thanks mischief)
liboventi: remove unused liboventi
libregexp: New libregexp and APE ported to native
libsec: dont use mips assembly routines for spim, wrong endianess
libsec: fix memory leak of RSApub, avoid parsing certificate twice to extract rsa public key
libsec: implement elliptic curve group operations in jacobian coordinate system
libsec: implement server side ECDHE key exchange with secp256r1, move DH state in TlsSec structure, simplify
libsec: implement server side SCSV preventing silly client fallbacks
libsec: order tlshand cipher suits by: keyexchange>=cipher>=hash, ignore client preference
libsec: recognize and decode PKCS#8 wrapped RSA private keys for auth/asn12rsa
libsec: x509: convert to UTF8 from BMPString and UNIString, reject \0 bytes
programs
9fs: add “sites” to the 9front case
abaco: respect $font
acid: don’t get fooled by spaces in convflt()
awk: replace ape awk with new native port (thanks spew)
gs: replace openssl aes implementation with ape/libsec
hg: create system wide /sys/lib/hgrc to enabled hgwebfs extension
hg: set $HOME when not already set to avoid silly uid lookups which can fail if theres no /adm/users
hg: set mercurial.url.has_https when hgwebfs extension is in use
kbdfs: add shift+altgr table 7 for polish keymaps
ktrace: sign extend stack dump pc for amd64
python: remove openssl support, use ape/libsec for cryptographics hash functions
rcpu: make sure not to leak /env/fn#server and /env/fn#aanserver for drawterm (thanks mischief)
rsagen: increase default key size to 2048 bits
vncv: fix netmkvncaddr()
webfs: change %H (hostname) format to %N to not collide with encodefmt’s %H (hex)
webfs: fix “fd out of range” error message
webfs: fix memory leak of serverName in tlswrap()
games/mole: add “snake” tracing effect to mole
documentation
abaco(1): remove readweb
aes(2): mention aesCBC bug
srv(3),shr(3): correct reference
shr(3): document example
listen(8): document tcp17019 rcpu service
listen(8): fix html rendering
rsa(8): provide example for converting OpenSSL generated PEM file to factotum
rune(2): add Runeerror reencoding considerations in BUGS section (thanks aiju)
tls(3): document support for TLSv1.1 and TLSv1.2
other
/lib/ndb/common: update ip addresses for [BCHL].ROOT-SERVERS.NET
add danish keymap (thanks Eric Lindblad)
add missing target for antiword in /sys/src/cmd/aux/mkfile (thanks _sl)
New 9front release “The muscott icon of it! Why devil?” (2016/04/08)
dash 1
kernel and drivers
kernel: make fversion()/mntversion() types consistent
kernel: make kernel UTFmax and Runemax consistent with libc (21-bit runes) (thanks maurice)
kernel: fix tsleep()/twakeup()/tsemacquire() race
kernel: print pid as %lud instead %lux (in tsleep() debug print)
kernel: fix procflushmmu()
kernel: remove unused NSMAX, NSLOG, NSCACHE constants from portdat.h
kernel: always clunk closed fids asynchronously, regardless of caching
zynq: introduce SG_FAULT to prevent access to AXI segment while PL is not ready
zynq: cleanup devarch, flushmmu() after procflushpsecg()
devip: handle ignoreadvice flag for all protocols
devip: applying changes for bug: multicasts_and_udp_buffers
devkbd: change /dev/kbd to return multiple messages per read
devtls: fix wrong iounit
devtls: add portable AES-GCM (Galois/Counter Mode) implementation
devtls: zero secret information before freeing, cleanup
devtls: print the path of the underlying chan in status file
ether82563: initial i217 support from http://www.9legacy.org/9legacy/patch/pc-ether82563-i210.diff (thanks k0ga)
libraries
libc: fix runestrecpy() return value (thanks spew)
libdraw: remove flushimage calls from fontresize() and loadchar()
libdraw: don’t flush in readmouse() when theres nothing to flush
libdraw: have openfont() set error string
libdraw: fix out of bounds memory access after subfont array reallocation (thanks ray)
libFLAC: update to 1.3.1
libsec: fix verifyDHparams() for version <= TLS1.1
libsec: remove weakCipher[] array check as we do not support any of these weak ciphers
libsec: add portable AES-GCM (Galois/Counter Mode) implementation
libsec: fix tlsid for TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
libvorbis: update to 1.3.5
programs
6in4: allow setting the local IPv4 address with -i flag (thanks k0ga)
6in4: ingress filter multicast and link-local, but allow relay traffic
9fs: bind -b /n/9front.org!7734 /n/lists
aan: use sync messages as keep alives
aan: handle case when reader closes netfd
auth/pemencode: fix usage()
bullshit: +progressive +enhancement
file: deal with negative coordinates in plan9 bitmaps, print image size
g: dont pollute the environment (thanks BurnZeZ)
games/life: add -d delay parameter, -b color reversal parameter, and update manpage
ip/gping: set display->locking before starting mouseproc (race)
ip/gping: ignore advice, fix packet corruption check, remove dead code
ip/gping: add main pid to pid list for killall()
kbdfs: map Kup/Kdown the same in shift tab (fixes shift-[up]/[down] one-line scroll in rio over drawterm/vncs)
mercurial: fix CVE-2016-3630
mothra: dynamically allocate buffer for refresh url (was 20 bytes stack buffer before) (thanks BurnZeZ for reporting)
plot: handle create() failure
ppp: md5 and mschap inside chap, do not request encryption with -c or -C (thanks k0ga)
ppp: Small format and log fixes (thanks k0ga)
ppp: fix buffer overflow, set correct state after chap negotiation (thanks k0ga)
pppoe: Avoid double free (thanks k0ga)
pppoe: Add support for -c and -C to enable/disable header compression (thanks k0ga)
rio: remove more unneccesary flushimage() calls
rio: /dev/kbd cleanup
stats: fix display->locking race
tcp567: run authserver with p9sk1 tickets disabled preventing offline password brute-force
truss: fix “bad string” error due to missing ape _nsec() syscall
truss: add fake __NSEC syscall name for ape
uhtml: dont trust charset=utf-8 attribute, verify.
vncs: fix dead Kend key
vncs: parse screenid as long, not short: BGSHORT() -> BGLONG()
vt: add -r flag to start in raw mode
manual pages, documentation, misc
devstream(3): removed
kbdfs(8): document new /dev/kbd behaviour
qball(2): fix bad manpage reference
fortunes: Ah, nice. the woodpeckers are back.
New 9front release “MY MEMORY OF DRAWTERM IS FADING” (2016/03/01)
dash 1
kernel and drivers
kernel: remove todfix overflow iprint() spam
pc/pc64: remove mpshutdown print
pc/pc64: bring up ap’s one after another, use idlehands() while waiting for thunderbirdsarego
pc64: move idle() routine after CALL main(SB) as the comment suggests
sgi: add chmod to bootfs.proto for sgi kernel
devdraw: remove unused Edepth[]
devmnt: deal with partial response for Tversion request in mntversion()
devssl: use tsmemcmp() to compare mac to close timing side channel
ipv6: fix icmphostunr() locking and memory free bugs (from sources)
usbuhci: removing “uhci bug” print spam from interrupt handler
wifi: check tkip/ccmp mac and crc in constant time avoiding timing side channels
booting
provide /n and /mnt early in bootrc to allow consistent use in /lib/namespace
libraries
ape/fmt: %p and %z format for amd64
ape/stdio: %z format is VLONG on amd64
libauthsrv: add D in mkfile
libauthsrv: fix ed448 goldilocks prime comment
libauthsrv: can write p = 2448 - 2224 - 1 now, as mpc has constant folding.
libdraw: remove unused static log2[] array
libfis: dont reject drives lacking SSP (sata ssd connected to ide with adapter)
libmp: handle out of memory case in gmfield()
libmp: remove include of libsec.h
libsec: add salsa20 stream cipher
libsec: ecdsa client support for tlshand, cleanups
libsec: refactor asn1 encoding of digest for rsa signatures, fix memory leak in ecverify
libsec: mpconv -> mpfmt
libsec: fix missing error case unlock() in tlshands initCiphers()
libsec: fix double free in pkcs1_decrypt(), handle bad epm length in tlsSecRSAs(), cleanup
libsec: simplify pkcs1_decrypt()
libsec: add libc.h include for aes_xts.c (drawterm)
libsec: fix memset() size in tlsConnectionFree(), remove #include <bio.h>
libsec: remove unused tlsSecKill()
libsec: have 16 32-bit words in DigestState to avoid out of bounds warnings for poly1305
programs
/rc/bin/“: fix quoting bug (thanks, aiju and silasm)
auth/cron: just run /bin/rx to execute remote commands
auth/factotum: fix nil pointer crash on p9skclosekey(), thanks k0ga
auth/factotum: fix memory leak for p9any key confirmation, fix key handling for role=client
aux/kbdfs: read outer /dev/kbd file and use it just like /dev/kbdin
exportfs: properly reply to chdir() error when we speak 9p
exportfs: retry execing ourselfs as “/bin/exportfs” (argv0 might be relative path)
exportfs: fix endless loop for eof/error on second read in localread9pmsg()
games/doom: fix white window issue on exit
games/doom: handle allocimage() failure
mpc: constant expression folding
ndb/dns: removing the buggy /net.alt remount hack
ndb/dns: initialize unknown fids to point to the root qid
ndb/dnstcp: -x specifies the mountmoint
newuser: /n/other now handled in /lib/namespace
rc: terminate rc when exec fails, cleanup
rcpu: adding experimental rcpu service [1]
rcpu: post hangup note to remote when connection breaks
rio: fix wrong frame colors when moving non-current window
rio: exit rio when /dev/cons or /dev/kbd read loop terminates
rx: rcpu service support
stats: use rimport or import to mount remote system
tlsclient: add -o option to establish connection over a file, free the AuthInfo structure to avoid leaking secrets
tlssrv: p9any authentication support using TLS-PSK cipher suits
tlssrv: add -A flag to skip changing user after authentication (usefull for aan)
upas/smtpd: remove unused lastsender logic
webfs: faster shutdown using postnote()
manual pages, documentation, misc
fortunes: ./configure CFLAGS=“-I$HOME/source/harvey/ape/amd64/include -I$HOME/source/harvey/ape/include -mno-red-zone -ffreestanding -fno-builtin -nostdlib -trigraphs -D_SUSV2_SOURCE -D_POSIX_SOURCE -D_LIMITS_EXTENSION -D_BSD_SOURCE -D_BSD_EXTENSION -DHAVE_SOCK_OPTS -DHARVEY -DPlan9” LDFLAGS=“-static $HOME/source/harvey/ape/amd64/lib/crt1.o $HOME/source/harvey/ape/amd64/lib/crti.o $HOME/source/harvey/ape/amd64/lib/crtn.o -L$HOME/source/harvey/ape/amd64/lib -L$HOME/source/harvey/amd64/lib” LIBS=“-lbsd -lap -lc” LIBM=“” –prefix=$HOME/source/harvey/ape/ports –host=x86_64-linux-gnu –build=x86_64-harvey –enable-shared=no
/lib/keyboard: add more crucial symbols
glenda’s default profile: remove /n/other mount, done by /lib/namespace
authsrv(2): document _asgetpakkey(), authpak_hash(), authpak_new(), authpak_finish()
authsrv(6): fix arrows
salsa(2): some formating fixes; fix source reference
rcpu(1): add
[0] http://okturing.com/src/3486/body
[1] https://code.9front.org/hg/plan9front/rev/65abc13ef7a1
New 9front release “PLEASE EXCUSE ME THE OUTFLOW” (2016/01/09)
dash 1
kernel and drivers
kernel: fix typo in devmnt mntproc name
kernel: use nicer check in okaddr(), wet floor signs in fixfault()
kernel: cleanup exit()/shutdown()/reboot() code
kernel: use uintptr for ibrk() return value (for base >2GB) and clarify segbrk(2)
kernel: missing changes for ibrk() prototype
kernel: change active.machs from bitmap to char array to support up to 64 cpus on pc64
pc, pc64: fix sdvirtio descriptor count when sending flush
pc, pc64: add did for intel wildcat point audio controller
pc, pc64: import i210 support from erik quanstrom’s 9atom
zynq: fix cache flush bug for emmc driver (have to invalidate cache before read)
zynq: clean cache unconditionally before dma, invalidate cache after dma for read case
devenv: fix ORCLOSE handling
devip: various bugfixes and cleanups for arp code
devip: declare cleanarpent() static
devproc: remove unused extern int unfair
devqspi: fix qunlock error on stat() -> close()
devsd: remove unused timeout field from SDreq
devsd: handle SYNCHRONIZE CACHE scsi commands as nops in sdfakescsi()
devtls: add sha256 mac
devtls: reject SHA2_256 mac for SSL, but TLS is fine
devtls: implement chacha20/poly1305 aead cipher suits
igfx: fix typos (thanks qwx)
sdmmc: handle fakescsi emulation
tcp: fix mtu on server sockets again (thans mycroftix)
usbehci: clean cache unconditionally before handing a buffer to the hardware
wifi: quote value of parsed ether options
wifi: prioritize rsne over wpaie
booting
bootrc: remove usbwait hack, usbd/nusbrc are now synchronous by previous commit
do not handle kfs boot
move screen and mouse setup code to /rc/bin/screenrc
nvram: introduce AES key
compilers and debuggers
cc: handle 64 bit mixedmode asop and type vlong <-> float/double type conversions
cc: TUSHORT -> TRUNE for lstring constats for OUSED
cc: allow runes as macro names (from charles forsyth)
cc: getflag() fmt will be terminated at end of loop (from charles forsyth)
cc: include $builtin as keywoard in pickle() (from charles forsyth)
cc: restore side(), but do not consider OINDEX as side effect free
cc/6c: fix return type of mixed asop expressions, preserve type for moves so fixed<->float conversions work correctly
5c/6c/8c/kc/qc/vc: import various changes from charles forsyth
5c: handle 64 bit mixedmode asop
5c: handle (rare) MULU instruction in peephole optimizer
6c: remove 6c/vlrt.c file
6c: return vlong result for pointer subtraction
8c: make cgen64() compile target first when it contains functoin call so final assignment wont trash the registers
8c: handle 64 bit mixedmode asop and type vlong <-> float/double type conversions
8c: dont abort() when running out of registers.
vc: handle 64 bit mixedmode asop
cpp: fix memory corruption due to input buffer relocation
cpp: handle 4 byte utf sequences (21-bit runes)
acid/leak: fix endless loop for B2NB(b) == b case (thanks mischief)
libraries
ape: add badrect object into ape libdraw
ape: set MB_CUR_MAX to 4 in stdlib.h for 21-bit runes (thanks erik quanstro)
ape: add machine specific code for spim
ape: add missing _subv() function to 386/vlop.s
lib9p: add reqqueuefree
lib9p: do not override Srv.end in listensrv(), simplify srvclose() and recounting
libauthsrv: generalize ticket service, not hardcoding ticket format and DES encryption
libauthsrv: add missing files (thanks mischief)
libauthsrv: randomize aes key in mkkey()
libauthsrv: fix _asgetresp() for passwd
libc: import more endianness fixes (thanks cherry9)
libc: remove privfree(), simplify privalloc()
libc: add uv2d()/uv2f() and vas*d() functions to vlrt.c
libdraw: remove unneeded check (thanks BurnZeZ)
libfis: fix wrong shift for lba40 (thanks geoff and charles)
libjson: fix memory leak setjmp/longjmp problem (thanks spew) libjson: added printing support (thanks spew)
libmp: add mpnrand() function to generate uniform random number 0 ≤ x < n
libmp: add mpvecdigmuladd()/mpvecdigmulsub() assembly routines for arm
libmp: optimize case x/0xffffffff in mpdigdiv() (helps arm)
libmp: 386/amd64 mpvec*(): replace conditional branches with ADC/SBB instructions
libmp: add mpvecadd()/mpvecsub() assembly versions for arm
libmp: fix test program
libmp: initial attempt at constant time code, faster reductions for special primes (for ecc)
libmp: mpmod() fix typo
libmp: fix wrong move instruction for arm vector operations
libmp: fix assert() for mpexp() with nil modulus
libmp: add logic operations; mpfmt: include 0x with #
libmp: fix bug in mplogic.c; update mkfile
libmp: strtomp support for bases 2,4,8
libmp: add mpfield() function for fast field arithmetic
libmp: mpfmt: handle base 2, 4
libmp: support for c-style base prefixes for strtomp(), octal support
libmp: mistake in strtomp()
libmp: check nil return value of strtomp() in test program
libmp: silence compiler warning for strtomp
libsec: add pbkdf2_hmac_sha1() (from wpapsk factotum module)
libsec: fix probably_prime() endless loop for n == 3
libsec: add q parameter to dh_new() for subgroup support, sanitize dh parameters
libsec: add TLS_RSA_WITH_AES_128_CBC_SHA256 and TLS_RSA_WITH_AES_256_CBC_SHA256 ciphers
libsec: add curve25519() from http://code.google.com/p/curve25519-donna/
libsec: work arround 8c running out of registers compiling curve25519.c
libsec: remove flawed aes() digest and hmac_aes() implementations (thanks aiju)
libsec: add curve25519 diffie hellman
libsec: declare aes_setupEnc static
libsec: generalize pbkdf2_hmac_sha1() to pbkdf2_x() passing the hmac as an argument
libsec: add rfc5869 hmac-based key derivation function hkdf_x()
libsec: handle TLS 1.2 changes in CertificateRequest message
libsec: send sigature_algoritms extension for TLS1.2, order ciphers
libsec: add TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 and TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 cipher suits
libsec: save some space making weakCipher bitamp of type char[] instead of int[]
libsec: fix memory leak in ecmul()
libsec: implement dh parameter signature verification, stop lying about non-rsa ciphers, fix memory leaks in X509 code
libsec: make sure Elem is zero initialized so freevalfields() wont cause accidents
libsec: handle missing signature case; can happen because some ciphers make it optional
libsec: implement client certificate authentication for tls1.2
libsec: fix memory leaks in X509req() and X509gen() and return malloced pointer
libsec: cleanup newbytes()/newints()/newbits() and get rid of OFFSETOF() macro
libsec: use the right string encoding for various x509 fields
libsec: clarify the code by declaring constant for DirectoryString and handle conversion in mkstring()
libsec: remove rc4 cipher suits for tls
libsec: add poly1305
libsec: add chacha cipher (from charles forsyth)
libsec: add chacha20 poly1305 aead, allow 64 bit iv’s for chacha, add tsmemcmp()
libsec: fix genprime() to produce normalized result
libsec: use tsmemcmp() when comparing hashes, use mpfield() for ecc, use mptober() when right adjusting mpint to bytes
libsec: implement TLS-PSK for tlsClient()/tlsServer()
libsec: make sure theres no garbage after the asn.1 decode, cleanup
libthread: get rid of tprivalloc()/tprivfree()/tprivdata() and _workerdata() (thanks qrstuv)
programs
9660srv: do not ignore upper 32 bits of offset when reading directory
9fs: add 9pio case for unauthenticated connections to 9p.io
9fs: add case 9front
ascii: replace mnemonic np (new page) with ff (form feed) for consistency
auth: release dp9ik implementation and reentrant factotum
auth/*: remove private /dev/random reading routines, use genrandom()
auth/changeuser: set the aes key in plan9 database, but not in securenet db
auth/convkeys2: remove
auth/httpauth: use auth_userpasswd() instead of AuthHttp request to AS
auth/passwd: fix structure zeroing order
aux/disksim: don’t assume 4-byte pointers
aux/gpsfs: fix usage
aux/listen1: allow alternative namespace when running as user none with -n option
aux/statusbar: use title as rio window title (thanks qrstuv)
cpu, import: remove old9p support
cwfs: adjust for new libauthsrv changes
cwfs: remove 9p1 support
cwfs: initialize /env/timezone on boot so dumps are in localtime
cwfs: don’t use sprint() to fill directory name
cwfs: fix wstat() failing to mark block dirty when noatime is set
delkey: print commands instead of starting a dialogue
doctype: learn to timepic
disk/fdisk: properly convert byte units K,M,G and T to cylinders/sectors
disk/mkfs: rmeove kfs support
dossrv: handle file offsets > 231
E: import script from bell labs
file: detect DICOM and XM audio headers
file: recognize tcpdump pcap files
file: recognize bootable disk images (by 0x55AA boot sector signature)
fshalt: remove kfs support
games/doom: fix bogus pointer arithmetic, do sfx initialization in two passes for linked sounds
html2ms: handle subscripts and superscripts
html2ms: bold table headings, remove wrong tag space handling
import/expoerfs: dont assert() fault when ai->secret is > 8 bytes, just use the first 8 bytes
init: remove dependency to <authsrv.h>
ircrc: add -P option for server password (thanks, nick)
keyfs: introduce AES key
keyfs: fix typo (thanks jpm)
kfs and kfscmd: remove
mothra: add subscript and superscript support
mothra: add missing initializations for plaintext html state
mothra: make text inside td bold
mothra: hr drawing
mpc: add (extended precision code generator)
qr: add (generate qr codes)
rc: Added change to /rc/lib/rcmain to allow execution of /rc/lib/rcmain.local if it exists. /rc/lib/rcmain.local is similar to $home/lib/profile in that it will only be executed with -l, but is site-wide.
resize: add -n for nearest neighbour
rio: fix scrolling when cursor is above window
rio: stop serving kbdin file (thanks eekee)
rio: fix handling “resize” wctl for hidden windows
rio: allow reading the image of a hidden window thru the window file
rsa2x509, rsa2csr: add newline in usage print
rx: theres no p9sk2 anymore
scuzz: uncomment synccache command
snoopy: fix timestamps for pcap files (thanks BurnZeZ)
srvold9p: remove
tapefs: remove dependency to <authsrv.h>
tar: make z flag work, even when no file name was provided (thanks aiju)
timepic: string support
tput: check sbrk return value
usbd: introduce /env/usbbusy
venti/fixarenas: replace %z fmt with %Z
webcookies: strdup() file argument to avoid crash (thanks mischief)
winwatch: l allows label changes
yacc: attempt to keep line numbers right for yyparse()
manual pages, documentation, misc
/lib/1oct1993: use words correctly (thanks, spew)
2c(1): fix spelling error for the axp entry
delkey(1): update man page to reflect recent changes
fplot(1): add BUGS section, fix typo
import(4): remove -o, -O flags
mp(2): fix typo mnprand() -> mpnrand()
qer(8): correct man page example (thanks, kenji)
qr(1), timepic(1): add
utf(6), rune(2): document 21-bit runes
remove kfs references from manual
New 9front release “the art of conversation” (2015/08/18)
dash 1
kernel and drivers
kernel: make sure the swap device has a reasonable capacity in setswapchan()
kernel: cleanup chan.c to consistenly use nil instead of 0 for pointers
kernel: consistent use of nil for pointer in sysfile.c
kernel: simplify syspipe()
kernel: make sure fd is in range in fdclose()
kernel: pipelined read ahead for the mount cache
kernel: clunk the cache when removing cache flag on a channel, only call cread() chen CCACHE flag is set
kernel: export mntattach() from devmnt.c avoiding bogus struct passing and special case in namec()
kernel: remove obsolete comment from namec()
kernel: cleanup qlock.c to use nil instead of 0 for pointers
kernel: dont rely on atoi() parsing hex for netif/devbridge
kernel: remove unused qstate() function
kernel: reject empty argv (argv[0] == nil) in sysexec()
kernel: make shargs() function static in sysproc.c
kernel: use Etoolong[] constant instead of string literal in validname0()
kernel: change vmemchr() length argument to ulong and simplify
kernel: limit syscallfmt user strings to 64K (as in validname)
kernel: fix indention in validname0()
kernel: validnamedup() the name argument for segattach()
kernel: limit argv[] strings to the USTKSIZE to avoid overflow
kernel: have to validate argv[] again when copying to the new stack
kernel: remove unused MAXCRYPT constant from portdat.h
kernel: fix Mheadache
kernel: pgrpcpy(), simplify Mount structure
kernel: mount flag is int not ulong, reduce size of Mount struct by putting mflag field in what would be wasted as padding
kernel: move “setargs” field in Proc structure after “nargs” and “args”
kernel: try freebroken() before killbig() (thanks aiju)
pc, pc64: set *bootscreen= when framebuffer changes
pc, pc64: replace atoi() calls with strtol() when hex can be expected
pc, pc64: remove unused psaux driver
zynq: remove unused variables from devqspi
devaoe: fix off by one in aoeerror(), consistent use of nil for pointers, error handling
devenv: avoid indirection, keep Evalue’s allocated in an array
devenv: simplify envremove(), cleanup
devether: duplicate flags when copying blocks (thanks erik quanstro)
devkbd: poll pc keyboard before blocking on kbd.q
devkbd: disable mosue/keyboard on shutdown, disable ps2 mouse on init, remove kbdenable()/kbdinit()
devmnt: dont reset readahead window when requested offset still has pending rpc
devmnt: use c->iounit instead of msize-IOHDRSZ to chunk reads and writes, reduce memory overhead for Mntrpc, mntalloc lock
devmnt: fix mntcache()
devtls: TLS1.1 explicit iv support
ether79c970: set mbps for proper queue sizes, assume gigabit ethernet for vmware
etheriwl: add pciid for Centrino Wireless-N 1000 (thanks qu7uux)
vgaigfx: remove #define MB, theres a MB enum in portdat.h
compilers and debuggers
cc: provide fake realloc() for getenv()
cc: improve (non-) side effect detection (thanks charle)
1c,2c,7c,kc,vc: honor suppress condition for outstring() in swt.c
vc: word align automatics
6l: fix vlong byte order when running on big endian machine (thanks erik quanstro)
acid -k: fix procenv() to new data structure
acid -k: fix intrcount() for amd64
libraries
ape: fix mktime() again
ape: implement altzone for tzset()
ape: fix build for objtype=spim
lib9p: return “write prohibited” error as documented in 9p(2) when srv->write is nil (thanks silasm)
lib9p: make reqqueueflush() use new threadint(), which will also cover channel operations
libauthsrv: readnvram() use vlong for nvroff, parse $nvlen/$nvoff with strtol() instead of atoi()
libc: make atoi() not parse c-style octal and hex numbers
libc: fix spim endianness
libc: fix wunlock() libthread deadlock
libcontrol: use strtol() to parse integer arguments
libcontrol: fix label memory leak
libhttpd: use strtol to parse decimal character references in httpunesc()
libmach: set correct endianness with little endian ELF32 mips binaries
libmach: remove useless error check from previous commit
libmach: remove redundant check for big endian
libmp: fix build for objtype=spim
libsec: increase handshake message buffer size (MaxChunk) to 32K (thanks sl)
libsec: TLS1.1 support (needs new devtls)
libsec: fix mistake breaking tlsServer() (thanks sl)
libsec: TLS1.2 client support
libsec: TLS1.2 server support, make cipher list with most prefered first
libthread: fix mistake, make “all” the default target again
libthread: use “interrupt” proc ctl message instead of posting a note for threadint()
cdproto: add spim
rootstub: add spim
programs
add /spim
aux/vga: sandybridge support for igfx (unfinished)
aux/vga: dont rely on atoi() being able to parse hex
bitsy: replace atoi() calls with strtol() when hex can be expected
bitsy/keyboard: do not rely on atoi() being able to parse hex
bullshit: app, deep-learning, responsive.
cpu: cleanup ssl code, make sure -p works for any auth method
crop: use strtol() instead of atoi()
cwfs64x: set permission of / to 0775 on ream
games/doom: implement filelength() (thanks quux)
games/doom: fix switch textures swapping in ultimate doom (thansk qu7uux)
games/doom: add bug compatibility switches (thanks qu7uux)
games/doom: fix ouchface not being shown when it should be (thanks qu7uux)
games/doom: display correct message on medkit pickup when health low (thanks qu7uux)
games/doom: fix config file never being loaded or saved (thanks qu7uux)
games/doom: fix unterminated comment causing sound bugs (from qu7uux)
games/doom: fix idclev cheat in doom2 and final doom (thanks qu7uux)
games/doom: fix gamma correction and key translation (thanks qu7uux)
games/doom: fix array offsets for respawn angle (thanks qu7uux)
gs: fix build for objtype=spim
gs: fix alignment bug in image_render_interpolate()
hjfs: fix abort() in givebuf()
hjfs: fix deadlocks
init: do not run $home/lib/profile when cd $home failed
iostats: add -C to usage
ip/httpfile: fix flushes, fix concurrent reads, set error string
ipv6on: fix search for ip attribute (thanks kenji arisawa)
jpg/ico: support for embedded png icons
jpg/ico: fix mkfile
kfs: set permission of / to 0775 on ream
mothra: support for inline images and
mothra: fix selurl()
mothra: cleanup url handling
mothra: fix double button hit
mothra: enable compiler warnings and type checking, cleanup
mothra: fix nil crash on missing name/src attributes for source/video/audio/embed/frame/iframe
mothra: show
mothra: fix crash
mount, srv: add -N flag to skip authentication and attach anonymously as “none”
page: fix deadlock, nil vs 0 for pointer comparsion, cleanup
python: use altzone
python: fix build for objtype=$spim
ratrace: avoid blank line prints, make writer the parent; various improvements
resample: simplify getint()
snoopy: dont rely on atoi() being able to parse hex
webcookies: fix isdomainmatch() (fixes livejournal.com login)
webcookies: fix implicit path cookie handling
webcookies: create lockfile with 0600 permission, always use create() with perm 0600 for rewriting jar
webcookies: use strtol() to parse HH:MM:SS
manual pages, documentation, misc
bio(2): Bterm() closes filedescriptor for Bfdopen() allocated buffer
import(4): clarify -E and -e options
rio(4): document “delete” wctl message (thanks mischief)
fortunes: If you want to do the work, I will review the results.