2022 Aug 15: version 2.9

	Six months after adding full trigraph support, the feature is
	being disabled. (Not only are trigraphs one of the most widely
	ignored and disliked aspect of C parsing, they are now scheduled
	to be removed from the next version of the ANSI C standard.)
	
	Trigraph support is still available via a command-line option, but
	the functionality is off by default.
	
2022 Feb 18: version 2.8

	New feature: program now correctly handles trigraphs, the "%:"
	digraph, and backslash-splicing that occurs mid-symbol. (The
	program's lexical parsing should be at parity with the C
	preprocessor.) New functional tests added to cover these cases.

	In the process of adding the above, some minor infelicities in the
	code were cleaned up. Also the code was finally de-tabified (so
	this version is the one where diffs are useless).
	
2022 Feb 02: version 2.7

	New feature: program now accepts #elifdef/#elifndef, since these
	are scheduled to be added to the C standard.

	The old script to run the functional tests was deleted, and
	replaced with a much more thorough suite of tests. It should be
	much easier to add more tests in the future.

2015 Nov 05: version 2.6

	Modifed program to quietly accept CRLF as a line break character.
	In particular, this allows backslash-splicing to work even when
	running on Unix but reading a text file created on Windows.
	
2015 Oct 26: version 2.5

	Modified program to permit repeated symbols on the command-line,
	with a warning. In particular, this allows a symbol to be defined
	and then undefined, and vice versa. This better matches the
	behavior of the C preprocessor.

2015 Sep 15: version 2.4

	Minor bug fix involving unintialized values. Parsing of #if
	statements changed to allow an absence of whitespace between a
	preprocessor command and the first parameter, as in for example
	"#if(defined FOO)".

2013 Oct 18: version 2.3

	Minor bug fixes. Added code to detect #elif incorrectly paired
	with #ifdef. Improved functional tests.
	
2011 Jul 11: version 2.2

	First general public release.

	No new features from the previous version -- just a massive
	attempt to clean up the code. Added comments (for the first
	time!), and refactored various sections in a near-futile attempt
	to chip away at the messy central logic. Added a shell script to
	automate the functional tests that had been done manually before
	this point.

2008 Aug 10: version 2.1

	Unreleased version. Lots of general tweaking from the previous
	version, in an attempt to make the code more clear.

	New feature: a defined symbol can be given a specific numeric
	value.

1999 Dec 05: version 2.0

	First version shown to anybody else. Rewritten in C, and ported to
	Unix. Added a man page.

	New feature: accept multiple source files followed by a
	destination directory, in the manner of cp, mv, et al.

1995 Nov 17: version 1.0

	First working version. Written in C++, for MS-DOS.
