From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FROM,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 25762 invoked from network); 23 Nov 2023 08:04:11 -0000 Received: from 9front.inri.net (168.235.81.73) by inbox.vuxu.org with ESMTPUTF8; 23 Nov 2023 08:04:11 -0000 Received: from mail-ej1-f49.google.com ([209.85.218.49]) by 9front; Thu Nov 23 03:00:13 -0500 2023 Received: by mail-ej1-f49.google.com with SMTP id a640c23a62f3a-9e1021dbd28so65139866b.3 for <9front@9front.org>; Thu, 23 Nov 2023 00:00:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1700726410; x=1701331210; darn=9front.org; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=mUzooPl4+AqG8+Y2WuJ1BXe0Q0BPL8p/D/VqIpeSB48=; b=CROfzHBXgETg441JCNOiP2NMeGsJcs/d/H9qgqAaOUDn3qmhxDfITy4kDfJ+30/YjX vVv4o1+1QDxckeyoUA59wtIzdhVwQUyUBVEt73DpuKoX9a/viYBEM2yNWEm3Wp1xf6Dd q2ExaIUDUItzxQ8QeT3eQI5s4ay31F+SVzQfpfbGX8ZUnWKOaR0sHDoR3d3xyCEehK/j M1UnJxkMUa40gwG4JsMOZQeBFadf7VRA7nzvzMHVd0iCNc4K2J0R1pSoK2IbniIfiLUY TlEaJONHBGC9z+PuPS3ORekGwobbGzkXUt8peRLt2Szi/Medw4VFMlin0fW/xl35K2J6 Is7g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1700726410; x=1701331210; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=mUzooPl4+AqG8+Y2WuJ1BXe0Q0BPL8p/D/VqIpeSB48=; b=IFZv+Mtcfqn19VcvvVNfbBaRNHud8Zs3fvwJeR/7ZM0cXXZYTUOAg0/Gdn0BTXVmpr 1yfZFqrSS5TasDcyEaZdXl+y7U9ht0H1WxiCjUOcZfQzXcU+AwF89dfBa4mmS+KquR3N pEiVU4cz+YoqK/65toE/pgd7Kdbq5nffojWEz1qA/7Tr8yBxm6bQ+yV40U3dfCHH4TWF BmFWdo7BKZjEttuulW4eAYuTVNnOW0UYWTeTF/epf4fUTfqbloMxK2J96e25SJuPWcZG Tr9mRBN2Pod9cAvuiE2mCq/JFZ8BMTdDNuNEYZM5ixHIUSU3/KS4UoB7p07qSe7EI59h wXYg== X-Gm-Message-State: AOJu0Yy2P7YozPfTeLz2F/99p/U4Gtj0k5TUTO30EyO6/LUrBJW7ZHyv VHPt1ZzkZeKY4iymz6UBQdAKHUfW59tSVcdK/G4G3skWOZe0+g== X-Google-Smtp-Source: AGHT+IF7ay9ysfC0W8T3ji2PozvR4G0Z8QC2If8CnG2cCMPu8UtQVv4ObBxGrcUA8+MNW3swGOb5RHg8vDF0HbCJLBo= X-Received: by 2002:a17:906:749c:b0:9e6:568:7374 with SMTP id e28-20020a170906749c00b009e605687374mr3433852ejl.1.1700726410279; Thu, 23 Nov 2023 00:00:10 -0800 (PST) MIME-Version: 1.0 References: <07A98C3CFEE8F0079DA57C43304C2DA6@gaff.inri.net> In-Reply-To: <07A98C3CFEE8F0079DA57C43304C2DA6@gaff.inri.net> From: Greyson Jennings Date: Wed, 22 Nov 2023 23:59:57 -0800 Message-ID: To: 9front@9front.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: distributed HTML service-oriented singleton singleton Subject: Re: [9front] 9FRONT "HUMANBIOLOGICS" RELEASED Reply-To: 9front@9front.org Precedence: bulk dammit, just when i finally got don't touch the artwork working on my pi. Great work by everyone involved. On Wed, Nov 22, 2023 at 7:58=E2=80=AFPM wrote: > > 9FRONT "HUMANBIOLOGICS" RELEASED > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > > ![front](http://9front.org/img/humanbiologics.front.png) > > Notable changes in this release: > > - New qemu kernel for arm64. > > - New /sys/src/9/arm64 directory with generic arm64 implementations that > is shared with all the arm64 kernels (imx8, bcm64). > > - The arm64 and amd64 kernels now support using FPU in interrupt > context. > > - 32K IOUNIT. > > - Wifi and I=C2=B2C support on the raspberry pi. > > - Ethernet switch-over (ethermultilink(8)) allowing to switch > transparently between wifi and ethernet. > > - Libmach now supports ARM THUMB, so acid is now able to disassemble > thumb code such as gba roms. > > - The efi loader has been ported to arm64. > > 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. > > > > > > > > > > > > > > > > MIRRORS > ------- > > > > > > > > > > GIT REPOSITORY > -------------- > > > > DASH 1 MANUAL > ------------- > > > > dash 1 manual: > > SONGS > ----- > > by cinap > > > > by sl > > > > THANKS > ------ > > [REDACTED] > > KERNEL AND DRIVERS > ------------------ > > 9/boot/net.rc: allow setting additional flags to aux/wpa with $wpaopts in= plan9.ini > > add arm64 qemu kernel > > arm64: mem.c doesnt need sysreg.h > > arm64: remove hz/mhz from conf, not needed. > > bcm, bcm64, imx8, kw: Fix missing preempted() call on non-clock interrupt= (thanks Anthony Martin) > > bcm, bcm64: Add bitbang i2cgpio driver > > bcm, bcm64: handle disk activity led from sdmmc > > bcm64, imx8, pc64: save stack space in fault handler > > bcm64, imx8: fix breakpoint note strings > > bcm64, imx8: provide more flexible MPIDR_EL1 CPUID to machno mapping > > bcm64, imx8: writing CAPR_EL1 (to turn fpu on/off) needs a intruction bar= rier > > bcm64: add i2c for pi3 > > bcm64: dont need sysreg.h in mem.c > > bcm64: port new FPU code, making FPU available to interrupts > > bcm64: remove sysreg.c > > bcm64: use generic 9/arm64/* files > > bcm64: use generic 9/arm64/mmu.c > > bcm: add wifi driver > > boot/efi: add arm64 > > boot/reform: update flash.bin url > > devarch: recognize AMD Jaguar and Puma SoC's (thanks dave) > > devether: handle bypass outside of ethermux() > > devi2c: expose the I2Cdev structure to the controller. > > devip: add gratious arp ctl message to /net/arp > > devip: automatically unbind interface on read errors > > devip: fix comment ifc->id -> ifc->ifcid > > devip: have findipifc() return rlock'd interface, allow to use "del" inst= ead of "remove" for route and interface operations > > devip: make some symbols static, cleanup > > devip: run Medium.unbind() with ifc->conv released, cleanup > > devpipe: remove bogus "wstat on closed pipe" note > > devsd, sd*: use seprint() style start/end pointer for rctl() function > > devsd, sdmmc, ether4330: improve infrastructure for sdio > > devtls: allow larger than MaxRecLen (16k) writes > > devuart: cleanup uart console code > > devuart: fix wrong opens count in case of uartenable() error > > devuart: handle software flow control (XON/XOFF) in devuart alone > > devuart: make sure consuart was enabled before setting serialoq > > devvmx: reset kernel fpu state before loading vmx fpu state > > devvmx: restore previous initial value for xcr0 > > ether4330: annex sdM for emmc (changed order) > > ether82563: add B360 i219-v > > ether82563: clear force speed/duplex bits in link-up (thanks taw) > > etherimx: ignore trailing 4 byte garbage in ethernet receive packet > > etheriwl: Add support for Wireless AC 3160 (thanks kws) > > ethermultilink: add "bypass" ctl for ethernet > > ethermultilink: send gratious arp instead of flushing arp cache > > ethermultilink: switch between different physical interfaces based on lin= k status > > i2cbcm: clean up and fixes > > i2cbcm: use core clock rate from vcore instead of hardcoding 250Mhz > > imx8, bcm64: make sure interrupts are of (sched() re-enables them) > > imx8, bcm64: touser() already called splhi()'d > > imx8: port new FPU code, making FPU available to interrupts > > imx8: share generic arm64 mmu.c > > imx8: usb: enable host IN auto retry > > imx8: use generic 9/arm64/^(init9.s rebootcode.s) > > imx8: use generic 9/arm64/cache.v8.s > > imx8: use generic 9/arm64/fpu.c > > imx8: use generic 9/arm64/sysreg.c > > imx8: use generic 9/arm64/sysreg.h > > imx8: use generic 9/arm64/trap.c > > kernel: fix SEGMAXSIZE macro, force 64-bit result > > kernel: make walk/open errors more consistent with userspace > > kernel: move virtio10 drivers to port > > kernel: support 32k iounit > > nusb/disk: advertise the correct iounit for disk files. > > nusb/disk: use IOUNIT constant for Maxiosize > > nusb/disk: work around quirk in some CD drives > > nusb/ether: implement link status detection for smsc and lan78xx > > nusb/ether: make stats file compatible to stats(8) > > nusb/kb: fix Glorious Model O mouse > > nusb/kb: fix portreset feature and recovery > > nusb/usbd: attach spam protection for reset loops and flanky devices > > nusb/usbd: don't spam opendevdata() transaction errors before timeout, er= ror printing > > nusbrc: use exponential backoff and timeout usb enumeration > > mouse: use tsleep() instead of delay() (thanks uramekus) > > omap: Fix missing preempted() call after non-clock interrupt (Thanks Anth= ony Martin) > > pc, pc64: clear osxsave flag in cr4 when not used > > pc64: avoid STI/CLI, touser() already called splhi()'d > > pc64: make FPU available in interrupts > > pc64: no need to _stts() in squidboy() > > pc: do trapinit() and mathinit() early > > pc: skip CLI/STI when not needed > > pi3, pi4: change the order of emmc and sdhc for ether4330 > > pipe: bring back wstat, set size (in bytes) of the pipe buffer > > qio: fix memory leak in qproduce() > > reform/pm: fix lcd pwm cycle setting precision > > reform: add ethersink driver for ethermultilink > > sdhost: implement sdhost controller driver so we can use wifi always (pi3= ) > > sdnvme: dont make queues largers than MQES field in capability > > swap: fix pager nil pointer derefence when running out of procs > > zuke: make stack usage independent of Biobuf's Bsize. > > zynq: fix print format in emmc driver > > zynq: remove uartconsole() function, already done by devuart internally > > COMPILERS AND LINKERS > --------------------- > > /sys/lib/acid/port: mind upper bounds of fnbound > > 6a: use IOUNIT for BUFSIZ > > 6c: fix embedded struct conversion codegen > > 6c: fix wrong signed type conversion from char/short -> float/double > > 6c: remove stray non-interruptible temporary warning > > 7c: add form3 support (no functional change) > > 7c: do NOT allocate link register for general use > > 7c: dont replace SXTW instruction following MOVW $const, r > > 7c: fix constant propagation for negative 64-bit constants > > 7c: replace {CMP $0,=E2=80=A6; Bcond} with CB[N]Z/TB[N]Z when possible > > 7l: 1 =E2=86=92 NOPROF to avoid confusion > > 7l: avoid hitting old 7c bug with 64-bit constant propagation > > 7l: define missing TBZ/TBNZ relation > > 7l: do a single pass to produce data segment instead of doing it in chunk= s > > 7l: fix MADD/MSUB optional reg > > 7l: support CB[N]Z[W] instructions > > 7l: support fmov between general and fp registers > > 7l: support fused multiply-add/sub ops > > 7l: use wider INITTEXT and INITDAT > > *l: make sure Sym and Auto structs are fully initialized (thanks moodman) > > ar: use IOUNIT for streaming in files > > cc: support binary constants and refactor > > cc: use IOUNIT for BUFSIZ > > cpp: remove trigraphs > > cpp: run tests with 'mk test' > > yacc: define dummy yytokname() and yystatname() macros if not yydebug > > LIBRARIES > --------- > > lib9p: return effective iounit in Ropen response > > libaml: dummy implement NotifyOp (thanks uramekus) > > libauthsrv: readnvram: prompt for password conformation > > libbio: bump Bsize to IOUNIT > > libc/arm64: disable profiling on memcpy (memmove is an alias and follows = immediately) > > libc/arm64: fabs, floor and ceil in assembly > > libc/arm64: memmove/memset - save/restore link register > > libc: fix crash in idn routines with long domain names > > libdraw: use IOUNIT for transfer block size in readimage() > > libjson: make sure string contains only a single JSON value > > libmach: arm64: disasm fmov Rn,Fd / fmov Fn,Rd > > libmach: fix RETURN and branch target for CBZ/CBNZ for arm64 (wrong sign = extension) > > libmach: fix dropped header in last commit > > libmach: open /proc/n/kfpregs when kernel debugging > > libmach: set errstr if we can't find a SP for a PC > > libmach: setmach: mipsLE* -> spim > > libmach: thumb support > > libregexp: regprint: make regimpl.h include match its siblings > > libsec: ansi-ify hkdf, pbkdf2 and scrypt > > libvorbis: delete random sparc64 .a > > PROGRAMS > -------- > > acme: add font control message > > add /rc/bin/doom: games/doom launcher > > add aux/aout2efi > > add games/dmx: decode doom sound effect lumps (dss*) > > add games/mid2s: streaming midi from file, and merge common stuff into ge= neric framework > > ape/expr: ansi-ify function declarations > > ape/pdksh: ansi-ify function declarations > > ape: ansi-ify isatty and listen > > ape: libap: do not set objtype in amd64 mkfile > > audio/flacenc: implement [-i fmt] for supported formats; fix tell callbac= k; fix big endian and 3-byte samples > > audio/zuke: ICY: 4k of stack is enough for everybody > > audio/zuke: double mainstacksize > > audio/zuke: fix ICY proc running out of stack > > audiohda: added Cannon Lake support > > audiohda: detect hda devices using pci class id > > aux/depend: remove old cruft > > aux/dial: use IOUNIT for transfer block size > > aux/trampoline: use IOUNIT for transfer block size > > bar, fontsel: use heap allocated biobuf > > bar: smaller buffer for aux proc; exit on eof > > bzfs: use IOUNIT for buffer size > > bzip2: use IOUNIT for transfer block size > > cdfs: use IOUNIT for maxrpc (thanks Arne Meyer) > > cfs: use IOUNIT for MAXFDATA > > cmd: use increased iounit > > compress: ansi-ify function declerations and enable warnings > > cpurc, termrc, bootrc: organize default device binds > > diff: don't flush on every line > > diff: fix no newline test > > diff: generate no-newline directives > > diff: improve is-binary heuristic > > diff: make distproto copies tests > > dossrv: use IOUNIT for Maxdata > > eui: draw in seperate proc > > fcp: use IOUNIT as default size > > file: recognize MOD files (thanks umbraticus) > > file: recognize and differentiate opus > > file: use xiph mimetypes to clearly differentiate ogg/vorbis from ogg/opu= s et al (thanks sigrid) > > fshalt: get rid of special nvme hack for disk shutdown > > games/aout2gba: allow either ARM or ARMB mach type > > games/dmx: rename to games/dmxdec for consistency > > games/doom: bump max number of simultaneous sound effects > > games/doom: don't crash on invalid music selection with idmus cheat > > games/doom: don't print useless status on stderr > > games/doom: draw in a separate proc > > games/doom: faster palette=E2=86=92rgb conversion for arm64; fix convproc= channel handling > > games/doom: fix unhooked sound attenuation with distance > > games/doom: remove dead code > > games/doom: run audio in its own proc; can stop frame-dropping as well > > games/doom: use wadfs to expose genmidi lump instead of extracting to /tm= p > > games/doom: wait explicitly for convproc to exit before running getwindow= on resize > > games/festoon: ansi-ify function declerations > > games/gb: correctly mark transmitted serial data as sent > > games/gba/rom: use -t with 5a > > games/md: ignore invalid writes (makes cave story work) > > games/mid2s: fix usage string > > games/mkfile: match the dmxdec rename > > games/opl3: fix choking on high tempo streams > > games/voc^(enc dec): move from audio and add encoder > > git/*: reduce object cache size > > git/add: don't include paths in the .git directory > > git/branch: avoid null list errors > > git/branch: prevent deleting current branch, skip dirty check for deletin= g branches > > git/clone: correctly handle cloning repos with '/' in the remote ref > > git/commit: fix sed invocation: our '^' operator has a quirk when used wi= th 'g' > > git/diff: always respect the specified branch > > git/diff: make '-u' flag imply '-s' > > git/fs: fix leak of uid strings > > git/fs: match errors with other file servers > > git/fs: preserve mode bits when walking branch dirs > > git/fs: when statting an object, generate a correct qid > > git/merge: include files changed in the merged commits > > git/query: allow arbitrary length queries > > git/query: check for nil return from seprint > > git/revert: correctly revert files with spaces in the path > > git/revert: only look at changed files > > git/save: fix warning > > git/walk, git/save: be less restrictive about permission matching > > git/walk: add -b option to override base branch > > git/walk: filter out files from within the .git repo > > git/walk: fix usage on new repo > > git/walk: only show untracked paths matching requested prefix > > git: fix zero hash check crash in git/serve > > git: replace index format for ~200x speedup > > grabrfc: update fetching > > hg: actually remove hg this time > > hg: remove forgotten traces > > history: set missing execute bit > > hjfs: unlimited buffer works > > hjfs: use smaller fixed buffer size > > imap4d: use IOUNIT for Bufsize > > ip/ftpfs: fix totally broken messagesize, use IOUNIT > > ip/ipconfig: allow "del" verb in addition to "remove" > > ip/snoopy: fix missing break rrfmt() in (tho, harmless as of rrsupported(= ) check) > > ip/snoopy: sync with ndb/dns > > ircrc: fix pong message (thanks mkf) > > ktrans: more tests, telex rewrite, small chinese fix > > ktrans: pinyin, cleanup and documentation updates > > lstk: add /bin/lstk to dump most recent crashed proc > > merge3: handle edge cases where we remove lines > > merge3: overlap happens on the source offsets, not the dest offsets > > mk: dead code removal > > ms2html: fix crash on macro without newline > > ndb/dns: add -L flag for local-recursive server > > ndb/dns: avoid blocking 9p on refresh, use shorter 15second query timeout= , cleanup > > ndb/dns: better handling of extended response code > > ndb/dns: built-in tcp server, remove cruft, refactor > > ndb/dns: embedd name string into DN struct > > ndb/dns: fix RR.caa leak > > ndb/dns: fix memory leak in dnzone() > > ndb/dns: hack for the caching server for delegated nameservers > > ndb/dns: implement EDNS(0) extension (rfc6891) > > ndb/dns: implement concurrent garbage collection > > ndb/dns: make sure theres only a single Topt option in getednsopt(). > > ndb/dns: refresh the cached dnsserver domain ndb entries in db2cache() > > ndb/dns: remove leftover #pragma varargck argpos dnsdebug 1 > > nedmail: set $% to the full path of the current message > > newuser: use non-expanded $home instead of /usr/$user in lib/plumbing com= ment > > page: use IOUNIT for NBUF > > paqfs: use IOUNIT+IOHDRSZ for mesgsize > > patch: delete files for tests before test run > > patch: fix offsets in reverse mode > > patch: support no-newline directives > > postscript: ansi-ify function declerations > > rc: use IOUNIT for io NBUF > > readtags, zuke: extract cover images stored in the audio files (thanks g-= w1) > > riow: skip redundant k events with shifted keys > > rx: use IOUNIT for transfer block size > > skelfs: use more correct "file does not exist" error > > sshfs: use MAXWRITE for I/O unit > > sysupdate: use the rc -b flag to keep sysupdate in memory > > tapefs: use IOUNIT for Maxbuf > > tl: use IOUNIT for MAXIO > > tl: use the allocator from cc/compat > > tlsclient: use IOUNIT for transfer block size > > tmdate: add ordinal day of month format specifier > > tput: use iounit(2) of the file-descriptor by default > > troff: embiggen troff character size limit to support huge fonts > > uhtml: use IOUNIT for transfer block size > > upas/Mail: when space is tight use ellipsis (=E2=80=A6) instead of 3 dots= (...) > > upas/Mail: use IOUNIT for Bufsz > > upas/fs: don't abort when the server gives us invalid dates > > upas/fs: don't try to fstat a renamed fd > > upas/fs: use IOUNIT > > upas/fs: write index out to temp file > > upas/imap4d: fix bad censorship of the password when debug is enabled. > > upas/imap4d: return SEARCH response in caps. > > upas/marshal: use IOUNIT > > upas: "move" ctl verb to move messages between imap folders (thanks Risto= Salminen) > > vac: use IOUNIT reading files > > vacfs: use IOUNIT > > vncs: use IOUNIT for Maxfdata > > vncv: remove 16 -> 32 bpp conversion routine > > vt: bracketed paste mode (fixes autoindentation in text editors) > > vt: resize only when the window is not hidden (fixes window at top left c= orner with riow after terminal reset) > > walk: handle removed files correctly > > wc: use IOUNIT for NBUF > > webfs: use IOUNIT for transfer block size > > DOCUMENTATION > ------------- > > ether(3): document "bypass" ctl message. > > ethermultilink(8): add manpage with example > > ethermultilink(8): add some warnings about leaving the secondary interfac= es alone > > ethermultilink(8): fix bridge(3) reference (thanks Stuart Morrow) > > ethermultilink(8): fix sink bind (thanks sigrid) > > git(1): document 'git/diff -u' > > git(1): document flag to show unused files > > git(1): document git/import -n > > git(1): remove lies from manual, improve wording. > > git(1): update and clean up git/walk section > > ip(3): document garp ctl message for /net/arp > > listen(8): remove tcp53 reference, remove !tcp53 template > > rio(1), rio(4): wctl /srv pipe is dead, mention 'none' attach (thanks uno= be) > > paqfs(4): remove 8K default message size comment > > pc(1): remove non-existent -n (thanks kvo); misc fixes from checkman > > plan9.ini(8): document $wpaopts > > sd(3): list /led and /smart files > > snap(4): clean up lies > > stats(8): drop 802.11, consider *ALL* /net/ether*/stats > > webcookies(4): cookiefs -> webcookies > > zuke(1): document audio/readtags > > OTHER > ----- > > /lib/keyboard: fix subscript small letter n. add super/sub small letter i > > /lib/rob: Critical code needs static typing. > > /lib/theo: You are in way over your head > > /lib/theo: You are trying to compare a pig and a moon rocket. > > /lib/theo: You get to adapt to what we produce. > > /lib/troll: We have created something new that we named R9, an OS strongl= y inspired by Plan 9, written in the Rust programming language. > > /sys/lib/dist/mkfile: include /386/mbr et al in disk images > > /sys/lib/dist/ndb/common: add esmtp (port 587) > > /sys/src/boot/mkfile: add missing child directories > > distproto: include /lib/ucd in releases > > replace ? with =D8=9F character in fa kbmap (thanks mkf) > > ![back](http://9front.org/img/humanbiologics.back.png) --=20 No newline at end of file.