THANKS: to aiju for cover assistance


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.


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)


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


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 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


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)


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