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

	make top windows active more often in rio

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.

