Latest News

Plan 9 on epaper (SPI driver) (2021/01/06)

I wrote a driver to run Plan 9 terminal on this display. On the picture it’s running ‘games/mahjongg’. I got the serial peripheral interface driver to run fast enough that you could comfortably use this screen. – Cheery

7.8 inch e-paper display

Read more here.

0intro interviews (2020/12/21)

Episode 1: Ori

Ori Bernstein discusses Plan 9, an internship with Bell Labs, Myrddin, and so much more.

Recording: https://0introsa.blob.core.windows.net/0intro/ori.mp3

Uncut: https://youtu.be/jYen3cXss8k

Episode 2: Sigrid

Uncut: https://www.youtube.com/watch?v=CABaKLz7UOE

9FRONT “EMAILSCHADEN” RELEASED (2020/10/19)

front 9FRONT "EMAILSCHADEN" front

DOWNLOAD

Multiple installation media are provided for PC and Raspberry Pi. For PC, burn an .iso file to CD, or dd it directly to USB media. For Raspberry Pi, dd an .img file directly to sdcard.

The pi.img file can be used for Raspberry Pi 1, 2, and 3. The pi3.img file can be used for Raspberry Pi 3 and 4.

http://9front.org/iso/9front-8013.d9e940a768d1.386.iso.gz.torrent

http://9front.org/iso/9front-8013.d9e940a768d1.amd64.iso.gz.torrent

http://9front.org/iso/9front-8013.d9e940a768d1.pi.img.gz.torrent

http://9front.org/iso/9front-8013.d9e940a768d1.pi3.img.gz.torrent

   cpu% sha1sum -2 256 9front-8013*.gz
   e8a224a8220e472593dd17a2479ba5a9497f6790cac23de2522400930a4dd626      9front-8013.d9e940a768d1.386.iso.gz
   7771be88148560a8e59283a93c98b9ecc37172e7a2acff356f12e64aac9e5c77      9front-8013.d9e940a768d1.amd64.iso.gz
   a63a87272258b17fdd24f2807252134aee311af243ec8274f715f8dcf1b86f1f      9front-8013.d9e940a768d1.pi.img.gz
   5b5baa5c3fd0b69a71aaa7bca867508210fac25d8ad17d76b97d8aece1c9f3dd      9front-8013.d9e940a768d1.pi3.img.gz

MIRRORS

http://9front.org/iso/

http://r-36.net/9front/

http://lux.felloff.net/usr/cinap_lenrek/9front/

MERCURIAL REPOSITORY

https://code.9front.org/hg/plan9front

DASH 1 MANUAL

http://fqa.9front.org/dash1.emailschaden.pdf

dash 1 and man pages in print: http://9front.org/propaganda/books

THANKS

presotto

NEW IN THIS RELEASE

New date/time formaring/parsing API in libc

Kernel updates for Raspberry PI4 8GB model

Intel wireless driver now supports 8000 and 9000 family cards

New Thinkpads now fully supported: T480, T495

Big kernel PCI code overhaul

KERNEL AND DRIVERS

archacpi: use 64-bit uvlong for physical addresses

audioac97: use 64-bit physical addresses

audiohda: use 64-bit physical addresses, check pci membar types

audiohda: use PCIWADDR() instead of PADDR(), handle 64-bit dma addresses

audiosb16: cleanup audioprobe(), cast ISAConf.port to ulong

aux/acpi: connect EC region handler, fixes battery status on eeepc 1000px (thanks Peter Kosyh)

aux/acpi: forgot to commit -p option

aux/acpi: write a man page, fix usage, call threadexits

aux/vga: eepc igfx support (thanks p.kosyh)

aux/vga: use 64-bit physical addresses for pci membar

bcm64: bring pci code in line with the pc/pc64

bcm64: fix usb xhci controller on pi4 8GB variant (thanks richard miller)

bcm64: handle 8GB of physical memory for raspberry pi4

bcm64: increase maximum segment size to 8GB

bcm64: use 64-bit uvlong physical address in vmap()

bcm64: use uvlong for ISAConf.port

bootrc: allow kbmap to be set via plan9.ini (thanks Aaron Bieber)

devether: print Ether.port as 64-bit uvlong

devip: fix parseipmask() prototype in ip.h

devip: implement ipv6 support in ipmux packet filter

devip: pick less surprising interface address in header for incoming UDP packets

devlml: use 64-bit physical addresses

devmnt: print chanpath for unexpected reply tag

devpccard: use 64-bit physical addresses

devpnp, devether, devusb: cast ISAConf.port to uvlong (for 32-bit implementations)

devpnp: print pci membar as 64-bit uvlong

devusb: keep isochronous ep->hz consistent with maxpkt, ntds and pollival

devusb: print Hci.port as 64-bit uvlong

devvga: use 64-bit physical addresses for framebuffer

etherbcm: handle 64-bit host addresses, use PCIWADDR() instead of PADDR()

etheriwl: add Wireless 8260 card

etheriwl: add for Intel Wireless-AC 9260

etheriwl: add support for Intel Wireless AC 8265

etheriwl: delay before crystal calibration

etheriwl: don’t break controller on command flush timeout

etheriwl: remove stations after disabling binding quotas, drain all queues in rxoff7000()

kbdfs: add a compose sequence to type ⑨

kbdfs: allow >16 bit runes in /lib/keyboard

kernel: don’t strip binaries in bootfs.paq

kernel: fix Abind cyclic reference and mounthead leaks (thanks Alex Musolino)

kernel: get rid of unused ucallocb

kernel: make segments non-executable when icache is not maintained

kernel: massive pci code rewrite

kernel: remove unused segment argument in freepte()

kernel: segflush() needs to flush tlb of other processes

nusb/lib: use fmtprint for the entire dump to be printed out

nusb/serial: add ids for FT230X (thanks mischief)

pc, pc64: implement 64-bit pci membar support

pc, pc64: remove mystery “type” bits in pcicfgrw*raw() (fixes qemu, thanks mischief)

pc, pc64: use 64-bit physical addresses for ISAConf.port

pc, pc64: use 64-bit physical addresses for vmap() and upaalloc()

pc, xen: make PAT support optional (for xen)

pc64: disable interrupts in mmuwalk() for checkmmu()

pc/ether*: use 64-bit physical addresses and check pci membar types and sizes

pc/pcmciamodem: cast i/o port to ulong

pc/pmmc: check pci membar type

pc/vga*: use 64-bit physical addresses and check pci membar types and sizes

pc/wavelan: print Ether.port as 64-bit value

sd53c8xx: use 64-bit physical addresses

sdiahci: use 64-bit physical addresses

sdiahci: accept AHCI controllers from ASMedia vendor id (thanks mischief)

sdmv50xx: use 64-bit physical addresses and check pci membar type

sdnvme: handle machines with more cpu’s than submit queues (thanks mischief)

sdnvme: make sure pci membar type is memory

sdnvme: use PCIWADDR() instead of PADDR()

sdodin: use 64-bit physical addresses and check pci membar type

uartaxp: use 64-bit physical addresses and check pci membar types

usbehcipc: use 64-bit physical addresses and check pci membar type

usbuhci: make sure pci membar type is i/o

usbxhci: implement isochronous in transfers (for webcam, audio recording)

usbxhci: use 64-bit physical addresses

wifi: add packet timestamping support

COMPILERS AND DEBUGGERS

7c: fix wrong type on OASxxx operations

cc: promote integer constants according to c99 spec.

cpp: fix mutually recursive macros

LIBRARIES

ape/ctype.h: add isblank, fix functions (thanks staalmannen)

ape/libdraw: add missing eenter (thanks phil9)

ape/limits.h: fix typo in (U)LLONG_MAX

ape: add missing rerrstr.c

ape: make libplumb available under ape.

ape: simplify mkfile (thanks amavect)

ape: stdio.h: correct return type of putc

ape: stdio: fix warnings, make code more standard

libaml: fix fault when the second operand of comparison cannot be converted

libc: introduce new time and date apis.

libc: ignore ‘?’ in date format strings

libc: make yday 0-based, as docs suggest

libc: tmparse: should ignore leading whitespace

libc: tmparse: put in local timezone hack

libc: tm2sec: clear new fields in tm

libndb: order subnets by prefix length for ndbipinfo() lookups

libplumb: add missing mkfile

libttf: check directory() result

libttf: fix cmap subtable offset type and rank UCS-4 higher (more codepoints). fixes runes > 0xffff

PROGRAMS

abaco: add fonts.h to HFILES in mkfile (thanks eekee)

acme/win: add trailing space to window tag

acme/win: fix window recreation command

acme: add missing logf.c

acme: implement ‘scratch’ ctl command (thanks Drew DeVault)

acme: implement position-dependent scroll-wheel scrolling

acme: import changes from plan9port (thanks jxy)

acme: import event log from plan9port (thanks fshahriar)

audio/flacdec: add -s SECONDS option to seek before decoding

audio/mp3dec: add -s SECONDS option

audio/mp3dec: mad timer duration is all wrong, use samples instead

audio/oggdec: add -s SECONDS option to seek before decoding

audio/oggdec: allow -s 0

audio/oggdec: give it enough chance to seek from the start, where first seek might be still too close to the beginning of the file

aux/cpuid: flush instruction cache of after patching trampoline

aux/getflags: fix named rune arguments.

aux/ms2, aux/na: fix warnings

aux/trampoline: Implement inactivity timeout (-t option)

cwfs: update mtime and qid.vers for directory on rename

date: use new libc date apis.

dc: increase exponent limit (thanks unboe, lyndon)

deroff: fix out-of-bounds access if runes above 0X80 are inside EQ clauses (thanks mmnmnnmnmm, via plan9port)

diff: support unified diff via -u

faces: remove log support

g: add ‘.hs’ and ‘mkfile’ to the walk. (thanks joe9)

games/4s: increase thread size (thanks majiru)

games/nes: workaround for truncated chr

hjfs: update mtime and qid.vers for directory on rename

htmlroff: fix out of bounds access (thanks Rei-sen, via plan9port)

imap4d: fix missing return in %δ format of Dfmt()

imap4d: fix mkfile to have the correct default target

imap4d: get rid of unixdate/unixfrom handling

imap4d: reject invalid month in date2tm()

imap4d: respect errors from read(), remove debug prints

ip/6in4: request ipv4 packets only in ipmux filter

ip/cifsd: add FIND_FIRST2 SMB_FIND_FILE_FULL_DIRECTORY_INFO info level

ip/ftpd: handle “allo” command by treating it as a no-op

ip/httpd: fix ‘mk nuke’

ip/tinc: run script sub-shell in its own environment

ip/torrent: fix size check in 64-bit “v” unpack (thanks pr)

ip/torrent: try harder allocating ports

ndb/dns: allow multiple txt, nullrr, cert, key and sig records (thanks kvik)

ndb/dns: mark ns record authoritative when in our area for delegation

ndb/dnsdebug: add -c flag to debug caching dns server behaviour

nedmail: don’t try to shoot down subcommand on interrupt

png: remove bogus chanlen warning

pre-lib9p servers: fix incorrect Tversion handling

ptrap: fix /env/status always being set on main process exit

qball: remove unused #include <stdio.h>

ramfs: make Elocked[] more consistent (thanks fazlul)

rc-httpd: fix invalid test(1) invocation in dir-index

rc: avoid forking for final command that has variable assignments (to get $apid right)

rc: avoid stat calls for directory globbing

replica: fix mkfile script installation (thanks Amavect)

rio: move the code for ‘send’ into a function

seconds: use new libc date api

seconds: tolerate trailing whitespace in dates

snoopy: add ipmux pseudo protocol

sshfs: update usage text to match man page

sshnet: prevent ssh process from keeping the mount alive

syscall: utility overhaul

syscall: don’t append ‘\n’ to the output

syscall: fix build problem caused by stale tab.h

upas/fs: extract proper date from unix header

upas/fs: fix handing of multi-line header fields (thanks theinicke)

upas/fs: fix memory leak in ref822()

upas/fs: fix truncation of plumb date

upas/fs: fix wrong nparts field index (changed in previous commit)

upas/fs: move unixheader handling to parseheaders()

upas/fs: port date parsing to libc apis

upas/fs: put date822 into the index, fix from and replyto handling

upas/fs: remove now unused Mtrunc mimeflags constant

upas/fs: remove unused function date822tounix

upas/fs: use memchr() instead of strchr() in hdrlen()

upas/fs: wait until the index becomes unlocked

upas/fs: make imap debug logging less noisy

upas/marshal: make attachment failure fatal

upas: appendfolder(): don’t be picky about the timezone of ctime()

upas: appendfolder(): skip the address from unix header before date

upas: convert to tmdate, change timezone format

upas: fix appendfolder timestamps (thanks umbraticus)

window: fix error exit with the -m flag

vmx: add Kmod4 key

vmx: does not do well with certain fb widths, so restrict it

vmx: set xstart to either nsec or cycles depending on what is available

vmx: use actual system kbmap

vmx: use _tos->cyclefreq (thanks cinap)

vmx: use cycles() instead of nsec() when possible

vncv: implement rfb 3.8 protocol (thanks Iruatã)

DOCUMENTATION

9p(2): fix typo

acme(1): document log file in manpage

audio(1): add new -s SECONDS option

ctime(2), tmdate(2): document ctime/tmparse incompatibility

chdir(2): add reference to getwd(2) in SEE ALSO section

cifsd(8): fix typo (thanks senthil)

faces(1): remove bespoke date parser

getwd(2): add reference to chdir(2) in SEE ALSO section

graphics(2): fix typo

ip(3): fix typo in manpage (thanks jstsmthrgk)

mk9660(8): fix reference to proto file format

tmdate(2): document tz field

tmdate(2): fix missing arg, fix formatting (thanks joe9)

tmdate(2): fix examples, stale references (thanks deuteron)

tmdate(2): fix mistakes in prototype (thanks moody)

tmdate(2): fix name of tm struct

tmdate(2): fix typo (thanks mveety)

torrent(1): update url in examples section

walk(1): clarify how -n argument works (thanks umbraticus)

walk(1): improve wording, formatting

walk(1): fix typos

OTHER

/lib/rob, /lib/rsc, /lib/theo: So it sounds like everyone is in favor of the entire generics proposal and all the semantics, and all we have left to hammer out is the bracket characters? Do I have that right?

bullshit: decentralized ActivityPub

back

9FRONT “PLAN9-HATERS” RELEASED (2020/05/28)

front 9FRONT "PLAN9-HATERS front

DOWNLOAD

Multiple installation media are provided for PC and Raspberry Pi. For PC, burn an .iso file to CD, or dd it directly to USB media. For Raspberry Pi, dd an .img file directly to sdcard.

The pi.img file can be used for Raspberry Pi 1, 2, and 3. The pi3.img file can be used for Raspberry Pi 3 and 4.

http://9front.org/iso/9front-7781.38dcaeaa222c.386.iso.gz

http://9front.org/iso/9front-7781.38dcaeaa222c.386.iso.gz.torrent

http://9front.org/iso/9front-7781.38dcaeaa222c.amd64.iso.gz

http://9front.org/iso/9front-7781.38dcaeaa222c.amd64.iso.gz.torrent

http://9front.org/iso/9front-7781.38dcaeaa222c.pi.img.gz

http://9front.org/iso/9front-7781.38dcaeaa222c.pi.img.gz.torrent

http://9front.org/iso/9front-7781.38dcaeaa222c.pi3.img.gz

http://9front.org/iso/9front-7781.38dcaeaa222c.pi3.img.gz.torrent

   cpu% sha1sum 9front-7781*.gz
   3c20a32558536f751673215d7f543f8e9b1946ed  9front-7781.38dcaeaa222c.386.iso.gz
   e58a3f7d67e3937593ae0bf8b8c0dc7ed47c7535  9front-7781.38dcaeaa222c.amd64.iso.gz
   038a7c343dcbe687b4aec4e7ad84daea9f304b8d  9front-7781.38dcaeaa222c.pi.img.gz
   eed089e5be64a34e668cc4cd376b7c96524d035a  9front-7781.38dcaeaa222c.pi3.img.gz

MIRRORS

http://9front.org/iso/

http://r-36.net/9front/

http://felloff.net/usr/cinap_lenrek/9front.torrent

MERCURIAL REPOSITORY

https://code.9front.org/hg/plan9front

DASH 1 MANUAL

http://fqa.9front.org/dash1.plan9haters.pdf

dash 1 and man pages in print: http://9front.org/propaganda/books

THANKS

qwx

NEW

*.386.iso 386 pc (more drivers)

*.amd64.iso amd64 pc (less drivers)

*.pi.img arm paspberry pi 1, 2 and 3

*.pi3.img arm64 raspberry pi 3 and 4

KERNEL AND DRIVERS

9bootpxe: continues the war against random DHCPv6 DUIDs

audiohda: add pci vid/did for AMD Raven HD Audio Controller (T495)

aux/acpi, aux/apm: remove nopipe -i flag

bcm: change ARGB32 to XRGB32 for framebuffer to avoid slow drawing

bcm: fix software cursor avoidance for loadimage() case (thanks bitmapper)

bcm: use extended small pages so XN bit can work

bcm, bcm64: dancing to the drum of the linux clowns for device tree memory size detection (thanks kenji)

bcm64: fix kernels cmpswap() function

bootrc: fix wrong redirections after &

bootrc: suppress error from grep if ethernet ifstats file is not found

bootrc: fix comment typo (thanks Robert Ransom)

bootrc: for wireless netbooting, set the WPA/WPA2 preshard key with wpapsk=password boot parameter

cycv: a cyclone v kernel: fpga support, fix CONFADDR NEW

cycv: add cycv kernel

cycv: support for registers

devcons: fix permissions for reboot and sysstat

devcons: fix write length of writebintime() (thanks BurnZeZ)

devdraw: fix topnwindows() panic when images are not windows (thanks aiju)

devip: fix ifc recursive rlock() deadlock

devip: fix packet loss when interface is wlocked

devip: use the routing table for local source ip address selection

devproc: cleanup procwrite size checks

devproc: don’t allow /proc/$pid/ctl to be opens for reading

devproc: fix syscalltrace read for ratrace

devproc: make sure writewatchpt() doesnt overflow the watchpoint array

devproc: return process id when reading /proc/n/ctl file

devshr: unmount service on #σc/share/mount removal

devswap: dont assume Proc* structures returned from proctab() are continuous

ether8003: use physical addresses for ISAConfig ether->mem

ether82543gc, ether82557, ethervirtio: do kproc() call ouside of spinlock

ether82563: fix multicast for i210

ether8390: remove unused variables

ethercycv: add cycv ethernet driver

ethercycv: dont spin on MDIO

kernel: add missing FPillegal definition for kw and omap kernels

kernel: add portable memory map code (port/memmap.c)

kernel: avoid selecting the boot process in killbig()

kernel: avoid useless mmu flushes, implement better wait condition for procflushmmu()

kernel: cleanup makefile for $CONF.$O target

kernel: cleanup the software mouse cursor mess

kernel: fix checkpages() and segflush() on SG_PHYSICAL type segments

kernel: fix multiple devproc bugs and pid reuse issues

kernel: implement portable userinit() and simplify process creation

kernel: improve diagnostics by reversing the roles of Proc.parentpid and Proc.parent

kernel: improve page reclaimation strategy and locking

kernel: make sure we wont run into the tos when copying exec() arguments

kernel: remove relics of CPU ‘load balancing’ policy in scheduler (thanks Robert Ransom)

kernel: remove scheddump() comment for delay() in */fns.h

kernel: remove unused mem2bl() prototype

kernel: remove unused macro from chan.c

kernel: simplify exec()

pc, pc64: clear debug watchpoint registers on exec and exit

pc, pc64: do page attribute table (PAT) init early in cpuidentify()

pc, pc64: fix cputemp decimal handling in amd10temprd (thanks Robert Ransom)

pc, pc64: fix wrong mtrr physmask() for machines without extended address size msr

pc, pc64: ignore the 64-bit bar flag when reserving membar

pc, pc64: add new memory map code

pc, pc64: remove “got unassigned irq” prints

pc, pc64: use softscreen double buffering for *bootscreen= framebuffer

pc: fix ldt memory leak in procsetup()

pc: fix mp boot regression due mistake in mkfile

pc: replace duplicated and broken mmu flush code in vunmap()

pc: zero rampage() memory (thanks LordCreepity)

pc64: adapt vgaradeon driver to 64-bit (thanks Robert Ransom)

pc64: enable uartpci (thanks taw9 for testing)

pc64: remove rampage() nil check

ppc: remove old duplicate of devtls.c

mtx, ppc: use proctab() to index into process table

sd53c8xx: fix the driver for amd64, fix alignment/padding issues, fix freechain handling

sdiahci, sdodin: avoid calling kproc() while holding ilock()

sdiahci: force Hudson SATA Controller to AHCI mode

sdiahci: implement reset timeout for ahciencreset(), make blink() never block, fix map[] access in ledkproc()

usbehci: avoid kproc() while holding poll lock

usbehci: release ctlr ilock before calling pollcheck()

usbxhci: fix wrong control endpoint 0 output device context address

vgai81x: remove unused mach0 variable

xen: fix rebootcode linkage

nusb/audio: set frequency only when supported

nusb/kb: add quirks for Elecom HUGE trackball

nusb/usbd: cleanup processes on unmount

nusb/usbd: fix /env/usbbusy bug

nusb/usbd: fix portreset error handling

COMPILERS AND DEBUGGERS

ape/cc: stop spamming arguments that are only needed once

cc, ?[acl]: fix gethunk() and move common memory allocator code to cc/compat

cc, ?a, ?l: change thunk type to uintptr

cc, ?l: fix gethunk() to actually grow allocation

cc: dont export gethunk(), hunk, nhunk and thunk

cc: get rid of hunk pointer fiddling and just use alloc()

cc: get rid of sprint() and temporary buffer for type conversion fuction

cc: remove mysbrk(), exponentially increase gethunk() allocation delta

cc: simplify macexpand() and off-by-one error

cc: fix ccom idempotency

cc: fix special case for null pointer constants in cond expressions

cpp: Improve the posix preprocessor.

cpp: Make priority array max size explicit.

cpp: copy all the tokens from the tokenrows with a paste.

cpp: dont overflow the stack

cpp: evaluate #if expressions using vlong

cpp: fix operator associativity

cpp: missing headers rate a FATAL.

6c: conserve registers for floating point operations

6c: remove mystery sys.c file

7l, ql: dont assume . is in the path for running mkcname (thanks sam-d)

7l: handle dupok flag in TEXT/GLOBL data

?a, ?c: fix macro debug prints

?a, cc: fix buffer overflows in built-in preprocessor (macbody)

?a: catch symb[NSYMB] buffer overflow in lexer, cleanup, assume thechar is a rune

?c: fix Bconv() misusage of strncat()

?c: get rid of sprint(), strcpy() and strcat()/strncat(), cleanup

?l: remove direct hunk manipulation from linkers, just call malloc()

[257]l: cleanup fmt routines, replace sprint()

qa: remove ALLOC() and ALLOCN() macros

vl: remove unused mysbrk() prototype

yacc: normalize error messages, stop writing to closed fd.

yacc: fix crash with absolute paths

yacc: stop fiddling with path construction.

LIBRARIES

ape: #pragma ref no longer exists

ape: Add stdbool.h to ape

ape: Fix scanf scans of more than one character in %[]

ape: add intmax_t/uintmax_t as required by c99 7.18.1.5

ape: add missing conversion flags for scanf

ape: add va_copy macro, conforming to c99 7.15.1.2

ape: bring stdint.h closer to spec

ape: fix alignment in malloc()

ape: fix name clash, have to use _SLEEP syscall instead of ape sleep in plan9 code (thanks jamos)

ape: fix scanf ‘%[]’ specifiers and ‘%n’ (thanks phil9)

ape: remove C99_SPRINTF_EXTENSION define.

ape: turn ptrdiff_t into a 64 bit type

ape: use #error when missing define

lib9p: fix re-use of root Qid when using createfile(); remove unused dirqidgen

lib9p: fix typo

lib9p: get rid of Srv.nopipe and Srv.leavefdsopen hacks

lib9p: implement automatic remove-on-close cleanup in postsharesrv(), remove postfd() and sharefd() functions

lib9p: reject reads on closed fids and writes on directories

lib9p: zero out per connection state in Srv template for listensrv()

libFLAC: 1.3.1 -> 1.3.3

libaml: implement ToDecimalString and ToHexString operations

libc: always zero initialize Tm structure for tm2sec()

libc/arm64: work around linker bug for cas()

libdraw: fix mount() error handling in newwindow()

libmemdraw: remove inexistent build targets

libsec/base58enc: null-terminate the result

libsec: move AES XTS function prototypes to AES definition section in the header file

libsec: remove hash pickle functions, document ripemd160, cleanup sechash(2) manpage

PROGRAMS

9fs: replace dead plan9.bell-labs.com with 9p.io server

“”: output previous action to stderr

acme, sam: handle >1GB files correctly

acme/Mail: show and update flags

acme/win: exit winfs once acme shuts down the window

acme/win: pass on flags to winfs (fix undocumented -e flag)

acme: Apply each -/+ only once (#156)

acme: Apply http://www.9paste.net/qrstuv/patch/acme-movetodelmesg/

acme: Reset click count on mouse motion.

acme: Restore call to movetodel() in colclose

acme: add missed error checks

acme: avoid division by zero when resizing col (#189)

acme: fix double free

acme: fix off by one in colclose(), make dellist() code consistent

acme: fix some memory leaks

acme: fix typo: mouse->xy, not w->mc.xy

acme: split win into winfs and rc script, get rid of lib9p leavefdsopen hack

acme: triple click selection

auth/disable, auth/enable, auth/status: add usage messages

aux/aout2uimage: Add a.out to uImage converter NEW

aux/getflags: improve flagfmt parser

aux/getflags: remove rogue debug print

aux/getflags: support named flags

aux/kbdfs: fix kbmapread() not accounting for reads smaller than the size of the line

aux/kbdfs: Changes to allow support for neo2 keyboard layout

aux/realemu: fix exit code

aux/realemu: run cpuproc in same fd group as fileserver

aux/timesync: open /proc/n/ctl with OWRITE, not ORDWR

awk: fix race condition with sub-mk in mkfile

awk: make empty FS unicodely-correct.

backup: Set execution bits in backup scripts

date: make ISO 8601 time output compatible to RFC3339

doctype: fix -T option

dossrv, 9660srv, hjfs: stop READING standard OUTPUT with -s flag

dossrv: fix falloc() for >31 bit sector numbers (thanks sl)

dossrv: output iotrack error message to stderr

dtracy: show line numbers in errors

file: add (very) basic support for detecting mpeg4 formats

file: try ismp4() before ismp3()

file: fix filetype detecton by suffix so that multiple dots dont confuse it. (thanks kvik)

g: walk arguments

games/playlistfs: open /proc/n/ctl OWRITE, not ORDWR

games/turtle: do exit instead of crash in redraw() when there where no lines drawn

games/linden: NEW

games/turtle: NEW

games/v8e: NEW

grep: error if sbrk fails

grep: fix handling of -b flag

hgfs: fix loadrevinfo() breakage on long lines using libbio (thanks deuterion)

hgfs: fix loadrevinfo() for empty log bug

hoc: don’t nest calls to follow() when lexing ++/+= and –/-= (#287)

ip/cifsd: implement SMB_SET_FILE_UNIX_BASIC for wstat

ip/cifsd: implement primitive per-share unix id mapping for wstat()

ip/dhcp6d: work around non-ethernet based client duid

ip/dhcpd: prevent client from increasing max reply size beyond the reply buffer capacity

ip/ipconfig: ignore default routes targeting ourselfs

ip/ipconfig: keep on sending router solicitation after initial RA

ip/ipconfig: resolve ipgw to an ip address as neccesary (thanks k0ga)

ip/tinc: accept udp connection from any udp source port

mothra: add Plumb menu item, and update man page. sl’s original changes sanity-checked by Ori_B.

mothra: (facelift) flat ui is in.

mothra: fix a few errors in previous patch

mothra: make user interface monochrome

mothra: remove extraneous lines and decoration (fake 3d). patch extracted from sl’s forked mess by Ori_B.

mothra: restore original fonts. dejavusans was sl’s change, sl’s fault. it never looked right outside of drawterm on osx (mea culpa). this is easy to change for anyone who prefers something else, but it’s difficult to imagine native users preferring our very fuzzy dejavusans to anything else.

ndb/dns: handle empty $DNSSERVER

paint: change colors in the palette with button 3

ramfs: don’t use Srv.nopipe

rc-httpd: append carriage return to content-length header

rc: fix code serialization for PIPEFD (thanks BurnZeZ)

rc: fix heredoc crash

rio, kbdfs: increase read buffer for high latency kbdfs support

rio: fix bug causing short reads of wctl files

rio: fix goodrect() bug (thanks mike)

rio: pad window status strings in wctl files

rio: triple click selection, reset click count on mouse motion.

sam: ^ does not need current file

sam: add $%dot (thanks kvik)

sam: Bump protocol version for Ttclick

sam: triple click selection

samterm: don’t scroll invisible (command) window (thanks umbraticus)

samterm: Make ctrl+g focus text windows and cycle zeroxed copies (thanks kvik)

samterm: fix typos in time calculation

seconds: hack around timezone issues.

sed: accept and ignore -E and -r flags for unix compatibility

sed: allow whitespace after ! negation (thanks k0ga)

sshfs: fix dir2attrib() memory leak in wstat error case (thanks BurnZeZ)

sshfs: fix race condition between sendproc() and recvproc()

sshnet: fix fork race conditions

tar: Add pax extended header support

tar: fix memory corruption in extract1 (thanks petter)

tar: Fix directory heuristic for long file names.

tar: Parse global pax header in the right place.

upas/fs: Fetch IMAP flags from server. This makes us sync read/answered/… flags with unix.

upas/fs: fix handling of numeric timezone offsets in strtotm

upas/fs: fix sending of “delete” plumb messages

upas/fs: imap fixes and improvements

upas/fs: only ensurecache() on doplumb().

upas/fs: plumb flag changes.

upas/fs: plumb modify messages for self-changed flags

upas/fs: remove useless loop in rf822()

upas/fs: Check if ’m' is null when updating messages.

upas/fs: fix ref882 reference parsing.

upas/fs: fix typo: we don’t have cache insurance.

upas/fs: simplify flag parsing.

upas/marshal: fix printinreplyto function

vt: triple-click to select non-whitespace segment

walk: add D and T fmt characters (fileserver device/type)

walk: remove superfluous newline

Mail: Remove reply print.

Mail: delete obsolete comments (replies are flagged elsewhere)

Mail: show urls in html messages.

DOCUMENTATION

acme(1): fix scrolling when swiping text at the top or bottom of a frame

atari(1), nintendo(1), sega(1): document common emulator keys

crop(1): remove duplicate -b option in synopsis

listen(1): implement one-shot mode flag for listen1 (thanks kivik)

mail(1): fix typo

mothra(1): add description of Plumb menu item.

os(1): add c implementation of inferno os command and cmd(3) device manpages

page(1): fix troff manual example

sam(1): document $% and $%dot

seconds(1): add SOURCE section

tar(1): document ’T' flag misbehavior (thanks rgl)

vac(1): assimilate manpage additions from plan9port and complete usage lines (thanks joe9)

walk(1): formatting/corrections

dial(2): we prefer nil over 0, make the example show it.

draw(2): fix manpage typo (thanks rgl)

flate(2): fix typos (thanks rgl)

9p(2): document all the effective rfork flags for postmountsrv()

9p(2): document the filedescriptor sharing behaviour of postmountsrv()

9p(2): fix sentence for wstat function (thanks jsmoody)

notify(2): fix typo

thread(2): fix description of when/why procexec(l) functions return

thread(2): fix manpage typos (thanks rgl)

cmd(3): fix typo, Close -> Closed (thanks kivik)

draw(3): typo dp

ip(3): document special null-address hack for accepting all incoming connections

ip(3): remove outdated maximum ipstack number limit.

kbd(3): fix a typo (thanks Alex Musolino)

rio(4): fix bad cross-reference format

rio(4): update description of wctl file format

upasfs(4): fix manpage typo (thanks rgl)

image(6): fix typo

9boot(8): Document 9bootfat limitation.

boot(8): Specifiy the restrictions on 9boot file names more clearly.

console(8): add console command and manpage

man(9): add start of section 9 manpages (thanks rgl) NEW

delay(9): improve language

kproc(9) and sleep(9) corrections

sleep(9): recover comment with the right reference

OTHER

/lib/face: add .dict entries for andrew.1 face files

/sys/lib/kbmap: update 0xf860 to Kshift value, fix fake shifts on esc1

/sys/lib/kbmap/colemak: add colemak keymap (thanks Silas McCroskey)

/sys/lib/kbmap/sg: add swiss german kbmap (thanks mike)

/sys/lib/plumb/basic: open nedmail windows with -noscroll

/sys/lib/plumb/basic: include section 9 in manpage plumb rules.

fortunes: As much as I’d love to I feel I have to let it go – rminnich

hgignore: ignore section 9 manpage indices, ignore init, kernels and bootloader binaries

riostart: when system uses serial console, provide a system shell on it

timezones: change DST timezone string for South Australia

tmac.eai: wrapper around -me: auto indexing sections, .TC macro (thanks sirjofri)

troff: add missing /sys/lib/tmac/me files (thanks sirjofri)

words: transgender

back

Netsurf porting effort (2020/04/16)

   Date: Wed, 05 Feb 2020 01:56:42 +0200
   Subject: [9front] TODO Netsurf port to Plan 9

   Dear all,

   I have compiled a small TODO list for the port of Netsurf to Plan 9 from 
   things that I can come to think of. I also made the list so that it 
   would be easer to select a task for anyone that would find it fun to 
   help out. Maybe you would like to play with something on the list? The 
   support for various image formats could be one thing that is easy to do 
   in parallel with other tasks.

   I am not expecting changes in 9front just to compile upstream netsurf 
   without patches, neither do I believe that the Netsurf team would change 
   their code base too much in order for it to compile out of the box in 
   Plan 9. All comments are welcome, however. As Ori and Kyle mentioned 
   they were willing to work on some things, I put their names in brackets 
   for those tasks :-)

   Higher priority tasks:

   * clean up the mkfiles, factor out common parts [Ori B]
   * implement webfs fetcher backend [Kyle N]
   * alternatively integrate with libcurl
   * compress image updates sent to /dev/draw [Jonas A]
   * iconv library support (convert between different character encodings.
   * make content handlers for jpg, png & svg compile & work
          (netsurf/content/handlers/image/ now commented out in netsurf/mkfile)
   * start on a native gui frontend (netsurf/frontends/plan9/gui.c)
          (lots of things, fonts handling etc.)
   * netsurf/frontends/framebuffer/gui.c
          fix Options handling (argc/argv) in main()
   * add support for pread() pwrite() and fceil() in APE
          (now implemented in posix/*)
   * look into the warning "Using dodgy gettimeofday() fallback"
          in libnsutils/src/time.c

   Maybe less important tasks: (mostly for easier upstream integration)

   * make translator between flex/bison and lex/yacc for *.l and
          *.y files. Also something for perl scripts maybe.
   * look into the macros in libwapcaplet. Not all macros are understood
          by cpp (now using function decl. from older version of the library.
   * make the code in libnsfb-0.2.1/src/plot/*.c byte order agnostic
          (might not matter if we make an native GUI)
   * implement VLA (Variable Lentgth Arrays) - or an good  way to
          avoid them (if upstream is updated)

Netusrf Project Style Guide: https://www.netsurf-browser.org/developers/StyleGuide.pdf

Netsurf for Plan 9 source: https://github.com/netsurf-plan9

9th International Workshop on Plan 9 (2020/01/13)

   Date: Mon, 13 Jan 2020 18:16:54 -0800
   Subject: [9front] IWP92020 Announcement

   IWP92020 is happening.  Submit papers and sign up here:

http://iwp9.org

   Hope to see you there!

9FRONT “NO THINKPAD” RELEASED (2019/10/08)

front (v1)

http://bell-labs.co/9front/iso/9front-7408.1d345066125a.386.iso.gz.torrent

http://bell-labs.co/9front/iso/9front-7408.1d345066125a.pi.img.gz.torrent

http://bell-labs.co/9front/iso/9front-7408.1d345066125a.pi3.img.gz.torrent

DASH 1 MANUAL

http://fqa.9front.org/dash1.nothinkpad.pdf

dash 1 and man pages in print: http://9front.org/propaganda/books

THANKS: momus

KERNEL AND DRIVERS

kernel: catch execution read fault on SG_NOEXEC segment

kernel: clear FPillegal in pexit() and before pprint()

kernel: expose no execute bit to portable mmu code as SG_NOEXEC / PTENOEXEC, add PTECACHED bits

kernel: get rid of tmperrbuf and use syserrstr swapping instead in namec()

kernel: make exec clear errstr, stop side-channels and truncate on utf8 boundary

kernel: make user stack segment non-executable

kernel: move common ethermii to port/

kernel: prohibit changing cache attributes (SG_CACHED|SG_DEVICE) in segattach(), set SG_RONLY in data2txt()

kernel: simplify pgrpnote(); moving the note string copying to procwrite()

bcm, kw, omap, teg2: implement setregisters()

bcm: add cache invalidate before accessing prop buffer

bcm: fix typo in gpio.c on unused AFedge0 constant

bcm: flush out early boot messages on uart and screen initialization

bcm: invalidate cache on Fbinfo after firmware completion

bcm: set XN bits for kernel device mappings

bcm64: add addarchfile() prototype to fns.h (for qeed)

bcm64: add config for raspberry pi 4

bcm64: add driver for emmc2 controller

bcm64: add gic interrupt controller driver for raspberry pi 4

bcm64: add gisb arbiter driver to catch bus timeouts

bcm64: add pci express driver for raspberry pi 4

bcm64: add support for more than 1GB of ram (untested)

bcm64: deal with discontinuous memory regions, avoid virtual memory aliasing, implement vmap() proper

bcm64: do not use OTP_BOOTMODE_REG to determine OSC frequency (thanks richard miller)

bcm64: enable devgpio in kernel configuration (thanks qeed)

bcm64: enter page tables in mmutop AFTER switching asid in mmuswitch()

bcm64: fix mmu0clear() mistake from previous commit

bcm64: fix wrong prescaler for generic timer on rpi4

bcm64: generalize mmu code

bcm64: implement dtracy support

bcm64: implement reboot support

bcm64: no need to flush instruction cache when switching TTBR0

bcm64: poll gisb arbiter for asynchronous bus errors

bcm64: remove unneccesary tlb flush on mmuidmap()

bcm64: reorganize virtual memory map for rapberry pi4

bcm64: replace emmc2 driver with richard millers sdhc driver

bcm64: set XN bits for kernel device mappings

bcm64: strip debug symbols to make sure .img file is multiple of 4 bytes

bcm64: switch to 64k page size

bcm64: update io.h for pci express and raspberry pi 4

bcm64: work in progress genet ethernet driver for raspberry pi 4

bcm, bcm64: add BCM2711 support for gpiopull(), fix gpiomeminit(), cleanup

bcm, bcm64: add dmaflush() function and make virtio size and virtual address configurable in Soc.virtio and Soc.iosize

bcm, bcm64: add support for device tree parameter passing

bcm, bcm64: add vcore support for raspberry pi 3 GPIO expander

bcm, bcm64: clean dma destination buffer before issuing dma in case of non cache-line-size aligned buffer

bcm, bcm64: fix cache operations for dma and emmc

bcm, bcm64: make irq.$O optional and add intrdisable(), use intrenable()

bcm, bcm64: preserve memsize across reboots, avoid trashing atags while parsing cmdline

devdtracy: make machlocks and dtktab static

devip: fix permission checking

devip: if the server does not support TCP ws option, disable window scaling (thanks joe9)

devproc: fix fishy locking in proctext(), check proc validity, static functions

devproc: move proctab() call after Qnotepg special case in procwrite()

devproc: restore psstate info string in procstopwait()

devuart: make sure uart is enabled in uartkick()

ethergenet: fix flow control negotiation

ethergenet: remove debugging

emmc: 50MHz highspeed support (from richard miller)

pc: move low-level allocation details out of mmu.c into memory.c rampage() function

pc64: fix compiler warning in rebootjump() entry calculation

pc64: implement NX bit discovery, map kernel mappings no-execute

pc64: map kernel text readonly and everything else no-execute

pc64: preallocate mmupool page tables

sdide: silence compiler warning in atadebug()

usbehci: introduce dmaflush() function to handle portable cache invalidation for device drivers

usbehci: silence “param declared but not used” compiler warning in itdinit()/sitdinit()

usbxhci: fix mysterious ENABLESLOT failures (update to XHCI spec revision 1.2 (2019))

usbxhci: implement portable dma flush operations and move to port/

usbxhci: fix endpoint stall recovery, handle Ep.clrhalt flag

vgai81x: use vmap() for uncached access to cursor data instead of manipulating kernel page table

COMPILERS AND DEBUGGERS

7l: don’t hardcode 4k pagesize, use INITRND

8c, 6c: LEA x, R; MOV ®, R -> MOV x, R

8c, 6c: avoid allocating index registers when we don’t have to

8c, 6c: fix INDEX node #reg calculation

8c: skip 64-bit regpair allocation for OINDEX nodes in cgen64()

8l, 6l: fix “unknown relation: TEXT” xfol() bug (thanks mischief)

cc: fix void cast crash

cc: remove nullwarn() from OCAST codegen, zap void casts

cc: use 7 octal digits for 21 bit runes

cc: Allow address expressions in ?c after int casts.

cc: Import compiler warnings and bugfixes from Charles.

acid/kernel: fix procstk() for arm64, set kdir for arm/arm64 to bcm/bcm64

acid/kernel: for stacktraces, try to use context from error stack when process is not sleeping

LIBRARIES

ape: Add mkstemp to /sys/src/ape/lib/ap/gen/mkfile

ape: don’t hardcode list of ape library directories in /sys/src/ape/lib/mkfile

ape: fix stdio putc() macro, avoiding “result of operation not used” warning

ape: reimplement rename() - fixing compiler warnings and handling more error cases

ape: revert rename() change

ape: Include integer limits from generic stdint.h in system-specific stdint.h

ape: Add missing UINTsz_MIN defines to ape stdint.h

ape: Add test for pow.c

ape: Add toascii()

ape: Handle NaN and Inf edge cases as specified by posix, instead of barfing.

ape: Turn on warnings when building libap.

ape: Add mkstemp to stdlib.h

lib9p: fix listensrv() filedescriptor leaks

libauth: do not set errstr in auth_rpc() for ARdone result (thanks majiru)

libflac: Tell it that we have stdint.h so it finds SIZE_MAX

libstdio: fix putc(), plan9 version

libventi: define VtEntryNoArchive constant

libventi: implement vtreconn and vtredial functions

libventi: implement vtsha1 and vtsha1check functions

PROGRAMS

ape/cc: Add arm64 and remove alpha, add spim

awk: no need to call getargv() twice to get the value for FILENAME

cwfs: fix listen filedescriptor leaks

date: Add RFC2822 (email style) formatted dates

g: Make it grep recursively by default.

auth/rsa2asn1: implement private key export with -a flag (thanks kvik)

snoopy: add support for dhcp classless static routes option

snoopy: avoid extra spaces in dhcp filter output

snoopy: include dhcp.h instead of replicating bootp/dhcp options enum

ssh: work around github.com’s broken cipher negotiation code (thanks Ori_B)

cmd/ip/*: chown the network connection after authentication

cwfs: fix root access time qid path comparison

cwfs: properly handle 64 bit qid path

cwfs: remove old some assert() debugging

cwfs: remove orphaned lrand.c

disk/format: implement long name support

file: recognise unified diff output

gs: apply fixes for CVE-2018-16509 (thanks jsmoody)

gs: apply mitigations against CVE-2017-8291 (thanks jsmoody)

gs: fix missing type check in ztype (thanks jsmoody)

ip/cifsd: add basic support for UNIX extensions

ip/cifsd: dont return garbage in upper 32 bit of unix extension stat fields

ip/cifsd: exit to close connection when we get malformed smb header (fixes linux mount hang)

ip/ipconfig: don’t leave behind null address when dhcp gets interrupted

ndb/dnsquery, ndb/csquery: write “>” prompt to stderr (thanks kvik)

pcc: Always turn on the -+ flag in cpp

plumber: loop will go out of bounds when *++s == ‘\0’; replace with strstr

rc-httpd: avoid duplicate log output in dir-index handler

rc-httpd: only emit charset option for text/plain content type

rc-httpd: serve markdown with text/plain content-type

rc-httpd: set charset=utf-8 for all text/* content types

sshfs: use threadexits() instead of exits()

upas/fs: remove read timeout via alarm(2) in pop3resp

upas/fs: speedup mtree and henter()

upas/smtp: handle temporary authentication failures

vmx: handle build arch exclude in /sys/src/cmd/mkfile

vncv: fix snarf buffer realloc memory corruption

DOCUMENTATION

2c(1): document 7c (arm64)

draw(3): memlorigin

nusb(2): remove startdevs() reference, document getdev() (thanks BurnZeZ)

rsa(2): document asn1encodeRSApriv() and asn1encodeRSApub() functions

rune(2): complete source references

sshnet(4): … and incoming TCP calls

tinc(8): add history section

vmx(1): update BUGS

walk(1): add history section

OTHER

/sys/lib/dist/mkfile: adjust 2GB for pi3 and zynq img

/sys/lib/dist/mkfile: storage vendors idea of 2GB is deflating

/sys/src/cmd/mkfile: fix PCONLY exclude (thanks stefan)

/sys/src/boot/bcm/mkfile: add missing device tree file for raspberry pi 4

/sys/src/boot/bcm/mkfile: add raspberry pi 4 kernel and bootloader to pi3.img target

bootrc: remount devip after /dev/hostowner has been written by factotum

bootrc: unmount devip before starting factotum

mkone: fix man target (thanks Amavect)

back

9FRONT RETURNS TO PRINT WITH STUNNING NINE VOLUME SERIES (2019/06/23)

Stun a burglar by hurling one volume after another at the unsuspecting intruder. Stun yourself by actually learning something. Sell them later at a profit.

DASH 1

DASH 1

The usual suspect. An overview of what the fuck just happened today, Re: 9front.

Online: http://fqa.9front.org

Print: https://amzn.to/2Qg0v92

PROGRAMMER’S MANUAL

9FRONT PROGRAMMER'S MANUAL V1

The standard, venerable man pages, divided into eight sections. The rainbow books, each with a different color border drawn from the paint(1) palette. Verified complete. It’s a good idea to read them all.

Online: http://man.9front.org

Print:

V1: https://amzn.to/2YgpRqc

V2: https://amzn.to/2J46iuV

V3: https://amzn.to/2XoGmna

V4: https://amzn.to/2J6mTyx

V5: https://amzn.to/2WW2RQO

V6: https://amzn.to/2WYgSxm

V7: https://amzn.to/2xagwEQ

V8: https://amzn.to/2XBY7j7

9FRONT “SKIN OF EVIL” RELEASED (2019/05/16)

front (v1)

http://gabe.felloff.net/usr/cinap_lenrek/9front/9front-7233.24d21d7c0868.iso.gz.torrent

DASH 1 MANUAL

Online: http://fqa.9front.org/dash1.skinofevil.pdf

Print: http://9front.org/propaganda/books

THANKS: miron lukyanov

KERNEL AND DRIVERS

bootrc: add nora6= option to disable automatic ipv6 configuration

bootrc: handle automatic ip configuration on gbe media

bootrc: fix $rootdir and $rootspec handling (thanks lucio)

kernel: exec support for arm64 binaries

kernel: export freepages() function so it can be used in mmurelease()

kernel: get rid of TSTKTOP, USTKTOP is the end of user address space

kernel: get rid of KSTKSIZE alias for KSTACK

kernel: get rid of PTR2UINT() and UINT2PTR() macros

kernel: get rid of checkpagerefs() debugging

kernel: include lock pointer in error report, stop spamming lockloop prints when we are panicing

kernel: insert memory barrier in the scheduler before setting up->mach = nil

kernel: remove ptclbsum dependencies from configs

ktrace: arm64 support

qio: handle common case in trimblock()

bcm: add pl011 uart driver, dont touch line control while uart is enabled

bcm: don’t call nil on PADDR() in dmaaddr(), return busdram dummy address

bcm: don’t use PADDR() to convert bus address to physical in vcore

bcm: dont assume PHYSDRAM 0 in dmaaddr(), fix dmaioaddr()

bcm: include sdmmc in pi kernel configuration

bcm: list devswap only once in devtab array

bcm: move CONFADDR parsing into bootargs.c, simplify initcode start() args handling

bcm: move fiq saved pc adjust into lexception.s so it can be shared with arm64

bcm: move interrupt handling out of trap.c into irq.c, add irq.c to mkfile

bcm: move okay() from uartmini.c to devarch.c

bcm: make sure fiq is on enabled on cpu0

bcm64: add experimental work in progress arm64 kernel for raspberry pi 3

bcm64: get rid of usb workaround delay

bcm64: map framebuffer write-through to allow unaligned access

bcm64: provide idlehands() function

bcm64: use MOVP instruction for saving and restoring registers

bcm64: use exclusive monitor on nrdy to wake up idlehands()

pc, pc64: fix %.*s format in multibootargs

pc, pc64: properly track dependencies for mem.h on autogenerated apbootstrap.h and reboot.h targets

pc, pc64: pci: add AMD FCH LPC bridge to southbridges

pc, pc64: devarch: recognize AMD Ryzen model

pc64: properly handle faulterror in faultamd64()

devdraw: get rid of softscreen==0xa110c hack and make attachscreen() return Memdata*

devdraw: simplify drawgen()

devip: fix block list handling for icmp/icmp6, use proper MinAdvise for icmp6

devip: fix fragment forwarding

devip: fix ip fragmentation handling issues with header options

devip: handle packet too big advise for icmp6, remove fragment header

devip: ignore icmp advise about laggard fragments

devip: ignore reserved fragment offset bits

devip: ignore the evil bit in fragment info field

devip: ipv6 loopback ::1 has link-local scope

devip: reject bad numeric ports (such as 9fs -> 9)

devip: remove unused eipconvtet.c and ptclbsum.c files

devip: simplify ip reassembly functions, getting rid of Ipfrag.hlen

devip: tcp: Don’t respond to FIN-less ACKs during TIME-WAIT (thanks Barret Rhoden)

devip: use common code in icmp for handling advise

devip: use parseipandmask() for ipifc and route control message parsing

devip: zero fragment offset after reassembly, remove tos magic, cleanup

devip: avoid media bind/unbind kproc reader startup race, simplify etherbind

devip: do not lock selftab in ipselftabread(), remove unused fields from Ipself

devip: make sure ifc is bound in add6 ctl command

devip: remove unused c->car qlock, avoid potential deadlock in ipifcregisterproxy()

devip: reset speed and delay on bind, adjust burst on mtu change, ifc->m nil check, consistent error strings

devsd: fix panic when using “delpart” to remove a partition that was already removed

devswap: simplify, don’t panic when writing swapfile fails

devtls: remove static “already” flag in tlsinit(). this function is only run once.

audiohda: add support for Gemini-Lake audio in Intel NUC nuc7pjyh (thanks sam-d)

audiohda: recognize AMD Family 17h hd audio controller

ether8169: fix thinkpad A485 ethernet (thanks mischief)

ether82563, ether82598, etherx550: round rbsz to multiple of 1K

ether82563: fix bogus FCA write and link detection for i217

ether82563: use 9018 byte mtu from datasheet for i217, i218, i219

ether82563: work around spurious jumbo packets on i217 (thanks k0ga)

ether82598: fix multicast filter (thanks aiju, joe9)

etherx550: add intel 10GB ethernet controlller x550 driver (thanks joe9)

igfx: add support for 915gm

nusb/audio: fix %.*s format usage

nusb/disk: implement 64 bit lba read/write commands (16 byte commands)

nusb/disk: don’t unnecessarily unstall devices.

nusb/kb: fix continuous scrollwheel delta not being reported (thanks sam-d)

nusb/usbd: fix dump %U formatter

nusb/usbd: stop sending port enable commands

nusb/usbd: work around devices that ignore the high byte of wLength in control transfer reads

nusbrc: detect “keyboardio model 01”, appears as multifunction device with IAD csp(0102EF) (thanks sam-d)

usbdwc: enable Slowbuilkin workarround, improve split transaction timing, handle erroring sleep(), debugging

usbxhci: make stuck usb transactions interruptible.

wifi: fix %.*s format in wifictl

COMPILERS AND DEBUGGERS

7c: add arm64 c compiler and assembler (thanks Charles Forsyth)

7a: fix indexreg operations, fix post increment operands

7c: don’t emit SXTW for non-register source operand

7c: fix long to vlong/pointer conversion, avoid negative immediate offsets

7c: fix registerization of vlong constants

7l: add arm64 linker from Charles Forsyth (initial sync)

7l: add missing AFMOVD with EXT/AUTO/LOREG operands to optab

7l: deal with huge (negative or > 24bit) register offsets, fix LACON, avoid DWORD in constant pool when we can sign extend

7l: fix bitcon instruction selection and encoding

7l: fix vlong constants in literal pool for non-MOV instructions

7l: there’s no BIC* $bimm variant

7l: implement MOVP instruction

5c: dont substitute (destination) registers contained in MOVM reglist

[5678vq]c: fix .safe node type for FUNC() = FUNC() sugen

cc: fix %.*s format usage in lexer “token too long” error

acid: add arm64 support

dtracy: avoid dmachlock() race

dtracy: avoid pointer to integer truncation warning on amd64

dtracy: fix &&

dtracy: fix conditional branch generation

LIBRARIES

ape: initial support for arm64

ape: fix malloc to deal with more than 4GB of memory on 64 bit systems

lib9p: fix zero msize abort() due to unknown version (thanks kvik)

libauthsrv: authdial smprint() out of memory autism

libc: Sand edges down on GBIT64()/PBIT64() macros.

libc: initial arm64 support

libc: fix NaN check precedence bug in modf() (thanks BurnZeZ)

libc: provide arm64 assembly versions for memmove() and memset()

libc: use MOVP instruction for arm64 memmove() and memset()

libip: don’t reject ipmask in v6 form for v4 address

libip: move optimized 386 assembly version of ptclbsum() from kernel to libip

libip: prefer v4 over v6 for myipaddr()

libip: replace v4parsecidr() with new parseipandmask()

libip: return -1 in parseipmask() and parseipandmask() when mask is not ipv4 and v4 argument was set

libmach: initial arm64 support

libmach: support for MOVP instruction disassembly for arm64

libmemdraw: handle memarc() phi == 0 and phi <= -360, keep alpha in bounds

libmemdraw: remove static Point p00 and use ZP instead

libmp: add dummy mkfile for arm64

libndb: provide parseipmask() v4 argument in subnet(), use snprint() instead of sprint()

libpanel: fix %.*s format in pl_snarfentry()

libsec: dummy mkfile for arm64

libthread: initial support for arm64

PROGRAMS

abaco: fix %.*s format in findctype()

atazz: fix %.*s format in special command processing

aux/depend: fix %.*s format in path concatenation

aux/statusmsg: fix %.*s format

aux/wpa: fix %.*s format in debug prints

awk: fix nextfile crash (thanks leetspete)

cifs: fix pruning of . and .. directory entries (thanks steve simon)

cwfs: fix %.*s format in cmd_printconf()

dossrv: make GLONG() return ulong, handle getsect() error in dostat()

dossrv: use 64 bit vlong for sectors

gs: arm64 support

gs: avoid stupid shifts by casting to uint64_t

hgfs: fix %.*s usage in walk

ip/6in4: use parseipandmask(), use ipvmp() instead of equivip6()

ip/ayiya: use parseipandmask(), use ipvmp() instead of equivip6()

ip/cifsd: fix %.*s format xdirflush() path

ip/dhcpd: add rootserverip read in lookupip() (thanks k0ga)

ip/dhcpd: change swap to rootserver (thanks k0ga)

ip/dhcpd: provide v4 argument for parseipmask()

ip/dhcpd: remove undocumented dhcpgroup mechanism, group related ndb attributes together

ip/dhcpd: send vendor ndb attribute if available (thanks k0ga)

ip/ipconfig, ndb/dns, libndb: handle parseipmask() errors

ip/ipconfig: format ipmask with %M instead of %I

ip/ipconfig: use defaults for loopback

ip/ipconfig: use ewrite() to enable routing command for sendra

ip/ipconfig: use new parseipandmask() function

ip/ppp: fix %.*s format in debug print

ip/pppoe: fix %.*s format in debug prints

ip/rip: use new parseipandmask() function

ip/socksd: fix %.*s format in dialstring

ip/tftpd: fix %.*s format for homedir path

ip/tinc: 4096 bit RSA, (passive) pmtu discovery, fix udpfd close() race, cleanup

ip/tinc: fix mistake from previous commit

ip/tinc: honor TcpOnly and IndirectData settings, script support, prefer incoming udp connections

ip/tinc: use new parseipandmask() to parse subnets, use ipcmp()/ipmove(), remove prefixlen

ip/torrent: fix %.*s format in dialstring

ip/torrent: avoid trying to fetch blocks past file

mk: fix closing random fd from uninitialized stack variable (thanks BurnZeZ, mycroftiv)

ndb/dns: provide v4 argument to parseipmask(), use snprint() instead of sprint()

postscript: use PI

python: arm64 support

python: clean and nuke pgen and libpython.a for all $CPUS

python: remove /$objtype/lib/ape/libpython.a, track graminit.h dependencies, remove graminit.c

ratfs: implement ipv6 support, replace v4parsecidr() with parseipandmask()

rc: clear out redirections on “rfork F” (RFCFDG)

ssh: add experimental mux mode

ssh: don’t assume error messages are ASCII. format number of complete runes, not bytes.

ssh: implement -W option for making remote tcp connections

ssh: print usage for unknown flags, cleanup

sshnet: actually make sure ssh established connection before exiting main proc

sshnet: allow 0 port

sshnet: bring back sshnet using ssh(1) mux mode

sshnet: don’t leak “Dialing” connections when “connect” ctl write gets interrupted

sshnet: don’t leak error string

sshnet: fix eof and close handling, use proper packet size, cleanup

sshnet: fix memory leak

sshnet: fix write count for ctl message writes

sshnet: get rid of Announced state, simplify

sshnet: implement listen (port forwarding)

sshnet: pass on open failure error message, simplify

sshnet: reduce memory consumption by lowering stack sizes

tcs: clean up old port code, and avoid writing 0 to stdout

troff: fix -ms mug (thanks aksr)

upas/fs: don’t put messages on the lru that cannot be uncached

upas/fs: fix %.*s format usage

upas/fs: fix infinite loop in putcache (again)

upas/fs: include mkupas in mkfile last to get default target

upas/fs: release mailbox syncing lock after encountering error

upas/fs: remove unused function pop3log

upas/ned: fix %.*s format in parsesearch(), improve mkfile

upas/scanmail: fix %.*s format in xprint(), improve mkfile

upas/smtp: fix %.*s format for challenge in smtpcram()

upas/smtpd: implement ipv6 support for ip blacklist, replace v4parsecidr() with parseipandmask()

uptime: rewrite in awk

vmx: build vmx only for 386 or amd64

vmx: check for draw initialization errors

vt: dont make fs procs hang around when closing rio window

vt: fix %.*s in sendnchars()

walk: remove unused depth argument from dofile()

wadfs: avoid comma operator after PBIT32() macros

webfs: bracket literal ipv6 host in “Host:” header

webfs: properly handle %.*s in url path and debug prints

front (programmer's manual)

DOCUMENTATION

dhcpd(8), ndb(6): group related ndb attributes together

dhcpd(8), ndb(6): update documentation (thanks k0ga)

dtracy(1): fix print(2) reference

ip(3): document TCP ctl close command

mach(2): fix byteswapping function signatures

memdraw(2): remove references to iprint()

plan9.ini(8): add USB section, documenting various usb options

plan9.ini(8), boot(8): clarify the use of $rootdir and $rootspec

rsa(8): add example for tinc(8) (thanks k0ga, qwx)

segment(3): use bind -c in examples (thanks henesy)

ssh(1): add sshnet(4) reference

sshnet(4): add documentation

sshnet(4): fix user@host syntax, add BUGS section, add ip(3) reference

thread(2): threadsetname takes a fmt string

added walk(1)

OTHER

arm64: add mkfile

/sys/lib/plumb/basic: make plumbing page bookmarks work with relative paths (thanks Tobias Heinicke)

fix DST begin/end timestamps for South Australia

fortunes: Open source may not be safe if it has no super excellent moderator.

inst/startether: skip ipv6 auto configuration when nora6 was specified

dist/mkfile: aux/stub -d /n/src9/usr to avoid overbinding /usr in case /n/src9 an / alias

dist/mkfile: add *.pi3.img target for ARM64 raspberry pi3

distproto: add /lib/ndb/dhcp/ and /lib/news/ directory (thanks lyndon)

rootstub: add /sys/lib/dist/ndb/dhcp/

rootstub: create arm and mips directories in /usr/glenda/bin (thanks timclassic)

rootstub: create arm64 directories

vgadb: add t43p 1600x1200 panel entry

lib: update pci database

timezones: add India (thanks joe9)

back

9FRONT “CALLING DICK TRACY” RELEASED (2018/12/31)

front

http://9front.org/iso/9front-6977.c7e7268b0786.iso.gz.torrent

http://9front.org/iso/9front-6977.c7e7268b0786.iso.gz

DASH 1 MANUAL

http://fqa.9front.org/dash1.callingdicktracy.pdf

https://amzn.to/2SQ8ERL

THANKS: to aiju for cover assistance

KERNEL AND DRIVERS

9boot: get rid of 64 byte line length limit

9boot: don’t let user erase the prompt (thanks mischief)

bootrc: NEW experimental reboot method to load another kernel

bootrc: remove $ff references (was old parsed /boot/boot argument list)

kernel: change peek to return number of characters left rather than 0/-1

kernel: fix allocb for BLOCKALIGN*2 >= Hdrspc

kernel: fix livelock in rebalance (thanks Richard Miller)

kernel: fix tprof on multiprocessor

kernel: remove unused static variable “sofar” from timerintr() (thanks mischief)

kernel: sync two longjmp fixes from drawterm

bcm: NEW import changes for raspi2/3 from richard miller

bcm: cleanup timer and clock code

bcm: fix /dev/reboot text/data corruption (thanks richard miller)

bcm: fix l2 cache maintenance routines for raspi3 (armv8)

bcm: fix mysterious core clock resets under SMP (thanks richard miller)

bcm: intrenable() can happen from any cpu in case of dma interrupts

bcm: provide /dev/cputemp in a format stats can understand

bcm: simplify irq handling by having per cpu Vctl chain

bcm: simplify reboot code

bcm: speed up co-processor operations by avoiding i+d cache flush on each operation

pc, pc64: add pcienable() and pcidisable() functions

pc, pc64: increase CONFADDR buffer from 4K to 24K

pc, pc64: park application processors in rebootcode with mmu off

pc drivers: use pcienable() to handle device power up and missing initialization

devbridge: fix runt packets going through the bridge (thanks cinap)

devip, ipconfig: avoid overflow on lifetime checks

devip: fix arpread, dont return partial entries

devip: fix default parameter calculation for router life-time

devip: fix swapped tcp snd.scale and recv.scale in tcpstate() format (thanks joe9)

devip: make updating ra6 router parameters atomic

devip: only add interface route for “on-link” prefixes

devip: remove unused QLock from udp and icmpv6 control blocks (thanks brho)

devip: valid and prefered life-time should be unsigned, add remove6 ctl command

devuart: don’t sleep in uartdrainoutput() when called splhi or without a process

devusb: use Enotconf[] string constant

devvmx: remove bogus . direntry

ether82563: ignore i82753 checksums, fixes T60 ethernet

ether82598: fix multicast filter (thanks aiju, joe9)

etherx550: NEW intel 10GB ethernet controlller x550 driver (thanks joe9)

etheriwl: NEW Centrino Wireless-N 1030 (thanks lksmk from brazil)

etheriwl: NEW support type 2000 devices and the 2200 chip in x230t

mtx, ppc: remove cistrcmp() and cistrncmp() redefinition

nusb/disk: also drive usb attached scsi devices

nusb/disk: implement 64 bit lba read/write commands (16 byte commands)

nusb/disk: dont issue capacity command when theres no media present

nusb/ether: NEW support for lan78xx (raspi3) (thanks richard miller)

nusb/ether: tune buffer size parameters for SMSC ethernet (raspi) (thanks richard miller)

nusb/joy: send magic packet to enable playstation controller events

nusb/joy: update misleading comment (thanks Tobias Heinecke)

nusb/kb: lilu dallas multitouch

nusb/kb: multitouch support (touchscreens, stylus)

nusb/kb: work arround broken split transaction on raspi’s dwc otg usb controller

nusb/serial: NEW support for CH340 serial converter

nusb/serial: fix wrong guard statement (thanks deuteron)

nusbrc: support for raspi3 ethernet

nusbrc: prevent nusb/kb from attaching to sony ps3 controller

usbehci, usbxhci: add noehcihandoff= and noxhcihandoff= parameters

usbxhci: delay after reset, preserve reserved bits in legacy status control register in handoff()

usbxhci: only clear RW1C bits when set.

COMPILERS AND DEBUGGERS

5e: byte access incorrectly checked for long; brk has to round up addresses

5i ki qi vi: avoid buffer overflow in command read loop

ape/make: fix \ line continuation parsing

acid: fix transcript

cc: fix wrong “useless or misleading comparison” warning

dtracy: add support for aggregations

dtracy: avoid pointer to integer truncation warning on amd64

dtracy: call dtptrigger with a struct pointer rather than a list of arguments; put return value in arg9

dtracy: catch page faults

dtracy: fix lexer bug

dtracy: get rid of DTName struct, support more than three parts in a probe name, wildcard matching

dtracy: missing break in dteverify

kencc: make “function not declared” a warning unless compiling with -T

kencc: turn “function args not checked” warning into “function not declared” error if appropriate

kprof: fix precedence (thanks geoff)

snap: add debug flag, make debug less verbose

snap: be more conservative taking stack snapshot

snap: check for overflows, cleanup error handling

snap: consequently use ulong for page index and count

snap: use Mach->szaddr as the width of the stack pointer (fixes snap on amd64)

LIBRARIES

ape: declare gethostname

audio/libogg: sync to ogg v1.3.3

libaml: allow amlmapio() to re-enter the interpreter (can happen by pciadd() -> amleval())

libc: NEW procsetname()

libc: NEW utf2idn() and idn2utf() functions to deal with internationalized domain names

libc: return number of bytes produced for idn2utf() and utf2idn()

libdisk: catch null bytes in proto file, fix memory leaks

libdisk: check for proper line termination in proto file parser

libdraw: avoid deadlock for mouse ioproc sending on resizec

libdraw: fix gengetwindow()

libdtracy: wrong operator in XORI (thanks aiju)

libhtml: increase Nestmax to render some convoluted pages (thanks fernan)

libmach: change amd64 szreg to 8 (thanks charles forsyth)

libmp: add tests for integer conversions

libmp: mptov: make it actually work

libmp: declare mpfactorial

libmp: fix mptouv behaviour to match mptoui

libndb: add missing ndbdedup.c

libndb: make ndbipinfo() walk ipnet for all matching entries, concatenate and dedup result

libsec: fix memory leak in pkcs1_decrypt()

libttf: add SHZ[] instruction

libttf: dont unset LOOP in SHC

libttf: fix swapped argument in vscan()…

libttf: instruction 0x24 is DEPTH, not CLEAR

libttf: SHZ also uses 0x36

PROGRAMS

awk(1): fix append operator to avoid truncating file

acme: fix fd checks - initialize Window.rdselfd to -1 not 0

cfs: close mount half of pipe, fixes cfs not exiting when unmounted

cwfs: Disallow ‘/’ in file names.

disk/mkfs: remove unused cputype variable (thanks kvik)

dnstcp: temporarily switch on resolver mode so we can resolve the dnsslaves for axfr check

dossrv: use 64 bit vlong for sectors

dossrv: make GLONG() return ulong, handle getsect() error in dostat()

dossrv: cleanup

factotum: rsa: use mptober() to get right adjusted result instead of mptobe() and memset()

forp: change indexing to verilog-like semantics

fplot: add min/max operators

fplot: add support for readout with middle mouse button

fplot: color different curves

fplot: compute y range correctly when used with multiple graphs

fplot: fix operator associativity

games/blit: clean up cpu.c and make it pass tests

games/c64: make keyboard table more readable

games/doom: fix music for patch wads

games/gb: when the LCD is turned off, reset ppuy and ppustate to 0, fixes bug in dragon warriors iii reported by mischief

games/md: use cpu.c from blit

hget: do a HEAD request to check if the file is already complete (thanks miscief)

hgwebfs: read to eof by default to match urllib2 behavior

hgwebfs: write headers individually, so they are not limited by webfs iounit (thanks mischief)

ndb/dns: avoid format strings in procname

ndb/dns: do recursive lookup for dnsslave=

ndb/dns: fix format print warning for procsetname(), cleanup

ndb/dns: send_notify() to multiple ip addresses in parallel, filter myip()

ndb/dns: use libc’s new idn functions

ndb/dns: use nil for pointers in dnresolve() args

ndb/dnstcp: only lookup the expected address type in findserver()

ndb/dnstcp: restrict DNS zone transfers to clients listed as dnsslave=

ndb/dnstcp: return a proper non-answer when rejecting zone transfer

ndb/inform: handle internationalized domain names

netaudit: handle multiple ip addresses

ip/dhcp6d: handle internationalized domain names

ip/dhcpd, ip/tftpd: change default for tftp homedir to /

ip/dhcpd: Add swap server support in dhcpd (thanks k0ga)

ip/dhcpd: handle internationalized domain names

ip/dhcpd: implement rfc3397 dhcp search domain option (dnsdomain)

ip/ipconfig: default onlink and autoflag to 1

ip/ipconfig: handle internationalized domain names

ip/ipconfig: handle noconfig flag for router advertisement, add debug prints, cleanup

ip/ipconfig: implement rfc3397 dhcp dns search option (dnsdomain)

ip/ipconfig: increase maximum host and domainname size to 255 bytes. idn for -h option

ip/ipconfig: remove expired default routes on router advertisement

ip/ipconfig: silently ignore prefix information with Autonomous flag clear

ip/ipconfig: valid lifetime is in seconds, not milliseconds.

ip/tftpd: remove sunkernel hack

kbdfs: don’t get confused by broken utf8

pc: reference counting bug

plumber: fix memory and filedescriptor leaks (thanks BurnZeZ)

python: explicitly declare WaitForThreadShutdown as void

rc: ignore $cdpath for # device rooted paths (thanks kivik)

rc: implement $“x in terms of Xdol() and new Xqw() instruction

rc: skip searchpath for “”, “.” and “..”

rc: use searchpath() logic to handle $cdpath

rcpu: fix pvar to initialize empty variables (thanks mycroftiv)

rio: get rid of window delete thread, fix mysterious disappearing windows

sed: only dollars as first address are a problem for -u

ssh: fix spinning due to sticky intr flag on connection timeout

ssh: handle MSG_GOBAL_REQUEST

ssh: handle unknown MSG_CHANNE_REQUEST messages

sshfs: add exits(nil) to threadmain

sum, md5sum, sha1sum: set exit status properly on open/read errors

truetypefs: NEW (unfinished but working) truetypefs

truetypefs: fall back to width if advance is zero

truetypefs: fix subfont indices (thanks aiju!)

truetypefs: use /lib/font/ttf as default font path

upas/imap4d: ignore messages without digest info

upas/fs: allow msgincref() with mb->refs == 0

upas/fs: avoid switch on vlong breaking build (thanks k0ga)

upas/fs: checkfid() might be called with uninitialized fid, ignore

upas/fs: delete extra binaries

upas/fs: don’t enter mailbox into hashtree when it is being freed

upas/fs: fix broken body.ext in walk (thanks sl)

upas/fs: fix infinite loop in putcache

upas/fs: fix walk

upas/fs: handle errors from fetch for cachebody()/cacheheaders()

upas/fs: keep messages marked for deletion in the index

upas/fs: remove now unnecessary “force” argument to cachefree

upas/fs: rework the refcounting, use 64bit qid path, add checks

vt: fix backup/forward after resize

vt: implement line selection by double click

vt: implement word select

vt: make selecting() wait until all buttons are lifted avoiding menu when chording

webfs: fix memory leak in Nfmt(), use libc’s new idn functions

webfs: remove automatic Referer header

webfs: write headers individually so they are not limited in sum to the 8k buffer

DOCUMENTATION

add dtracy manpage

atazz(8): fix probe formatting

boot(8): document tls and reboot methods

2c(1): document some differences with ANSI C

kbdfs(8): fix nit

keyboard(2) spelling (thanks Amavect)

idn(2): add documentation for idn2utf() and utf2idn()

mp(2): clarify mptoa() and mpfmt() default base

mp(2): document mpfactorial

mp(2): fix spelling

namespace(4): document new TrueType path, drop unused Hershey fonts path

namespace(4): fix $home bin paths

procsetname(2): provide manpage

ptrap(4): fix formatting

rio(1): fix typo

sdahci(3): correct device name for top level control messages (thanks joe9)

truetypefs(4): document truetypefs, fix example path

vt(1): vt doesnt exit when the host process exits as claimed (thanks driusan)

OTHER

add ndb entries for il rcpu

/sys/lib/dist/mkfile: add pi.img target for raspi sdcard image

add /sys/src/boot/bcm/mkfile to download raspberry pi bootcode firmware

cpurc: filter ipv6 loopback address for automatic ip address setup (thanks fhs)

cpurc: handle multiple auth servers

fortunes: [9fans] ….. UNSUBSCRIBE_HELP NEEDED

fshalt: wait for fileservers command file to vanish

get rid of /lib/tftpd

upas: get rid of broken validatesender example, remove redundant upas/misc and setup target

back