New 9front release “the art of conversation”


direct download

dash 1

dash 1 manual

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


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


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 tag

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

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