NOTABLE CHANGES
In this release:
memdraw and devdraw now support affine warp primitive with demonstration programs provided in form of games/rotzoomer and see also image(1).
new atomic(2) functions provided for arm, arm64, mips, 386 and amd64.
big stabilization improvements for kernel when it runs out of memory as well as complete overhaul of the mount and image cache.
virtio10 i/o bar support for openbsd vmd.
libc got rune normalization updated to unicode v17.
libsec now has blake2 implementation.
git got a new rebase utility.
troff got ported to native plan9 from ape.
DOWNLOAD
Multiple installation media are provided for PC, Raspberry Pi, MNT Reform, and QEMU. For PC, burn an .iso file to CD, or dd it directly to USB media. For Raspberry Pi or MNT Reform, 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.
QEMU images are provided in QCOW2 format.
http://iso.only9fans.com/release/9front-11321.386.iso.gz.torrent
http://iso.only9fans.com/release/9front-11321.amd64.iso.gz.torrent
http://iso.only9fans.com/release/9front-11321.amd64.qcow2.gz.torrent
http://iso.only9fans.com/release/9front-11321.arm64.qcow2.gz.torrent
http://iso.only9fans.com/release/9front-11321.honeycomb.img.gz.torrent
http://iso.only9fans.com/release/9front-11321.pi.img.gz.torrent
http://iso.only9fans.com/release/9front-11321.pi3.img.gz.torrent
http://iso.only9fans.com/release/9front-11321.reform.img.gz.torrent
; sha1sum -2 256 9front-* ed05b97fc977acc7dd419db576fbe8e8c02eaaf7da5602d59170875e66d9d699 9front-11321.386.iso.gz 028e2dc9a44eb69f833dd0aff560bf01afe2a0e7cf092a95b98230fa7a9eaa43 9front-11321.amd64.iso.gz fe2a664ac5f60c7e572350294af6af733d4f076c9eff97e2e5fac8d4c15a5715 9front-11321.amd64.qcow2.gz 9ee9ff0c50da252f852d288373757a242bbb2f894e07bcd76587359d18426533 9front-11321.arm64.qcow2.gz 5fcce163e1a21b5facd4d0c4df14fced09594bc8dabae7d483834616a39a479b 9front-11321.honeycomb.img.gz 1e5ed728a27af6644b3b85df13278704cb801efc5470b65f680db541b33fdc38 9front-11321.pi.img.gz f24f7562f9883c91cb533ab9905e362b0b2c8619e7ac8dadfe1ec3994e3687e0 9front-11321.pi3.img.gz 2f7a596572e8bc65dca00f2a09dabcc5260cb3dec7fe002cbb67f13bc8cd6a78 9front-11321.reform.img.gzMIRRORS
https://iso.only9fans.com/release/
GIT REPOSITORY
ACHTUNG!
the git repo has moved:
http://git.9front.org/plan9front/9front/HEAD/info.html
DASH 1 MANUAL
http://fqa.9front.org/dash1.release.pdf
dash 1 manual: http://9front.org/propaganda/books
SONGS
by unrznbl
http://9front.org/mp3/whitelabel-theyliveparty.m4a
THANKS
[redacted]
KERNEL AND DRIVERS
9/pc: add mkfile rule for install.$dest
9boot: Add the *nouartbios parameter
9pc64/mkfile: add ‘mk install.$part’ command
bcm: trap and skip barrier instructions (for arm v6)
bootrc: make sure to reset #ec/nobootprompt on reboot!kernel!… boot
devdraw: implement affinewarp protocol message ‘a’
devenv: don’t mangle lists in ‘#ec’ for /dev/reboot
devenv: fix off-by-one in nul to space replacement (thanks cinap_lenrek)
devip: make dial(2) work for /net/ipifc
devsegment: remove useless waserror()
devsegment: speed up fixedseg()
etheri225: correctly mask interrupts
kernel: Improve killbig() function
kernel: New page cache design
kernel: attach text segment outside of up->seglock in sysexec()
kernel: avoid pagereclaim() on active images when possible
kernel: avoid smalloc() for process groups
kernel: big virtual memory system overhaul
kernel: cap the amount of work to reclaim pages form hash chain
kernel: change newpage() prototype
kernel: don’t use smalloc() for ptealloc()
kernel: double image hash hash-table size from 512 -> 1024 buckets
kernel: embed the Mount.spec string into Mount structure
kernel: fill stack segments with 0xfefe… pattern
kernel: fix bind order for /env (#e vs #ec)
kernel: fix crash in fpunoted() when called from noted(NRSTR) (thanks yuvia)
kernel: fix deadlock between sysexec() and killbig() (thanks ori)
kernel: fix memory leak in procctlmemio()
kernel: fix rounding of bss size in exec (broke mntgen on arm64)
kernel: have smalloc()
kernel: improve imagecache locking
kernel: leave alignment hole between TEXT and DATA unmapped
kernel: limit fscache to 256MB
kernel: lock segment in segpage()
kernel: make pio() interruptable, avoid copy when doing single-page I/O
kernel: move core of note handling logic into port/sysproc.c
kernel: re-check Segment.ref when detaching from Image
kernel: remove unneeded memset() in procinit0(). xalloc() zeros
kernel: rename RWlock to RWLock for consistency with userspace
kernel: restore original context for noted(NDFLT)
kernel: revert locking change for putseg(), it is A/B/A bug.
kernel: secalloc() whine when out of memory
kernel: wrap resrcwait() in waserror() for FPsave/FPalloc
nusb/ether: reset promiscuous mode only when connection gets closed
nusb/serial: add support for cdc serial devices
nusb/usbd: process read requests on /dev/usbevent in (descending) open order
pc64: don’t panic when running out of page-tables
tcp: remove “tcpporthogdefense” cruft
virtio: support pci i/o bars for virtio10 devices
vmx: fix format arguments in error messages
vmx: whine when we have an invalid mac address
COMPILERS, LINKERS, DEBUGGERS
5[al]: support DMB, DSB, and ISB
7[al]: implement atomic register loads properly
cc: OLABEL and OCASE nodes do not chain on Node.right (fixes case range warning)
cc: lexbody/macbody are effectively header dependencies.
lstk: allow getting multiple stack traces
v[al], libmach: add LL (load-linked) and SC (store-conditional)
v[al]: add SYNC (memory barrier)
vl: LL operand order and scheduling
vl: atomic instruction scheduling
LIBRARIES
ape: add blake2s to ape/libsec
ape: remove fmtdoquote
libc/port: fix regression in ./reduce script (thanks ndeuteron)
libc: fix aswap*() for arm
libc: import atomics from gefs (thanks ori)
libc: lift limit on pool sizes
libc: make needsrcquote the default
libc: move unicode data stuff from port/ to ucd/
libc: remove duplicated test (powtest.c is the same as pow.c)
libc: remove spare dofmt decl
libdraw, libmemdraw: implement affinewarp(2) and move mkwarp(2) from memdraw to draw
libdraw: don’t set the Drawop in affinewarp()
libdraw: locking revamp
libdraw: no more racey Drawops
libgeometry: fix incorrect use of sizeof to size matrices
libhttpd: the reports of my death have been exaggerated
libmach/test: avoid 64-bit value in switch
libmach: disassemble DMB, DSB, and ISB correctly
libmach: dissasemble arm64 atomic loads and stores
libmach: fix D_REGREG operand parsing for arm
libmemdraw: add image correlation and other improvements
libmemdraw: add memaffinewarp routine
libmemdraw: arbitrary color chans and other improvements for memaffinewarp()
libmemdraw: do the matrix inversion in mkwarp() instead of memaffinewarp()
libmemdraw: follow draw(2)’s behavior for clipr and repl
libmemdraw: optimized per-chan (get|put)pixel versions for memaffinewarp
libmemdraw: use fixed-point in memaffinewarp()
libmemlayer: fix little typo in memdraw()
libsec: B2s_256dlen -> BLAKE2s_256dlen
libsec: add blake2s-256
libsec: add x25519() function (thanks nepomuk)
libsec: allow missing subject
libsec: blake2s_128, mac_blake2s_*
libsec: fix warning in chacha tests
libsec: move tests in port to test/
libsec: rename internal fmul() function form curve25519.c to not conflict unix <math.h> (thanks an2qzavok)
PROGRAMS
9fs: exit with success when we succeed.
acme/Mail: only require confirmation if the window is dirty (thanks flowerss)
acme/Mail: remove unused plumb fd
acme/Mail: require confirmation do Del a composing message
acmed: parse and show error messages returned from the server
audio/mixfs: add support for a null sink
auth/acmed: gracefully handle missing errorbody file
auth/factotum: are we webscale yet?
awk: fix %c printf format not handling runes
awk: make tolower and toupper builtins unicode-aware
disk/test: rfork en to not pollute environment/namespace
diskparts: use $sysname instead of reading /dev/sysname
distproto: include /lib/image/filter
eui: fix off-by-one in joystick event processing
eui: get rid of useless and uninformative n-1 read size
eui: handle screen scaling ourselves
fortunes: I don’t really like anime.
g: add rust
gefs patch: make wstat(nulldir) sync the fs
gefs: add comments/asserts
gefs: add missing ‘\n’ in error message
gefs: add missing unlock in waserror() path
gefs: add reloading users to usage example
gefs: check should take the mutlk, not make the fs readonly
gefs: document ‘-c’ flag
gefs: don’t allow removal of locked files
gefs: dump block state on assertion failures
gefs: fix deadlocks on very slow disks
gefs: handle full disk and other errors more gracefully
gefs: implement ‘-R’ flag for mounting file systems read-only
gefs: improve assertions and logging
gefs: only error() after waserror
gefs: remove broken dead code in freepath
gefs: remove spurious debug print
gefs: remove stray print
gefs: respond with Rwstat in all necessary AOsync cases
gefs: sync last block when compressing
gefs: tighten assertion on btupsert
gefs: track nulldir more accurately
gefs: use rwlock instead of atomics for mount list
git/*: make murmurhash portable
git/branch: avoid spurious warnings when checking out remote branch
git/branch: branches at the same commit may not be the same
git/branch: don’t clobber baseref when checking if we have an upstream branch
git/branch: sort output with -a
git/common.rc: redirect stdout to stderr
git/diff: don’t use the index for diffing with a commit
git/get: also, we want the HEAD ref.
git/get: don’t fetch all prefixes by default
git/get: properly skip entire argument string once the nheads limit is surpassed (thanks ori)
git/rebase: add missing ‘rfork en’
git/rebase: stop doing it.
git/rebase: update man page to match current behaviour
git/serve: use strip function
git/walk: Fix missing NUL terminator for exit status
git/walk: fix bug with prefixed directories
git/walk: major cleanup, partial rewrite, remove bad optimizations (thanks cinap)
git: allow unicode in branch names
git: cleanup git/hist
git: fix ‘mk clean’
git: fix parsing of author lines
git: improve comments in mkfile
git: send more known refs, in hopes of smaller fetches
hget: add -e flag for errorbody contents
history: use unified diffs for -D and add delimiters
htmlroff: sometimes a quote is just a quote
httpd: nuke from orbit
image/affinewarp: initialize the mstk and fix getbbox()
imap4d: make BYE message upper case (thanks saeed)
inst/mountgefs: create an unsnapshotted /n/other for gefs by default
inst/mountgefs: make log messages accurate
inst: don’t copy *acpi=0x… into plan9.ini
io: add bitmask argument
ip/ftpd: zero out ftpd state on startup
ip/ppp: implement termination timeout
ktrans: use ^‘ to escape other control characters (thanks B. Wilson)
mk: initialize ‘files’ in main (thanks A. Kozdra)
mothra: quote filename correctly when passing strings to rc
mothra: show errorbody contents (404 pages)
newuser: default to $“sysname^‘% ’ for the prompt
newuser: fix variable expansion
patch: add ‘-d’ flag to make applying patches less clunky
patch: add missing case in previous change
patch: add support for best-effort patching with reject files
patch: cleanname of paths
patch: improve behavior when a patch has rejected hunks
rc: fix fn sigexit handling (thanks nepomuk)
rotzoomer: new game
samterm: add scroll-select
sed: increase input line size to 32k (was 8k)
sshnet: pass cs query operations to original /net/cs
stats: not on my bitsy
sysinfo: include the commit from the last sysupdate (thanks Dave Woodman)
sysupdate: onwards and upwards
sysupdate: tell people to make sure the permissions on the extracted new repo are correct
tar: add support for generating long file names
tlssrv: we know the internet is hostile
topng: fix crash due to uninitialized stack variable
troff: fix parsing of font files in nroff (thanks Dave Woodman)
troff: native port
tweak: increase maximum magnification
upas/fs: Allow mounting nested imap inboxes
upas/fs: handle unsolicited expunge messages correctly
upas/fs: make ‘-f’ flag consistent with ‘open’ message
upas/fs: no strcpy for username
upas/smtpd: improve default configuration
vcrop: fix clamping of cropped images with panned images
vdiff: add a trailing space hunter
vt: don’t reapply side effects when replaying terminal state
webfs: Provide errorbody file
DOCUMENTATION
ascii(1): look example: remove the extra 0 and add -f
atomic(2): reference the correct names
draw(3): document new affinewarp protocol message ‘a’
fstype(1): Add gefs
gefs(4): add missing .TP in manpage (thanks Dave Woodman)
gefs(8): add missing ‘-c’ flag to example
gefs(8): add missing space in example
gefs(8): document creating /n/other/usr/$user/tmp when adding users
gefs(8): escape \ in EXAMPLES
gefs(8): fix botched commit
gefs(8): one more typo
gefs(8): remove stray “logprog chgrp” at top of page
image(1): add a new set of tools for image processing
ip(3), ether(3): move the netif ctl’s to ether(3)
ip(3): document correct default keep-alive timeout (120 vs 30 seconds)
memdraw(2): document new behavior and fix mkwarp() paragraph
patch(1): add missing flags to SYNOPSIS (thanks Dave Woodman)
patch(1): document ‘-r’ flag
plan9.ini(8): *tiltscreen -> tiltscreen (thanks rodri)
prof(1): add flambe to NAME
quote(2): fix lie about doquote being nil
OTHER
all: update references to the repo to its new location
/lib/theo: everything is a nail
/lib/ucd: Update to v17.0
/sys/doc: add unicode.ms
/sys/lib/dist/mkfile: enable console on qcow2 images
/sys/lib/postscript/font/fontmap: garamond regular italics should not be bold italics
/sys/src/mkfile, /sys/src/cmd/ip/mkfile: remove httpd
/sys/src: do not assume . in $path (thanks falsifan)