front (v1)





volume two (man pages) coming soon

THANKS: miron lukyanov


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


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


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


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

front (v2)


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)


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)