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.

New 9front release “KÄPTN BLAUBÄR” (2015/07/19)

dash 1
kernel and drivers
kernel: add pagechaindone() to wakeup processes waiting for memory
kernel: declare _tas() to prevent pulling in libc version (for libmemdraw)
kernel: do not inherit Proc.dot (current working directory) in kproc()
kernel: do not inherit current directory channel (dot) to pager
kernel: do not pull in atom.s from libc for arm kernels
kernel: dont use smalloc() to allocate pte array in ibrk()
kernel: fis comment PciSID (alphapc, kw, mtx, teg2) (thanks qeed!)
kernel: fix accounttime() for HZ >= 1000
kernel: ignore last page at the top of virtual kernel address space for xalloc()
kernel: ignore memory pages with singular kernel addresses
kernel: implement separate wait queues for page allocation
kernel: map pci bars for devices with base class codes (ccrb) 0x00 and 0x0D-0x11 (thanks qeed)
kernel: reject bogus two byte “#!” shell scripts in sysexec()
kernel: remove debugalloc.c
kernel: remove waserror() arround newpage() in mntcache
kernel: use HDR_MAGIC constant to handle Exec header extension, make rebootcmd() handle AOUT_MAGIC macro
kernel: various cleanups of imagereclaim(), pagereclaim(), freepages(), putimage()
pc, pc64: toggle bit 2 in port 0x61 to reset and enable PCI SERR# nmi’s, print nmi status
pc: check Sse (bit 25) in cpuiddx before enabling fxsr in cr4 (fixes crash on the pentium II)
pc64: use unsigned long for kmapindex and mmu counts avoiding signed integer division
zynq: add /dev/fbctl to attach framebuffer to devdraw
zynq: add support for hardware cursor
zynq: fix /dev/pl
zynq: fix barriers
zynq: fix flushmemscreen()
zynq: increase kernel memory for graphics
zynq: make screen and cursor kprocs exit properly
zynq: mouse acceleration
zynq: remove unused PTE typedef
zynq: remove unused statistics fields from Mach structure
zynq: use KADDR() for kmap() if we can avoiding the mapping
ether82563: fix multicast filter (based on openbsd em(4) driver)
etherigbe: spi eeprom support (thanks echoline)
etheriwl: add multicast stub, dont clear descriptors after completion
etherrt2860: add multicast stub
etherwpi: Intel PRO Wireless 3945abg driver based on openbsd’s if_wpi (thanks aap)
9boot: look for plan9.ini in all filesystems accessible to efi to find plan9 partition
aux/vga: disable nvidiascale() as it broke modeset on kenjis card
aux/vga: dont use /proc/$pid/mem to access vga bios
devcons: add current pool allocations to #c/swap
devfs: remove useless ~OTRUNC mask for openmode
devmnt: do not use user buffer to update the mount cache
devproc: make sure statbufread offset wont turn negative
devsegment: fix parsecmd() memory leak
devstream: fast sequential file access with 9p pipelining experiment
devtls: ignore UnrecogniedName (112) alert message (for SNI)
ip: fix wrong radix for iphash() (thanks yoann padioleau)
kbdfs: Runemax is inclusive.
nusb/audio: dont sysfatal on bad endpoint (no altc)
nusb/disk: adding identical partition is a no-op
nusb/serial: remove unused channel
nusbrc: handle fat formated usb drives without partition table
usbd: set device info for control file (see usb(3), thanks qeed)
wifi: adjust transmit rate on error (for etheriwl), small mkfile changes
wifi: berlin prime bunny hopping
wifi: reflect current transmit rate in mbps
compilers and debuggers
5e: approximate LL/SC with cas()
5e: enable VFP emulation by default, doubles only need to be 4 byte aligned
5e: implement DSB,DMB,ISB and CLREX instructions
5e: make sure stack base is aligned to avoid unaligned memory trap on arm
cc: handle unaligned data in = {0} local initializer
cc: set unspecified elements to zero in local variable initializers
cpp: search source file directory first for quoted #include (thanks Ori_B)
libraries
ape: add stdint.h, fix SSIZE_MAX and add SIZE_MAX to limits.h
ape: define long long limits
ape: include <sys/types.h> in <sys/wait.h> for pid_t (thanks jens staal)
ape: port libc smp tas() for arm
lib9p: fix lib9p wstat qid.type/mode checks (fixes lock(1) for ramfs/hjfs)
libFLAC: fix compiler warnings by properly declaring void function arguments
libc/arm: implement _tas() with LDREX/STREX, execute memory barrier on smp systems (zynq)
libc: use Runemax instead of hardcoded 0x65536 for fmtchar check (thanks qrstuv)
libdisk: error handling, sanity checks
libdraw: consistent use of nil for pointers, error handling
libdraw: don’t loop forever when getting eof on /dev/cons in keyboard ioproc
libdraw: sync allocimage/allocwindow prototypes with man pages
libhttpd: declare hvprint
libsec: implement tlsClient support for RFC6066 server name identification (SNI)
lock: reopen lockfile after changing mode to make lock effective
programs
9660srv: go back to 128k clusters, keep data and metadata separate in the cache with a tag
9fs: handle all the dos filesystems in one case, add esp handler
authsrv: remove unused opasstokey
authsrv: use plan9 key for http authentication
aux/cpuid: make sure extended feature bits are available (fixes crash on the pentium II)
cdproto: /sys/log/httpd should be a directory, added /sys/log/pop3
cifsd: smbrename is still ok when file is readonly (fixed git)
cp: experimental stream support
disk/edisk: gpt partition table editor
disk/fdisk: learn about EFI system partition (type 0xEF), honor protective mbr (type 0xEE)
disk/format: create Fatinfo sector for fat32
disk/partfs: adding identical partition is no-op
dontkill: only use noswap flag to mark processes as not to be terminated on oom
dossrv: maintain file creation date/time on disk, fsinfo sector can be 0 (disabled)
fcp: fix wrong write pointer offset when read returns less than DEFB bytes
fcp: use iounit() to determine buffer size, reduce number of worker procs to 8
games/doom: fix desyncing demo (thanks qwx), remove Makefile
gunzip: the extra length field (XLEN) is two bytes instead of one
hgweb.cgi: take REPO_ROOT and REPO_NAME from env, so can be used out of the box
hjfs: defer parent directory permission check for wstat
htmlroff: fix wrong newline in \name handling (| -> ||)
httpfile: fix evictblock() so we wont consume all the memory
inst/bootplan9: skip mbr installation and active partition switching when we have no plan9 dos partition
inst: fix download task using ip/httpfile to mount a iso over http and prompt for installurl
inst: provide gpt/mbr choice when disk is blank, format esp
integrate disk/edisk with diskparts, bootfs and installer (gpt support)
ip/httpd: fix syslog file
mk9660: write data in alphabetical order
ndb/dns: use same buffer size of udp packet in redistrib() as dnudpserver() (fixes assert)
page: make lookahead fetch work in backwards direction
pkg: remove pkg(1), we regret the error
qc, 9/ppc, 9/mtx: fix wrong if statements
rc-httpd: cleanup cgi handler, various fixes
rootstub: do not create pkg directories
stats: add kernel malloc and kernel draw allocation size graphs
sysinfo: update -p for sysinfo.9front.org
sysupdate: change source repo to https://code.9front.org/hg/plan9front
tar, tarfs: implement longname support
tcs: fix swaped alias mapping gb <-> gb2312
test: use libc.h constants for access() mode (thanks qrstuv)
tftpd: count only options we understand so we wont send empty oack message
uhtml: check if document is valid utf8 even with charset specified
usps: cut the useless part
vblade, cifs, usbuhci: fix parenthesis
webfs: send servername in tls client hello (SNI)
wpa: do not prompt for key when there is already one in factotum
manual pages, documentation, misc
faces: add cs.dartmouth.edu!doug (thanks, qrstuv)
faces: add updated addresses for quanstro, bwc, steve.simon (thanks, erik)
fortunes: Turning off comments.
rob: No we can’t.
rsc: I think I’m missing something.
theo: You are on your own.
troll: Subject: unusable acme
addpt(2): document badrect function, put badrect in .SH NAME so that it gets into the searchindex
colors(1), who(1): add missing SOURCE entries
cputime(2): fix prototype for cycles() (thanks qrstuv)
dhcpd(8): the fs attribute refers to the file server, not the name server (thanks, pena)
esetcursor(2), alarm(2): fix prototypes
event(2): fix estartfn prototype
exec(2): exec argument size only limited by user stack size, fix prototypes, return register (R0) contains address of Tos structure.
freeimage(2), readcolmap(2), writecolmap(2): fix prototypes
ndb(6): fix typo (thanks, pena)
open(2): fix typo
prep(8): document disk/edisk
prep(8): edisk also adds a EFI system partition (esp) when not already exists.
thread(2): fix prototype for threadint() and threadkillgrp() (thanks qwx!)

New 9front release “MAKE EVERY PAY-DAY BOARD-DAY” (2015/05/15)

hardware
kernel and drivers
audiohda: add AMD FCH Azalia Controller (thanks qeed)
bootrc: simplify bootargs splitting avoiding awk
boot: allow alternative proto files per kernel and kernel config for bootfs.paq
boot: bind #c to /dev with MREPL instead of MBEFORE to avoid double entries
boot: disable group/other permission checking in bootfs paqfs
boot/zynq: add jtagload utility, implement sdmmc boot (fat)
devkbd: remove kbdputc() and unused constants
devsd: always page align sd buffers
emmc/pmmc: make all symbols static
ether8169: add 8168GU mac id (thanks qeed)
ether8169: fix Macv45
ether82563: work arround bad eeprom checksum for some i218 card (thanks BurnZeZ)
etheriwl: check the bluetooth co-existance errors (thanks qeed)
etheriwl: make rxon() static (thanks aap)
etheriwl: support for Centrino Wireless-N 2230 from freebsd driver (thanks qeed)
etherseeq: reset the card when it gets stuck (dma timeouts)
kernel: add segio() function for reading/writing segments
kernel: avoid repeated calls to reclaim(), dont miss last page in Pte
kernel: catch address overflow in syssegfree()
kernel: fix integer overflow in syssegflush(), segment code cleanup
kernel: fix physical segment handling
kernel: fixed segment support (for fpga experiments)
kernel: get rid of auxpage() and preserve cache index bits in Page.va in mount cache
kernel: leave shared, physical and fixed segments alone in killbig()
kernel: move arrow cursor definition to port/devmouse.c
kernel: state errstr.h dependency for proc.acid target (fixes acid kinit() on cleaned kernel source tree)
kernel: pass Ureg* argument to note handler in R0 register on arm
nusb/kb: always try to recover on error, fix recover for multi-function devices
nusb/serial: recognize aijuboard jtag interface
pc, pc64: extend initial memory map for qemu multiboot data
pc, pc64: handle 64-bit pci membars
pc, pc64: remove PCICONS debug buffer from pci.c
pc, pc64: state dependency to usbehci.h in mkfiles
pc: import intel i218 nic changes from 9atom
sgi: new kernel for sgi/indy with ethernet and newport graphics support
tcp: fix loopback slowness issue / set tcb->mss for incoming connections (thanks David du Colombier)
usbohci: ensure Ed and Td alignment, fix for amd64
zynq: do mpinit() early so cpu1 debug prints do not intermix
zynq: fix out of bounds access in etherprobe()
zynq: fix usb by implementing delay() and give proper port speed in portstatus
zynq: invalidate cache before booting cpu1
zynq: mmc support
libraries
lib9p: handle erealloc9p(…, 0)
libmach: use #pragma pack to force 4 byte alignment of bootexec.h structures for amd64
libmp: use portable mpdigdiv routines for mips (causes invalid instruction trap on indy)
libsec: remove aesCTRencrypt()/aesCTRdecrypt() (thanks mischief and qrstuv)
libthread: get rid of chaninit() (thanks qrstuv)
pool: avoid triggering assert(b->magic != FREE_MAGIC) in blocksetsize() for mallocalignl()
programs
ape: fix lockinit(), main9, lock.c for mips
aux/listen: removing service script sholud kill listener (thanks mischief)
bzfs: handle erealloc(…, 0)
cc: catch non constant pointer initializers
6c: MOVL xxx, r; MOVLQZX r, r -> MOVL xxx, r
db: fix unicode support (thanks giacomo)
dhcpd: ignore “;” filename from sgi arcs bootp(); command
factotum: remove unused extern declarations of invoker and authdom from header
g: search .awk and .rc files
games/c64: writes to I/O area do not affect underlying memory (documentation lied)
games/doom: fix mips
games/doom: print correct version number on mismatch (thanks qu7uux)
games/gb: better emulation and gbc support
games/gb: fix -2/-3
games/gb: fix gbc dma
games/gb: improve sound emulation by modelling analog behaviour
games/gb: improved audio code
games/gb: limit audio range to prevent clipping
games/gba: fix -3 crash and prevent >100% speed
games/gba: remove debugging print
games/gba: very subtle timer bug fixed
games/sokoban: fix non constant inializer
gif: fix color table clipping (for cb5.gif)
gs: avoid 6c type propagation / constant folding issue for set_cb_end()
gs: fix bug 694539. Reading off the end of the cbuf when dash pattern len is max
hg: install hgweb templates
hget: work arround apache Content-Encoding: gzip for Content-Type: application/x-gzip bug
hjfs: fix erealloc(…, 0) crash when removing member from group array makes it empty (thanks 9dan)
hgfs: preserve newlines in commit message (thanks BurnZeZ)
httpauth: little helper for rc-httpd to do http basic authentication with plan9 auth server
imap4d: simplify auth code using encodefmt(), use readn() to get multiple of 3*18 in base64 input buffer
ircrc: remove unused clonefile
mothra: del, ins, wbr, strike support
mothra: remove unused confirmcurs; move confirmcursor up with the other cursors.
ndb/dns: reduce sencodefmt() to not link in enc32()/enc64() encoders
netaudit: comment file server auth test (unreliable on cwfs)
pemencode: handle base64 input length < 3, fix bogus zero termination
rc-httpd/handlers/dir-index: plan 9 files may be chmod +a
rc-httpd: support for http basic authentication, fix cgi support to work with hgweb.cgi
realemu: ignore access to CMOS/RTC address/data registers
sam: don’t make scroll-wheel-up change focus (thanks clsmith)
sam: prevent array overflow with multiple -i and -a arguments (thanks clsmith)
ssam: don’t pollute the environmen, fix typo
secstore: don’t print errors for dial() and readnvram() when not in verbose mode
smtp, smtpd: fix use of enc64(), fix memory leaks in doauth(), cleanup mkfile
snap: fix readseg() to cope with > 2gb segments
upas/marshal: deduplicate cistrcmp()/cistrncmp()/enc64()
vc: fix coffsect.lnno overflow into nreloc
vl, libmach, kernel: mips has 16K alignment for segments (for bigpages)
vl: prevent stack altering instructions to be hoisted above loads
webfs: do not send credentials in automatic referer url
webfs: fix proxy authentication
webfs: implement CONNECT method for https connections over proxy
webfs: simplify http basic auth code by using encodefmt()
webpaste: update for modified okturing.com
manual pages, documentation, misc
audio(1): explain mp3enc wants raw data in the opposite byte order to /dev/audio (thanks, eekee), fix example
col(1): add SOURCE (thanks, qrstuv)
encode(2): clarify lim argument to enc*(), add SOURCE reference for encodefmt()
nintendo(1), qer(8): fix typos
nintendo(1): add SOURCE entry for games/gba
nintendo(1): update for gbc compatability
mp(2) man page: mpinvert, not mpinverse (thanks, pr)
mothra(1): replace code.google.com with code.9front.org
passwd(1): passwd no longer needs to be run on a terminal; netkey is more stubborn.
pushtls(2): fix signature to TLSconn.trace(), tls.h -> libsec.h (thanks, pr)
rsa(8): recommend secstore(1) for Plan 9 RSA private key storage
secstore(1): add DIAGNOSTICS section
segment(3): document fixed segment creation
wpa(8): the -p flag will also prompt for user/password on wpa enterprise
theo: OpenBSD is not generally known as an exposed democracy.

New 9front release “9FRONT NUCLEAR WINTER OF CODE” (2015/03/02)

kernel and drivers
kernel: increase size of palloc.mem[] user page bank array
kernel: reduce Page structure size by changing Page.cachectl[]
kernel: make pagereclaim() a bit less stupid
kernel: maintain Pool.curalloc for poolallocalign() and blockgrow()
pc, pc64: fix intrdisable() MaxIrqLAPIC -> MaxVectorAPIC (thanks mischief)
pc, pc64: simplify intrdisable()
pc64: enable uartisa in default config
zynq: fix print format warning in screeninit()
zynq: do fixed mapping for ocm memory on boot and make kaddr() and paddr() work with it
devmnt: remove unused mntstats fields from Mntrpc
devusb: fix debug ctl nil crash
devusb: check for nil hp->dump and hp->seprintep
igfx: add 0x2a02 for Intel GM965/GL960/X3100
igfx: displayport support for ivy bridge
usbehci: initial support for usb on zynq, remove uncached.h
wifi: ignore truncated tlv in beacon/probes; fix recvbeacon()
libraries
libc: check name in getvent()/putenv()
libdraw: cleanup getsubfont()
libdraw: check fontchar count in openmemsubfont() and readsubfont()
libdraw: use readn() to read headers and Fontchar array
libdraw: use multiple read() calls in openfont() to read .font file
libdraw: font->display->defaultsubfont vs. display->defaultsubfont, dead code, malloc erros
libsec: add TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA client cipher suit support
libthread: use devdup instead of mounting pipe to /mnt/temp for close-on-exec in procexec()
libthread: remove unused internal functions and old xinc assembler files
programs
[125678kqv][cl]: fix sprint() and strcpy() buffer overflows
6c: eleminate more MOV instructions
6c: fix missing memset in Bconv()
6l: no need to emit rex.w prefix for MOVBQZX and MOVWQZX
auth/factotum: factotum: cleanup getnvramkey()
auth/userpasswd: add to mkfile to build by default
aux/vga: cleanup vesa code
aux/vga: use optional edid information to determine mode when vgadb fails
aux/vga: remove vbs/vbe from mode, use shs/ehs when sync is ment, prefer detailed timing in edid
aux/vga: dont error when vesa setscale fails after modeset (thanks rx9p for reporting)
fplot: add modulus % operator
gs: work arround broken xref table pdfs
gs: backport aes support for pdf-1.6
gs: backport 16MB string support
ircrc: dont require nick and user to be the same for auth/userpasswd (thanks spew)
jpg: handle progressive non-interleaved mode
kbdfs: work around qemu
leak: report alloc size mismatch
mothra: add side scrolling, controlled by left and right buttons on the keyboard. if desired, x-scrollbar can be set visible via the visxbar variable in mothra.c. (thanks, jpm_)
nusb/usbd: fix typo in debug prints, dont use %U format as its not installed
tlssrv: fix usage, dont cat
tlssrv: produce meaningfull error message when unable to read certificate
vc: eleminate strcpy in multab code
webfs: check $httpproxy and error when its bogus
wc: extend for 21 bit runes
added games/c64: Commodore 64 emulator
manual pages, documentation, misc.
fortunes: The NTP codebase is larger than the SSH codebase.
New 9front release “http://9fans.net/archive/ is precious” * (2015/01/29)

kernel and drivers
kernel: avoid inconsistent reads in /proc/#/fd and /proc/#/ns
kernel: evaluate dependencies of bootfs.proto files for bootfs.paq
kernel: use new disk/mkfs -o option to get proper source filename list for bootfs.proto
kernel: generate dummy bootscreeninit() function when building without vga device
kernel: get rid of /boot/boot parametrization
kernel: correct dependency for printstub.$O instead of print.$O
kernel: remove unused bootdisk[] and fix conf.nswppo factor in kernel memory size calculation kernel: new mount cache
kernel: print addresses in hex and sizes in decimal in xallocsummary
kernel: remove “checked xxx page table entries” print from checkpages()
kernel: remove *.acid files in nuke target instead of $CONF.clean target
kernel: replace ulong with uintptr in ucallocb() and fix unneeded parentheses
pc, pc64, xen: change return type of intrdisable() to void
pc, pc64, xen: simplify #P/irqalloc
pc, pc64: adjust mpshutdown() comment to reflect the current state
pc, pc64: fix intrdisable() to remove the Vctl entry even tho we can’t disable the interrupt on apic
pc, pc64: include PCArch.id in #P/archctl simplify #P/ioalloc read handler
pc, pc64: remove old B.COM command line parsing and just pass tokenized BOOTLINE to /boot/boot as argv[]
pc, pc64: untangle acpireset() from mpshutdown()
pc, pc64: untangle embedded controller (ec) dependency from devarch
pc: dont handle pending floating point exception in fpsave thru FPOFF
pc: remove mmuinit0().
xen: fix cross build, fix mtrr dummy functions, remove segmentation constants, not used on xen.
zynq: added zynq kernel
zynq: lilu dallas, multicore
zynq: active.machs = 1
zynq: differentiate various pagefault types in faultarm()
zynq: dont do install target by default in the mkfile
zynq: enable branch prediction
zynq: enable prefetch hints and drop-prefetch
zynq: fix kernel configuration so it builds
zynq: fpsave() and fpclear() both need to disable the fpu
zynq: implement µs()
zynq: only tmpmap() while splhi(), remove unneeded coherence() after tmpunmap(), splhi() in l2free()
zynq: set mainmem->maxsize so kernel malloc() wont fail after 4MB
devip: exclude “don’t fragment” bit from ipv4 reassembly test
devdraw: remove broken color palette blanking
devmnt: handle rpc buffer exhaustion on mntflushalloc()
devvga: disable hardware blanking when switching drivers, check softscreen
devvga: use uintptr for VGAscr.paddr and VGAscr.storage
sdaoe: add to pc64 config, allow aoedev= shorthand for id!lun -> id!#æ/aoe/lun
sdiahci: sanitize ahci pci bar
sdide: add vid/did for 82801IIH Intel Q35 IDE controller (thanks kenji)
sdloop: hardcode Enotup[] string to avoid devaoe dependency
sdvirtio: move common “queue i/o and wait” code into vqio() function, handle notify suppression
sdvirtio: provide enable() and disable() functions so it can be switched off
vgavesa: get rid of the vesa kproc
igfx: work in progress intel graphics driver
igfx: get edid information from lvds
igfx: implement hardware cursor
igfx: support for X200 (thanks bigato)
igfx: support for X60t with 1400x1050 panel
igfx: vga support on x230, fix fdi link setup
igfx: vgadb entries for x230, x200s, l1730p, lcd2190uxp, x60t and x301
iwl: add “reset” ctl message to software tigger device reset
programs
acme: allow typing ‘\n’ in window tags
acme: fix buffer overrun in xfidutfread() and xfidruneread(), cleanup
acme/win: fix fswrite() not assuming iounit < EVENTSIZE
ape: add fprint %z format (thanks Ori_B)
audio/flacdec: fix pcmconv pipeline race (thanks mischief and henesy)
aux/vga: vesa scaling modes
aux/vga: display switching for Intel adapters
aux/vga: scaling modes for VESA
aux/wpa: experimental wpa2 enterprise support
cfs: change default mountpoint to /mnt/cfs and fix the manual (thanks mischief)
disk/mkfs: add -o flag to list source files
factotum: implement proto=mschapv2 client role
hjfs: fix missing superblock dirty mark when reaming
hjfs: make -m default 4 MB instead of 40 KB
ip/ipconfig: set ndb database file with -f argument
ircrc: use aux/trampoline or tlsclient for connections, add -T flag for tls
kbfds: delete autogenerated latin1.h file when mklatin fails
kbmap: fix sprint() buffer overflow (thanks silasm)
ndb/cs: fix spelling (thanks mischief)
nusb/kb: fix alt/altgr being swapped for some reason
nusb/serial: fix nusb/serial hang with ftdi
pci: import pci script and updated database from 9atom
png: fail on invalid bpc
qmail: call mail instead of smtp with the wrong path
sam: ‘^’ and ‘_’ cmds; same as ‘<’ and ‘|’ except that stdout goes to the command window
stats: handle ‘q’ to close
tcs: update charsets. Fixes issue #214
tee: get rid of openf[100] array and just dup() filedescriptors to 3+[0..n-1]
terminus font: update .font files, remove references to old vga bitmaps
upas/nedmail: do not recursively plumb email multipart attachments in print command
various cmds: replace magic numbers with Kdel/Keof, etc
vblade: add erik quanstros vblade utility (with fixes for amd64)
vnc: put newlines in verbose messages
vncs: turn off auth with -A, do not require -c for -x
webcookies: avoid rereading and rewriting the cookie jar file all the time, dont return deleted cookies on search
webcookies: only sync the jar when dirty on clunk
libraries
libc: more strict checktree() for poolcheck
libbio: add Bfdopen() from plan9port
libflate: fix wrong adler32() length calculation (thanks qrstuv)
libdraw: don’t deference nil display in freefont
libdraw: don’t redraw input box in enter/eenter when mouse is moved outside the rectangle
libmemdraw: fix fd leak in openmemsubfont and memory leak in freememsubfont libmemdraw: never point Buffer.alpha to nil (thanks mischief)
libip: skip ipv6 loopback address (thanks mischief)
manual pages
6in4(8): document ayiya
factotum(4): document mschapv2 and wpapsk protocols
hgfs(4): add SOURCE and HISTORY to man page (thanks, spew)
pci(8): document vid/did argument, fix usage
plan9.ini(8) man page: update links to iwn and ral firmware blobs
rc-httpd(8): add HISTORY to man page
xargs(1) man page: add HISTORY (thanks, jpm_)
New 9front release “(no plan9 to hand)” (2014/12/11)

kernel and drivers:
kernel: remove implicit Proc* argument from procctl()
kernel: make use of nil vs 0 consistent in qio.c (sorry)
pc, pc64: provide access to embedded controller with #P/ec file
pc, pc64: command flag sometimes doesnt reset, just check for IBF
pc, pc64: preserve last KB of conventional memory (might contain bios tables)
pc, pc64: more conservative pcirouting
pc, pc64: add and enable ethervirtio driver
pc: get rid of fixed 8MB memory map (now dynamically between 4 to 16 MB depending on kernel size)
pc64: get rid of fixed 8MB INIMAP and dynamically map KZERO-end in l.s
bootfs: remove disk/kfs fileserver, nobody uses it
bootrc: handle multiple fs and auth addresses in netboot, always set auth= in /net/ndb
bootrc: preserve #ec/fs (thanks _sl)
bootrc: add ndb/dnsgetip resolver to bootfs so domain names can be used for fs=, auth= and secstore= (thanks mischief)
devproc: reset p->pdbg under p->debug qlock in procstopwait()
devsegment: fix segmentcreate function signature
ip: implement “hangup” ctl for udp protocol
audiohda: add pci ids for Intel 8 Series Lynx Point (thanks quux)
ether8169: add support for RTL8411B (thanks quux)
add ethervirtio driver
programs:
abaco: cleanup, handle image/x-icon, don’t use backspace as a hotkey, and remove urlconvience()/related functions
factotum: accept multiple bootstrap auth servers in /net/ndb and -a arguments
games/md, games/snes: fix memory leak on resize
games/md, games/snes: flush screen in parallel to audio (fixes buffer underruns on x200s)
games/md: fix interlace at scale 2
games/snes: save more audio state
games/snes: fix extern pic declaration to match reality
games/snes: do message display in screenproc
hpost: fix multipart/form variable name mangeling when field value contains newlines
hpost: break up tags with newlines to avoid sed line buffer limit
httpfile: use webfs, fix 9p flushes
inst: copy efi bootloader in bootsetup
io: add -E flag to access embedded controller space
ip/ipconfig: treat /32 mask as /0
ircrc: don’t quit on blank line (thanks Ray)
ndb/dns: ignore terminating authoritative flag for no-answer when more nameservers are provided
secstore: allow multiple server addresses in $secstore and multiple -s arguments
sed: fix error handling for “Output line too long” and other stuff
upas/fs: handle cwfs “file is locked” error message
upas/smtpd: accept literal ipv6 addresses in HELO/EHLO
upas/smtpd: cleanup hello() domain check code
wpa: fix quoting for essid with spaces
wpa: handle essid: with whitespaces from ether ifstats file
add ndb/dnsgetip program to resolve A and AAAA records during bootstrapping
libraries:
libc: allow dial to be interrupted
libc: improve dial error handling
libc: import cleaned up syslog() function from sources
libdraw: fix atomouse
rootstub: create /sys/src/pkg and /sys/lib/pkg directories
documentation:
fortunes: (no plan9 to hand)
nintendo(1): document games/gba
New 9front release “DON’T FORGET TO VOTE” (2014/11/06)

kernel and drivers:
kernel: fix segattach() rounding of va+len (thanks kenji arisawa)
pc: sanity check bda value in lowraminit() to avoid overflow with efi
pc: add *bootscreen= variable to pass pre-initialized framebuffer info to kernel
pc: enable page size extension early in apbootstrap
pc, pc64: fix ps2mouse memory corruption race
pc, pc64: allow passing RSDT pointer in *acpi= boot parameter, early bootscreeninit(), fix rampage() usage
pc, pc64: make mtrr() callable from interrupt context and before mpinit
pc, pc64: more sanity checking for lowraminit()
pc, pc64: implement acpi reset (for efi)
pc64: put return value of nsec syscall in register on amd64 pc64: syscallfmt for nsec syscall
pc64: print “Plan 9” on boot, cleanup pccpu64 files
pc64: enable rtl8169 driver (thanks awabimakoto for testing)
pc64: remove unused pdballoc and pdbfree counters from mach structure
devcons: avoid division by zero reading Qsysstat
devip: print protocol name in garbage collection notification
devip: sanity check Nchan in Fsproto()
acpi: fix pcibusno() when PCI0._ADR = 0
bcm: fix baudrate setting for serial console (thanks to aap and hiro)
efi: add experimental efi bootloader
efi: add initial pxe support (v4 only)
efi: iso filesystem support for cdrom booting
nusb/kb: dont set boot protocol on HidCSP interface when we failed to read report descriptor (thanks aap_)
compilers and debuggers:
6c/8c: eleminate moves by swaping source and destination operands in peephole pass
vi: implement _nsec syscall
programs:
acid: fix sysr1() stack corruption
cs: use /net/ether* instead /net/ether[0123], dont remove srv file with -n, dont write dns logfile
cs: fix linefeeds in syslog(), cleanup
games/nes: reduce volume, causes overflow and confuses ac97
hg: make intermediate directories like newer hg does
hgfs: make data files with meta headers having the right size after open
inst: ignore *bootscreen= variable when generating plan9.ini
ip/ayiya: experimental anything in anything tunnel protocol client
mk9660: add -E option to create EFI boot entry
ndb/dns: request recursion only for local dns servers
newt: implement ned-style address ranges
oggdec: recognize “begin of stream” packets and restart decoding
pkg: change default repo to http://9front.org/pkg/386
ramfs: fix directory check in wstat() (thanks mischief)
ramfs: allow changing mtime in wstats
realemu: make sure instruction arguments are initialized even when decoding traps
rio: fix “-cd dir” in mountspec being ignored
rio: dont serve a kbd file per window when we didnt got one from the environment
snap: change ulong return of stackptr() to uvlong for amd64
stats: handle /dev/sysstat 32bit overflow in delta calculation
sysinfo: relax regex for start of kernel boot messages
sysupdate/psfax/play: fix unquoted brackets causing rc to perform unnecessary file lookups
teg2: fix wrong l2 setshift address in wholecache() (from sources)
wpa: fork note group when going to background (thanks jpm)
add crc32
add games/gba: Nintendo Game Boy Advance emulator
add gbatype
libraries:
lib9p: fix nil dereference crash in remove for directory permission check
lib9p: fix .. walk crash in deleted directory (thanks BurnZeZ)
lib9p: prevent files from being created in deleted directories (thanks BurnZeZ)
libauthsrv: allow multiple auth= attributes for backup auth servers, authdial() tries each one in order
libmemdraw: update drawtest to use same rounding in alpha calculation as libmemdraw
libmemdraw: fix byte ordering in memfillcolor()
libsec: ecgen() and ecdsasign() fix
libsec: fix hmac for keys bigger then 64 byte block size
libsec: add diffie-hellman functions
documentation:
9boot(8): document efi booting
fortunes: this exact error message is in the fortunes file.
fix some manpage cross references
add /lib/terry
New 9front release “IT´S EASY BUT YOU ARE COMPLICATED” (2014/09/04)

kernel and drivers:
kernel: only complain about no images when theres nothing more to reclaim
kernel: use nil for pointers instead of 0, zero channel umc and dirrock in newchan()
kernel: xinit() use ulong for page counts, cleanup
kernel: fix todfix() race
kernel: make noswap flag exclude processes from killbig() if not eve, reset noswap flag on exec
bcm: apply richards fix for mmukmap (from /n/sources/patch/bcm-mmukmap-bug)
pc, pc64: initial machine check architecture support
pc, pc64: make pc kaddr() check reject -KZERO address (thanks aiju)
pc, pc64: fix off by one error in _multibootentry
pc64: preserve user extern registers R14 and R15 across syscalls, use Ureg.bp (RARG) for syscall number
pc64: dont save/restore DS/ES/FS/GS segment registers on syscall or interrupt, they are ignored in long mode.
pc64: cleanup syscallentry()
pc64: fix wrong Ureg* argument on note handler (thanks _sl!)
pc64: enable ether8139 in kernel config (thanks hiro)
add support for huawei e220 3g modem
add AHCI support for Intel 8 Series/C220 Series Chipset Family SATA Controller. (from sources)
add support for Intel C226 chipset PCI (from sources)
ether8139: fix pointer truncation by ulong cast, use mallocalign() ether8139: fix pointer to smaller int tuncation warning on amd64
devenv: prevent non-hostowner from creating or removing variables in ‘#ec’, cleanup
devmnt: fix potential race with mntflushfree(), remove mntstats, 0 vs nil cleanup
devproc: fix proccrlmemio bugs
devproc: fix syscalltrace error handling, conistent use of nil for pointers
ip: fix missed unlocks and waserror handlers
ip: fix memory leak in ipicadd6()
ip: set arp entry for own v6 address when not tentative
nusb: implement aijus stable uniqueue device names
nusb/kb: delete code for keyboard boot protocol handling, just use hid parser
nusb/ptp: do maxpkt reads to avoid babble error with usb 2.0 devices (thanks mischief!)
nusb/serial: implement flushes
nusbrc: ensure rpi ethernet always appears as /net/etherU0
boot: dont print errors if ethernet has no ifstats file, can happen with usb ethernet
compilers and debuggers:
5a, 5l: add LDREX/STREX/CLREX instructions
8c, 6c: generate enam.c file, just like 5c
acid: fix notestk() on amd64
programs:
5e: push ERRMAX for note message on stack avoiding unaligned stack pointer
5e: fix signed long multiply
abaco: fix double free race of p->status string (thanks BurnZeZ for the proc snap)
acme: fix crash: Get D in a new window with D being an existing directory
aux/8prefix: fix usage
cwfs: fix 32bit multiplication overflows for allocation sizes (thanks kenji okomoto)
cwfs: add optional uid argument to allow command, unify permission override code
exportfs: use argv0 instead of hardcoding “/bin/exportfs” in openmount(), dont use 0 for nil
exportfs: remove getsbuf() nil check, can’t happen
exportfs: simplify freefile() code
expr: fix missing type declarations for match(), which broke on amd64 as pointers dont fit into a long
fstype: fix kfs detection (thanks kenji okomoto)
ftpd: dont skip unmountnet() and return proper error string from dialdata()
ftpfs: dont convert names to latin when string is valid utf-8
games/doom: fix alignment issues for arm
games/md: add -2 -3 -a and trailing newline to usage
games/snes: add -a -h -m -T to usage
import: make aan (-p flag) work in “backwards mode” (-B)
iostats: reimplement iostats as a 9p filter instead of duplicating exportfs
iostats: dont prefix /bin to argv[0] when already absolute or relative path
iostats: isolate fs from interrupt notes
iostats: remove unused fcallfmt, dont leak our mount pipe end into exportfs proc
iostats: properly distribute exit status and give usefull error messages
ipconfig: cleanup code duplication in ip6cfg()
ipconfig: fix readipifc() memory leaks in recvra6 and sendra6 processes
ndb/dns: fix nil dereference crash with convM2DNS() returning reqmsg.qd == nil
page: fix deadlock with addpage (thanks BurnZeZ for the stacktraces)
ping: don’t spin when we get error reading icmp connection, print error and sleep
ptp: fix alignment assumptions for amd64
python: disable symlink and readlink compile options, ape has no reasonable way emulating it
ratrace: make multithreaded ratraces less confusing (for mischief)
rc: fix slow Xqdol(), avoid recursion in conclist(), estrdup(), avoid copying
rc-httpd/handlers/serve-static: restore simple test for file type and hardcode max_age to 1 hour (thanks eekee)
samterm: fix ctrl-b crash when cmd window resized (thanks revex)
secstore: read server from $secstore environment variable
secstore: improve error messages, newSConn() can’t fail
spred: add sprite editor
sysinfo: add cpuid info
tftpd: fix error string packet overflow in nak(), fix syslog reporting
tftpfs: make sure path is null terminated
unzip: fix usage
upas/fs: disable imap mail fetch pipeline due to race
usps: yet another update
libraries:
lib9p: remove executable bit from /sys/src/lib9p/ramfs.c
libdraw: add missing borderop() (thanks aiju)
libframe: use correct text color on frinsert depending on selection (thanks sl)
libmach: fix break point instruction for little endian MIPS (from sources)
ndb/common: add ipv6-icmp, ipv6-nonxt, ipv6-opts, bootps
documentation:
add 9pqueue(2), medium to low quality manpage.
nintendo(1): document snes
sega(1): add man page for games/md (and potential future sega emulators)
fortunes: it´s easy but you are complicated
9FRONT “MACS” Released (2014/06/27)

kernel and drivers:
add _nsec() syscall 53 for binary compatibility with labs distribution
kernel: fix read size calculation in pio() demand load
kernel: simplify fdclose()
kernel: remove wrong and needles mapsize check in newseg() (thanks Yoann Padioleau)
kernel: dont use atomic increment for Proc.nlocks, maintain Lock.m for lock(), use uintptr intstead of long for pc values
kernel: remove Block refcounting (thanks erik)
kernel: move syscall.$O target from config to mkfile
kernel: remove xinc()/xdec()
kernel: new pagecache, remove Lock from page, use cmpswap for Ref instead of Lock
kernel: fix cooperative scheduling for wired processes
kernel: make use of nil and 0 consistent in proc.c
pc: initiate machine reset only from boot processors in mpshutdown()
pc: clip rectangles before sending them to the hardware in flushmemscreen
pc, pc64: simplify reboot code
pc64: remove cpuserver bigboy hack and honor *kernelpercent=
pc64: fix ulongs for address of devarchs realmodemem file
pc64: allocate palloc.pages from upages
pc64: use 2MB pages for preallocpages()
pc64: fix for unsigned comparsion of (top - base) >= size
pc64: dont trap xinc()/xdec() overflow/underflow, delete unused atomic functions
pc64: implement checkmmu() debug function
pc64: remove unneeded parens in pmap()
pc64: use pc/pcrandom.$O instead of port/random.$O for RDRAND instruction support
pc64: fix MS2HZ (thanks Anthony Martin)
xen: import xen 32 bit paravirtual kernel from /n/sources/xen
xen: fix early console
audiohda: add Intel 8 Series/C220 Series support
devproc: fix close and closefiles procctl
devproc: handle 64bit address writes to /proc/n/mem files
ether8169: support for RTL8168G
ether8169: use u16int instead of u8int for C+ command register (thanks pavel / erik)
nusbrc: dont fork usb drivers into background
sdvirtio: experimental support for virtio-scsi
swap: make sure swap address sticks arround until page is written to swap

compilers and debuggers:
6a, 6c, 6l: fix copy propagation

programs:
acid: remove imagepagerefs() acid function
cpu: remove duplicate environment and chdir($home) code (thanks qrstuv)
cpurc, termrc: clarify comments by removing lies
ed: dont pass string constants to mktemp()
file: detect NES and SEGA rom files, detect djvu files, fix newline
g: add *.cpp
games/md: new Sega Megadrive/Genesis emulator
games/nes: support Battle City two players mode with joypads
games/snes: fix -T
iostats: dont sysfatal on 9p read error due to program termination
iostats: add -C flag to enable mount cache
ip/torrent: fix usage, add -A option to set user-agent
ip/torrent: use “torrent” as default user agent
nusb/usbd: serialize /dev/usbevent processing
samterm: use 4K stacks for amd64 (thanks burnzez)
webfs: explicitely unmount old /mnt/web (thanks BurnZeZ)
libraries:
ape/stdio: set errno to EMFILE when running out of streams
libauth: dont print blobs in auth_proxy error strings
libc: avoid static table and supurious reads in nsec()
libc: declare pooldump in pool.h. the manual says it is public
libsec: fix dsagen 64-bit bug (thanks rsc)
libsec: use u32int instead of uint when we need 32 bit (thanks erik)
libstdio: avoid issues with aliasing in dtoa() on amd64 (from 9atom, thanks to erik and charles)
documentation:
dougfacts: remove html corruption and end file with newline
fortunes: i believe any successful Plan 9 distro will need to provide some transparency in the change review process. – Skip Tavakkolian

9FRONT “PEEPHOLE” Released (2014/05/18)

kernel and drivers:
bcm: added getrevision() to vcore which allows you to get the raspberry pi board revision
pc, pc64: handle sse simd exceptions
pc64: increase sizes of physical memory bank maps
pc64: fix embrassing typo in mmuzap()
kernel: always reset notepending in eqlock, handle forceclosefgrp in eqlocks
kernel: stop queue bloat before allocating blocks
devgpio: added new device for rpi gpio (thanks Krystian!)
devmnt: abandon fid on botched Tclunk or Tremove
sdiahci: fix (unused) hba reset function (thanks erik quanstro)
sdide: never timeout or retry scsi commands from the controller driver
compilers and debuggers:
6c, 8c: fix peephole bug for eleminating CMPL $0,R after shift
cc: fix spurious warning on comparsion with scope redeclared variable (thanks aiju)
1l, 2l, 7l, kl, vl: add missing setmalloctag() dummy in compat.c
programs:
abaco: need more stack on amd64
cwfs: fix 1GB memsize limitation
games/doom: get rid of floating point code for division
gs: fix truetype interpreter for amd64
gs: remove PStorage data type from ttf interpreter
gs: fix /undefined in –setcolor– errors on amd64
hgfs: avoid revlogupdate() calls when reading root (thanks burnzez)
htmlfmt: use uhtml for character set conversion
ip/ipconfig: fix dhcp watch
play: set user-agent, otherwise server thinks we'r mozilla m(
samterm: free() after getenv()
samterm: fix esc, make ctrl+b change focus to command window
sed: remove unused ecmp function
tail: seek to EOF to check if seekable. fixes tail on /proc files
tail: fix follow for empty files (thanks cinap_lenrek)
tcs: fix inplace 16 bit unicode conversion
tcs: handle surrogate pairs
uniq: use Bsize for buffers
usps: remove redundant uhtml pipeline
webfs: use mozilla compatible user agent as default
wc: simplify and avoid buffer overflow on long filenames
libraries:
libbio: do not leak memory if realloc fails
libbio: Brdstr, Bopen: set malloc tag to the caller
libbio: bio.h: add varargck argpos pragma for Berror
libip: use snprint() in myetheraddr() to prevent accidents
libthread: thread.h: varargck argpos for threadsetname
documentation:
samterm: document ctrl+b
uniq: document -s option (thanks heaumer)
New 9front release “опен-сссл” (2014/04/28)

kernel and drivers:
kernel: devproc: change address format in segment file to %8p (thanks eekee)
kernel: icmp: use snprint, add more unreachable error messages (from erik quanstro)
kernel: fix printing wrong memory sizes in pageinit(), overflowed on amd64 (thanks aram)
kernel: add secstore and wpa to bootfs
pc, pc64: process acpi interrupt source override entries in a 2nd pass over the madt (APIC) table (thanks erik)
pc64: prevent dat.h from getting overwritten by ../pc/dat.h
nusb/kb: fix trackpoint on thinkpad usb keyboard
nusb: dont include <bio.h>, we'r not using it (thanks erik)
nusb/ether: add RNDIS support (tested on Nexus 5)
nusb: resolve endpoint id conflict with different input and output types
nusb: workaround for endpoints with same index but different types
pmmc: recognize generic mmc controllers (untested)
vga: add support nVidia 7600GS (and possibly 7950) (from kenji okamoto)
wifi: set ether->mbps to highest supported rate of the associated ap
etheriwl: set msb for all rates
etheriwl: add Wifi Link 5150 did
etheriwl: support another (broken) variant of centrino ultimate-n 6300
compilers and debuggers:
6c, 8c: optimize away CMPL/CMPQ reg, $0 instruction in peephole pass
programs:
aanuke: new program, print commands to kill idle aan processes
audio/oggdec: wait for pcmconv child process to exit
auth/login: find authdom instead of using hardcoded cs.bell-labs.com (thanks erik)
btc mkfile: mkdir -p
eqn: fix parallel build (thanks eekee)
games/gb: better video scaler from games/nes
games/geigerstats: fix usage() to exit
games/snes: improved cpu timing
games/snes: fix dspclock signed overflow (music stoping for minute)
games/snes: upsample audio to 44100 hz instead of setting audio device frequency
games/snes: faster scaling
games/snes: mode 5/6; overscan fix
grep: fix wrong rlcass splitting (thanks erik and kenji)
grep: fix tab2, use int instead of Rune to be compatible to 16bit rune system
newt: new program, NNTP client for use with nttpfs(4)
ramfs: fix srvname; postmountsrv() already prepends /srv/
sam, acme: fix character classes quoting for 21-bit runes
secstore: fix gfile/pfile/rfile array sizes
secstore: fix wrong “readnvram %r” error status
termrc, cpurc: exclude wpa from oom kill and swap
tr: fix 4-byte runes fix (thanks rsc)
webfs: do not unescape escape
wpa support for tcp boot, remove duplicate secstore code from factotum
libraries:
libauthsrv: recognize amd64 $cputype in readnvram() to look for default locations
libc: allow announce address of the form #I1/tcp!*!564
libmach: fix printing of amd64 modrm byte register with rex prefix
libmemdraw: improve readbyte() and writebyte() routines
libsec: tlshand: fix memory leaks, fix alloc element size for certs pointer array, error handling, cleanup 36 -> MD5dlen+SHA1dlen
vgadb: add EIZO Flexscan S2231W (from kenji okamoto)
documentation:
aan(8): add aanuke and HISTORY
draw(2): fix missing arg of bezspline on page 5
games(1): geigerstats args

9FRONT “THE MORE YOU PLAY WITH IT, THE HARDER IT GETS” Released (2014/03/22)
kernel and drivers:
kernel: get rid of duppage() (thanks charles)
kernel: keep cached pages continuous at the end of the page list on imagereclaim()
kernel: deprecate 9pccpuf, interpret service= boot parameter to set “cpuserver” variable
bcm kernel: add *kernelpercent option for cmdline.txt
pc64: add R8-R15 in dumpregs()
pc64: fix mmu leak
pc64: fix segattach
pc64: enable etherbcm
pc64: enable pmmc driver
pc64: add multiboot support
pc64: serial console support
pc64: amd64 kernel reboot support
audiohda: start playback only when we have a minimum delay buffered
devfs: fix cclose() crash in devfs error handling
nusb: add joy
nusb: fix loaddevstr() (thanks erik quanstro and richard miller)
etheriwl: provide shutdown function
wifi: decode AP->AP (WDS / bridge) data frames.
compilers and debuggers:
5e: fix amd64
5e: remove newline from suicide string
5e: trap unaligned memory access
8c, 6c: fix mulgen botch error for handling multiplication by zero constant
cc: correct out-of-bounds references in funct.c (thanks charles forsyth)
acid: add some debugging aid function for counting kernel image cache page refs
acid: fix errstr syscall data offset for truss library
prof: properly save and restore RARG for amd64
truss: fix syscall address formats
truss: use A instead of X as address format for data dump
programs:
fork filter procs with RFREND in various programs
aux/cpuid: amd64 support
cpu: make -p work with explicit service in dialstring (same as import)
cpu: remove unused connection directory buffer
exportfs: avoid closing netfd in filter()
exportfs: fix flush races, proc sweeping
import: make import -p work with explicit service in dialstring (thanks mischief)
inst/bootsetup: do not copy 9pccpuf kernel to 9fat
mothra: fix unicode rendering for plaintext
mothra: handle blank lines inside pre tags
mothra: remove unused local variables from pl_nextc()
pcmconv: fix dither clipping
python: add buffer length check in sock_recvfrom_into()
ramfs: replace with new lib9p based implementation
rc-httpd/handlers/serve-static: restore Content-length
xd: change -s option to switch to little-endian units
games/nes: basic audio support, battery backup
games/nes: add state saving
games/nes: add cnrom
games/nes: add surom
games/nes: add uxrom (mapper 2)
games/nes: add mapper 7
games/nes: add dmc
games/nes: add mmc3
games/nes: resize handling
games/snes: audio support (kind of)
games/snes: add state saving
games/snes: add open bus emulation
games/snes: add bg 3
games/snes: add hirom
games/snes: add mode 7
games/snes: mouse support
libraries:
libdraw: fix zero stringwidth() bug
libmach: pragma pack 32bit Ureg structs for amd64
libsec: add aes_128_cbc and aes_256_cbc ciphers
libsec: fix memory leaks in seq_decode() and octet_decode() of asn1 parser
libsec: improve thumbprint code
libsec: move static sendbuf into TlsConnection and give receive buffer a better name
libsec: skip missing thumbprint files; not an error
libsec: fix blowfish endianess confusion (thanks erik)
csdial: avoid useless werrstr() call on success (thanks mischief)
documentation:
games(1), nintendo(1): re-organize nintendo emulators into separate man page; add HISTORY
games(1): add some of the new games, not all have full description tho
nintendo(1): add SOURCE section
mp(2): spelling
nm(2): clarify that U is an undefined symbol
scribble(2): quashed false claims of quick-reference decadance.
ndb(8): document -x option of ndb/dnsquery (thanks mischief)
ndb(8): the truth is too hard to explain, so theres a nice lie.
plan9.ini(8): documented usbwait and service= boot parameter
TO BE THIS GOOD TAKES AGES…
![]() |
![]() |
9FRONT “SUPER 9FRONT 64” Released (2014/02/16)
New 9front release “SUPER 9FRONT 64”
added amd64 kernels: pc64, pccpu64
numerous fixes to programs for amd64
acid: add semacquire/semrelease/tsemacquire syscalls, handle _seek hack for amd64 (thanks erik); fix acid/network, fix address formats from X to A; remove objchar, prefering foobar.$objtype.acid; make ‘a’ and ‘A’ format to have the same size as mach->szaddr; fix memory corruption due to gc; fix memory leak in fundefs (from 9atom)
cc: emit right acid format for address
devdraw: screenid is BGLONG, not BGSHORT; fix memory corruption reading draw ctl file
etheryuk: fix lockups (thanks burnzez for testing)
hpost: fix Content-Type parameter separator for multipart/form-data POSTs
ip/torrent: print tracker errors/warnings in debug mode and allow setting peerid
jpg: center image in screen
libc: remove malloc.acid and pool.acid
libdraw: work arround devdraw truncating screenid as 16bit; cleanup string() and stringwidth()
libframe: fix stringwidth problems
libmach: fix wrong operand order of MOVLQSX instruction disassembly
libmemdraw: apply erik quanstros fix for sign preserving in byteaddr()
libpanel: remove pointless pointer casts; fix format strings
mixfs: make mixbuffer addition atomic
mothra: dont panic on invalid regular expression in searchbox
netif: fix wrong qid in 3rd level stats/ifstats files (thanks burnzez)
ramfs: remove mainmem pool limit when called with -u flag
realemu: implement IDIV, mark 0xE0000 writeable, fix DIV overfow trap
rio: implement “look” (thanks lf94); make scrollwheel handling consistent with sam
sdiahci: fix hardcoded 512 byte sector size
socksd: close inside udp server one we get a connection (udprelay)
weather: trim garbage from output
winwatch: prevent divide by zero if the window height is too small
added a segment for segattach(2) that gives access to the raspberry pi’s gpio header
removed /sys/games/lib/fortunes
added /lib/uriel

9FRONT “CTRL-F” Released (2014/01/04)
New 9front release “CTRL-F”
9fs: add atom and atomdump for atom.9atom.org
acid leak: various fixes
ape: move strdup() from libbsd to libap (from sources)
cifs: fix compiler warning
cifsd: experimental ntlmv2 server authenticaion support
cpu: add -n flag for the remote site to allow “none” authentification method (inspired from sources cpu-noauth patch)
devdraw: fix drawdelname() string memory leak
devether: remove qfull prints and fix loopback packet handling of etheroq()
devmouse: exclude sroll-wheel buttons from differential button handling
devproc: make sure /proc/n/wait waits for the right process children; fix noteid permission checks for none
devssl: use parsecmd() to process control message to get rid of 128 byte stack buffer limit
draw: fix drawing of replicated source image on memlayer with a clip rectangle
ether82598, ether82563: remove packblock() avoidance hack
etheriwl: add did 4232 for intel wifi link 5100 (thanks, hmr)
etheryuk: fix problems with yukon2 ep+ rev0, deoptimize
exportfs: get rid of limits, cleanup
factotum: add ntlmv2 (mschap2) client auth for cifs
fortunes: That’s a video card, Blake.
fshalt: rfork n to avoid limbo namespace when the command fails
gif: remove warning when animated gif is rendered to bitmap
kernel: fix pexit() Waitmsg memory leak; simplify pexit(), avoid making wait record for RFNOWAIT (parentless) procs; update debug log format string for poolallocalign(); make sure user text, data and bss wont overlap the stack segment in sysexec(); dont call pprint() while holding up->debug qlock; halt idle processors on mp system by default (from sources); nexterror() fixes; postnote() fixes; skip timed out alarms when inserting in procalarm() (thanks erik)
libthread: avoid calling thread waiting for fork/execed process to finish if we dont have to
mothra: mouse scrollwheel behave the same as in sam; add regular expression text search (thanks mischief, sl)
ndb/dns: check bad name length in convM2DNS.c:^gname()
page: add -j flag and menu item to snarf plumbable bookmarks (thanks _trav for starting it); mouse scrollwheel behave the same as in sam; better backwards scrolling; fix blit bug when page was translated offscreen; remove debug code, dont create $home/lib/mothra/mothra.err file
ps2mouse: disable packet streaming during reprogramming
rio: dont consider shell characters as part of the filename for auto completion
telnet: disable changing raw mode when a pipe was being used (from sources telnet-notkbd patch)
window: fix various problems, cleanup
/sys/lib/plumb/basic: add rules for page bookmarks and audio playback
add audio/mixfs to allow simultanious playback streams over a single /dev/audio
add /dev/cputemp for bcm kernel (Thanks Krystian!)
add HISTORY to various man pages

9FRONT “OFF-COLOR CLARA” Released (2013/11/29)
New 9front release “OFF-COLOR CLARA”
abaco: make validurl() accept internationalized domain names
acidleak: show free blocks as free (leak -b)
acme: fix arrow key oddity (thanks mark van atten and erik)
add aml(2) manual page
auth/rsa2ssh: add SSH2 RSA output format (from plan9port)
devsd: fix scsi emulation for disks bigger than 4 billion sectors (from erik quanstros 9atom)
drawterm: remove (outdated) drawterm
faces: add 9front.org/unknown icon (thanks qrstuv)
fix devshr related panic caused by Mount.to being nil (thanks mischief!)
init: dont rely on path containing dot
kbdfs: add esc1+shift and esc1+ctrl pages (see sources kbmap-uk-weird patch)
kernel: add support for multiboot memory map, make image cache not hold onto the channel, remove nocache flag, kproc sleep error handling
add libjson
libplumb: search for plumber only at /mnt/plumb, and don’t try to mount $plumbsrv if the search fails
make auto negotiation work on 82562et (thanks mischief!)
mp3dec: fix volume for mp3dec
ndb/common: add ipv6 addresses of root name servers
ndb/dns: add support for internationalized domain names, filter dns answers avoiding cache poisoning
play: guess file type from file extension if mimetype fails
rio: darker lighttitlecol for -b, elemination of temporary memory allocations, huge simplification of flush handling
sdide: add pci did for VIA VT6415 PATA IDE controller
smtp: fix free on uninitialized pointer
u9fs: fix misuse of Fcall.afid in p9any authentication module. (from sources patch/u9fs-afid)
vt: utf-8 support, fix xterm function keys, osc escapes
webfs: support for internationalized domain name urls


