COMING SOON: Print edition!


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


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


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 "


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


/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