New 9front release “THINK ABOUT THE FUTURE”



direct download

dash 1

dash 1 manual


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.


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


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


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


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


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


fortunes: Emacs now supports webkit.