June 9, 2004

	#define PLAN9PORT when compiling (sorry)

	handle local files better in web

	rewrite malloc, realloc, calloc, free, strdup to p9*

	various venti library fixes

	update plumbing rules to handle urls better

	add mouse wheel scrolling to acme, libdraw, from rob

	add mouse wheel scrolling to 9term

	add page up, pagedown, etc. work in sam

	better plumbing in sam, from presotto

	fix race in rendez-signal.

	quiet httpd a bit

	fix race in libthread - call _exit not exit

	first try at making delete work in rio for gv, from wkj

May 18, 2004

        merge troff and friends from wkj and Taj Khattra

May 14, 2004

	more small bug fixes

	acme: make arrows work in tags, from rob

	sam: make sam -r machine files work, from presotto

May 11, 2004

	more small bug fixes

May 9, 2004

	don't reference data below stack pointer in sha1, md5


May 5, 2004

	various bug fixes

April 29, 2004

	add -W to specify window size

	minor fixes

April 27, 2004

	add threadspawn

April 25, 2004

	add gview, image viewer, scat

	fix note groups in rc

	fix mc, remove Dotfiles from acme in favor of Getdir

	fix extraneous flush in Bprint

	add block device size for linux

	make astro work on suns

April 23, 2004

	fix B to handle non-existent files properly

	add stats

	various 9term/rio fixes from axel belinfante

	reformat sunos compiler errors to use file:line format

April 21, 2004

	add bc, units, mtime, primes, news

	add registers to acid stack traces

	add acid man page (forgotten before)

	add proper support for long names in archives to mk
	change mksyslib, mklib to use mk's magic archive powers

	add jpg, map, pr, p.

	rename Bwait to E (thanks to rob for the name).

	add -m flag to mkdir

	fix acid's handling of infinite includes

	rename yacc to 9yacc so that we can be sure to find it.

	stop malloc'ing in signal handlers.
	in fact, stop locking anything.

	add rfork(RFNOWAIT) support.  

	add libsunrpc.

	back out funny graphics in 9term menu.

	import assembler routines for libmp and libsec
		on x86 from william josephson's tree

	add truerand which uses /dev/random to seed PRG

	add aescbc, astro, lex, and tcs

	import man9 from william josephson's version of the port

April 20, 2004

	make 9term handle \r kind of.

April 19, 2004

	lots of man page updates.

	fix bug in comm, reported by Taj Khattra.

	add libmach, db, acid

April 18, 2004

	add utf-8 input support from david tolpin.

	pick up rog's acme fixes w.r.t. cut and paste

	small fixes to ps, B, web

	more types in u.h

	man page nits

	make gzip, bzip2 work with gnu tar

	add fmt, tweak

	change misc/ding checkboxes to be smaller


April 17, 2004

	make 9term work a bit better w.r.t. terminal modes

April 14, 2004

	add look.  thanks to Taj Khattra.
	add plot, graph.  thanks to Taj Khattra.
	add gzip, bzip2.  thanks to Taj Khattra.

April 8, 2004

	speed up ls

	import htmlfmt from wkj

April 5, 2004

	Fixes to rio from Axel.

	Add atoll, etc.

April 2, 2004

	Add missing unsharps to dict.  Reported by Robby (plan9@blueyonder)

March 30, 2004

	Change label to use nawk on SunOS.

	Change libdraw to elide mouse motion events when they
		pile up.
	
March 29, 2004

	Add window resizing by dragging borders to rio.
	Code from Axel Belinfante.

	Added code to make 9term fade itself when it loses
	focus running under rio.

March 26, 2004

	Fix 9term chording paste bug reported by Sam.

	Fix libdraw resize bug reported by Axel Belinfante.

	Handle interrupts better in rc - don't kill background procs.
	Reported by Sam.

	9term OpenBSD support from Markus Friedl.

	More appeasement of Sun C compiler.

March 25, 2004

	Change putenv not to free the string after calling real putenv.
	Apparently BSDs copy the string but Linux and others use the
	one you pass in.

	Add Indent command to acme listing.  Reported by Rob Pike.

	Define clock to plumbclock in plumber/fsys.c to avoid name clash on SunOS.
	Reported by Axel Belinfante and Markus Friedl.

	Expanded NOTES to discuss CVS some more.

	Change one instance of ulong in rio to unsigned long.

	Tweak SunOS ps from Axel Belinfante.

	Change diff not to mention the dirty word "stdout" anymore.
	Reported by Taj Khattra et al.

	Change 9l to add -lpthread on OpenBSD.
	Reported by Markus Friedl.

	Change 9l to add -Rfoo for each -Lfoo on the command line
	on SunOS.  Avoids need to maintain LD_LIBRARY_PATH.
	Reported by Axel Belinfante.

	#define time to p9time in libc.h for systems where time_t != long (OpenBSD).
	Reported by Markus Friedl.

	Add SHAPE support and bitmapped grey background back to rio.
	Reported by Markus Friedl.

	Add various OpenBSD-specific files from Markus Friedl.

	Change rcmain to use "test" rather than "/bin/test" to accomodate
	systems where test is in /usr/bin.   Reported by Sam.

	Silence "unknown id '' in attach" message from acme.
	There are just more attaches than there were in Plan 9, and not
	all of them are for windows.

	Change 9term to handle "send" a little better.

	Add grep.  Reported by Taj Khattra.

	Split lib9.h into u.h and libc.h, so that programs can
	include u.h, then unix headers, then libc.h.  Then changed
	lib9 to do this.
	Fixes many warnings on SunOS reported by Axel Belinfante.

	Change 9term not to misfree when plumbing empty string.
	Fix reported by Taj Khattra.

	Fix threadexecl to process vararg list with va_list etc. rather 
	than using &f+1.  The &f+1 trick fails on SunOS.  Reported by
	Axel Belinfate.

	Change x11-init to handle SunOS 24-bit colormapped screen
	properly?  Fix reported by Axel Belinfante.  Let's just play along.

	Add awd.  Suggested by Sam.

	9term no longer aborts without plumber.

	Remove _p9translate from guts of various calls.
	Instead, callers who want #9 or #d paths explicitly call unsharp
	to translate them.

	Added ^F completion to 9term.

	Change win to use a real pty, so that things like rubout work.

	Change 9term, win to handle rubout even when output
		is streaming in.

	Start recording changes.

