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

OSHUG 46 — The Name Game, feat. Plan 9 & Inferno, Dr Charles Forsyth (2016/10/08)
Dr Charles Forsyth is a founder and Technical Director of Vita Nuova, which specialises in systems software and distributed systems.
Video published on Oct 4, 2016
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.

Harvey, an operating system with Plan 9’s shadow (2015/08/04)

This is not a Monad tutorial interviewed Álvaro Jurado about the development of Harvey OS, an effort to get the Plan 9 code working with gcc and clang.
From the interview:
What is Harvey OS?
Harvey’s website states that its aim is to provide a modern, distributed, 64bit operating system that extends the elegance of the original Unix model, in which all resources are represented as files and directories, to a networked environment, and allows for new ways of working.
Read more here
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!)

Bell Labs /n/sources mirrored (2015/07/11)
When plan9.bell-labs.com came back online this week, several of us realized that it was time to create an updated mirror of the whole thing. To that end, several of us have.
A small number of files (restricted permissions, corrupt blocks, etc.) were not copied, but we did grab everything we could. The whole thing is around 3.5GB.
This mirror (and probably others) will stay online indefinitely.
Behold:
; 9fs contrib.9front.org
post...
; ls /n/contrib.9front.org/sources
/n/contrib.9front.org/sources/9grid
/n/contrib.9front.org/sources/adm
/n/contrib.9front.org/sources/contrib
/n/contrib.9front.org/sources/dist
/n/contrib.9front.org/sources/extra
/n/contrib.9front.org/sources/lsr
/n/contrib.9front.org/sources/nix
/n/contrib.9front.org/sources/patch
/n/contrib.9front.org/sources/plan9
/n/contrib.9front.org/sources/wiki
/n/contrib.9front.org/sources/xen
;
Thanks to khm for helping pull it all before the Bell Labs machine goes down again.
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

Clive (2014/05/24)

From: Francisco J Ballesteros Date: Fri, 23 May 2014 13:54:27 +0200 To: Fans of the OS Plan 9 from Bell Labs Subject: [9fans] OT: clive Hi, we have been working on a new system, named Clive, it’s written in Go and includes its new weird file protocol, named zx. I thought that some of you might be interested, so I’m writing this mail. The http://lsub.org/ls/clive.html page has links to everything, and, to avoid noise in 9fans, we will make any further announce regarding clive at the clivezx google group created for that purpose. We are using some parts of the system already, but, it’s an ongoing work on a new research system, beware :-). Also, we are going to make it run on a modified nix kernel, but that’s not yet done. Although it will make it more related to 9. regards
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

Fix Go on Plan 9 or else (2013/12/02)
Go team member Brad Fitzpatrick has proposed dropping Plan 9 support for the Go. 1.3 release:
This is a discussion about dropping broken and unmaintained Go ports
from the main tree once the Go 1.3 tree opens.
Specifically, I propose deleting plan9 and dragonfly support. Neither
has many users, nor are they running a builder at
http://build.golang.org/.
Both can be maintained by their respective communities out-of-tree.
Once those communities have builders running and passing all tests,
they can be considered for inclusion back in the tree. This is
similar to the "tiny" runtime and NaCl support which were once in the
tree but now exist only in the hg history.
The community has responded by setting up a Google Group and IRC channel to coordinate work on the port:
https://groups.google.com/forum/#!forum/go-plan9
#go-plan9 on freenode
Edit: Plan 9 has been added to http://build.golang.org.
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

9FRONT “FULL ENSIGN” Released (2013/10/27)
New 9front release “FULL ENSIGN”
acme: attempt to fix tag lines collapsing to zero height on window move (issue 189)
aux/statusbar: emit final newline in textmode when finished
cwfs: add checktag() call for cache bucket in dumpblock(); fix error strings; more checking for cfsdump(); cleanup Tsuper hack in cwrecur()
devmouse: differential handling of /dev/mousein buttons
exportfs: start filter in separate rendezvous group
factotum: update rsa for ssh2 (sync with sources)
fdisk: fix struct padding for amd64 (from erik quanstros fdisk-64-bit-table patch)
hget: handle http contentencoding (compression)
ip/torrent: check piece offset, backoff from piece on hash error
inst, various mkfiles: do not rely on path containing the . element
kbdfs: implement
x to enter variable length unicode as suggested by erik quanstro; implement keyboard mouse buttons with /dev/mousein kernel: disable freelist page caching for executables run from uncached mount
libc: remove doprint
libpanel: fix memory corruption bug in plinitentry(), add pl_erealloc()
mothra: handle
ndb/common: update ip for d.root-servers.net; dont use bell-labs dns servers for rfc1980 zones
newuser: make lib/profile read drawterms /dev/secstore when available
nusb/disk: handle blocking usb access with srv released
nusb/ether: new driver interface with kernel inspired Block buffers
rc: make default path = (/bin .)
unzip/zipfs: handle optional data descriptor signature in trailer
usps: update for new usps website (thanks, mischief)
vncs: create dummy /dev/mousein and /dev/mousectl files
field promotion: update system to 21 bit runes

9FRONT “3☺☺☺” Released (2013/10/07)
New 9front release “3☺☺☺”
5c: apply richard millers 5c-nan-cmp patch (from sources)
5l: apply richard millers 5l-incfloat patch (from sources)
9bootfat: only check for fat at block 0 on floppy drives (thanks aap)
acid: handle buffer overflow with ridiculous long symbol names (thanks mischief)
apm: fix wrong segment load, zero segment registers
audioac97: remove i/o bar magic, fix ac97mixreset busywait-forever timeout
audiohda: allow manual pin routing; more verbose audiostat; initial mute of al widgets; vmware support (thanks dreadlorde)
aux/statusbar, aux/statusmsg: dont fork in background for window
e820: handle duplicate and overlapping e820 entries, handle overflows
ether8169, etherdp83820, ethervt6102: fix snprint READSTR bugs (thanks pap)
ether83815: fix `auto neg timed out' error with sis 900 rev 635.
exportfs: fix filedescriptor leaks
faces: fix callerpc for realloctag in erealloc (thanks qrstuv)
lib9p/hjfs: use x != ~0 instead (type)~x conditionals to work arround arm compiler issue
libauth: add sanity check for auth_proxy write size
libdraw: make newwindow() unmount the old window
libmach: fix wrong formating for arm LDRH/STRH/LDRSB/LDRSH (MOVHU/MOVBU) instructions
libevent: drop queued mouse events
mothra: mothra: avoid intermediate rc shell processes; isolate rendezvous group; run page in own note group; close unneeded filedescriptors after forking; fix null dereference crash
nusb/ether: add rtl8150 driver
page: avoid intermediate rc shell processes with using exec; move newwindow() before forking namespace; dont tell rio our pid
pkg/list: handle more directory listings
rio: fix bad rect bug; fix Xfidwrite memory leak on flush
tarfs: make file name safe, canonical and free of . and .. (from sources)
tcs: add html5 rune entities; eleminate ambigous html entity runes.
vt: dont pollute the outer environment (thanks mischief!)
add sdp(3) from sources
add webpaste(1)

9front “NO SUICIDES” Released (2013/09/15)
New 9front release “NO SUICIDES”
WELCOME HOME, AIJU!
9bootfat: always try plan9 partition even when not marked active
abaco: fix memory leaks
acme: use threadexitsall() to tear down mouse and keyboard procs on error; avoid useless tagline/window redraw if not needed; add p9p acme patch that allows multiline tags (thanks rsc and lf94)
archacpi: make pcibusno() work on non pci bridges; archacpi: experimental handling of interrupt link devices, io access
auth(8) commands: fix uninitialized Tm.zone in getdate()
bitsy/keyboard: dont resize our own window
cifs: fix timezone for timestamps
devkbd: fix wrong refcount on open error
devmouse: fix openmode() handling
devproc: properly handle exclusive refcount for /proc/trace
devshr, devaudio: openmode()/devopen() error handling
esd: enlightenment sound daemon
ether6105m: increase timeouts for Soekris 5501s (from sources)
etheriwl: recover from rfkill toggle or firmware crash
file(1): recognize AAC audio files, from sources
games/catclock: protect black border with clip rectangle and dont print when window is too small
games/juggle, games/catclock: keep up with queued mouse events
imap4d: apply djc’s patch to fix search (from /n/sources/patch/imap4d-cistrcmp)
libaml: new io interface, add amlnew()/amltake()/amldrop(), late binding names, FindSetLeftBit/FindSetRig; fix memory leaks
libc: Prevent infinite recursion when modf is called with NaN or Inf argument. (apply richard millers / modf-nan patch from sources)
libdraw: fix leftover processes or programs failing to restore window labels when receiving interrupt note; fix ekbd() memory leak; cleanup
libsec: only send client cert when we have one
libhtml: fix double free of form action
mk: handle rc blocks in shell quote
mp/pci: msi support for hypertransport platform
nusb/ether: add aue driver for admtek pegasus usb ethernet adapter
pmmc: add support for Ricoh 5U23 SD/MMC controller
rc: flush environment variables (update /env) before fork
resample: fix XRGB32 color channel handling
rio: position keyboard window (-k) at the bottom of the screen
tls: fix various tlsClient()/tlsServer() related bugs
tm2sec: assume local timezone when Tm.zone[0] == 0 (fixes dossrv, zipfs timestamps)
usbehci: fix portreset
upas/fs: fix potential filedescriptor leaks
vncs: fix cmdpid fork bug; fix missing free for window label
vt: fix off by one memory corruption
wpa: repeat rsne setup after deassociation (roamng between access points)
man pages: cursory audit for misspellings and typos
numerous programs: set exit status; remove unused #include <bio.h>

9FRONT “bad breath sETH” Released (2013/08/10)
New 9front release “bad breath sETH”
abaco: use faster resize instead of resample for image scaling
abaco/rio/acme/samterm: unsticky scrollbars
cwfs: fix out of order replies; use atomic compare and swap to avoid semacquire() syscalls in new queue implementation
dns: ignore spam addresses from cname answers
etherrt2860: add rt3090 support and make style more consistent
ether82563: remove buffer pool optimizations; make link status work for 82567; determine phy number by probing phy id registers for 82567; work arround for 82579LM on Lenovo X230
ether82563, etheriwl, pmmc: fix potential multiprocessor races with wakeup
ether82598, etherigbe: remove receive buffer pool optimization
inst: remove systype step. system will be terminal with a disk after installation.
libhtml: handle ' character reference
mothra: log post data with debug flag, increase max token length from 1K to 4K
nusb/kb: only send to mousein when mouse state actually changes (zero detlas, same buttons)
page: use less aggressive read ahead and keep track of image memory allocation
rio: shorten overlong window labels; add ^B control sequence to move cursor to output point
sam: avoid thread stack overflow with 32bit runes (from sources)
smtp: fix -t flag
ups: fix for a few days
wikifmt: handle & as & in anchor name, more complete title to name= anchor translation
image encoders/decoders: various fixes
add /lib/br
apply erik quanstros tcp-bdp patch (from sources)
apply richard millers arm debug fixes (from sources)
do not limit kernelpercent IFF *imagemaxmb= is used on a cpu server


