2.1:
*	bugfix: patterns with %1$ and matching an empty string
*	reworked action matching code, speedup w/ many priorities

2.0:
*	MASSIVE increase of speed of substs/actions/highlights
*	[COMPAT BREAK] substs/actions apply variables immediately
*	new optional dep: hyperscan/vectorscan
*	new optional dep: valgrind
*	(inline) #abs
*	(inline) #round
*	(command) #reverselist
*	(command) #findevents
*	(command) #findvariables
*	(hook) logclose
*	log files are locked while in use
*	bugfix: promptactions were not saved
*	#tickon can take an offset
*	no limit on route locations
*	control characters are caught and shown as Unicode symbols

1.0.26:
*	fix tests on ancient cmake
*	support key codes on Zutty
*	#sqrt
*	fix #condump
*	bugfixes for math issues

1.0.25:
*	CMake based build system
*	#zap <session>
*	#trim
*	colors behave as attributes not text in #substr #prepad #postpad
*	#stty
*	avoid wasting a line if there's no partial-line prompt
*	lots of bugfixes
*	lots of code reorg to add new bugs

1.0.24:
*	256-color support (instead of shoehorning to 16)
*	auto-set #char only on first read
*	#ifaliasexists
*	fractional math
*	// for fractional division
*	% for modulo
*	sub-second time handling
*	make $_time work as documented
*	$TIME, $STARTTIME, $TIMETOTICK, $RANDOM, $LINENUM, $USERIFLE
*	drop #profile
*	free everything if running on valgrind
*	use a faster data structure, for #antisub only for now
*	trigonometry: #sin #cos #angle
*	bugfix: an expression with >100 tokens
*	#bold
*	bugfix: key codes were misinterpreted inside "screen"
*	#unvar on multiple variables


1.0.23:
*	display error message for why a connection was dropped
*	support bright background colors user-side
*	protect against unpaired/underflowing {} in $1 type variables
*	allow anchoring the end of an action/substitute match (^foo$)
*	documentation improvements
*	internal: don't replace malloc anymore (glib is actually slower now)
*	internal: drop a lot of obsolete autoconfage

1.0.22:
*	bugfix: user-after-free after #zap inside a hook
*	bugfix: positional %vars were broken

1.0.21:
*	logging to .zstd
*	#hook tick, pretick
*	#unvar {var1 var2 var3}
*	#firstlower
*	more keys recognized by #bind (esp. Alt-key)
*	skip no-change statusbar updates
*	drop #news

1.0.20:
*	speed up some string operations
*	fix accessing files via ~user
*	recognize MidArrow on some terminals
*	fix cross-building
*	move the homepage from SourceForge to GitHub

1.0.19:
*	fix way too bright handling of 256-color codes
*	fix a crash on interrupted-by-signal writes
*	don't bother advertising #news
*	fix building from git on MacOS X

1.0.18:
*	lots of internal cleanups
*	idle/serveridle in #info
*	assorted minor fixes
*	password star-out doesn't stay for multiple lines
*	log-handling tools have been split out

1.0.17:
*	pipetty, a new tool to fool isatty()
*	256/24-bit color support, full in ansi2html, shoehorned to 16/8 colors
	in KBtin
*	ansi2html: massively improved support for other attributes
*	ansi2html -n (headerless), -w (on white)
*	ansi2html: unhandled control characters get Unicode placeholders
*	support for overstrike as ~8::~
*	#hook title
*	#sendchar
*	$SERVERIDLE pseudovar
*	portability fixes on *BSD and Hurd

1.0.16:
*	#initvar
*	bugfix: xterm titles were ignored
*	processing speed in #info
*	bugfix: proper F1-F4 and KpadMinus on xterm/gnome-terminal/konsole
*	TCP keepalives every 30 seconds rather than 5 minutes
*	bugfix: ansi2html rendered white as black
*	dropped support for non-GNU make

1.0.15:
*	#loginputformat
*	TCP keepalives
*	bugfix: crashes when resizing the terminal window

1.0.14:
*	logging to .xz
*	proper handling of long lines when screen width changes
*	don't include soft line wrapping in #condump
*	omit the greeting message (credits, etc) in #condump

1.0.13:
*	handle broken terminals which report screen size of 0x0 a bit better
*	increase several fixed limits
*	bugfix: crash if a session is closed from an event or tick
*	drop support for single byte only compilation
*	yTin's pseudovars: _random, _time, _clock, _msec, HOME
*	#ctoi for Chinese numbers, taken from yTin
*	start month and yday from 1, not 0 (#localtime, #gmtime)
*	fix compilation without zlib.  Fail such compilation with a help
	message if --disable-mccp is not given.
*	auto-remake function prototypes
*	bugfix: UTF-8 chars split by a packet boundary were mangled in the
	log.
*	SSL support (#sslsession).

1.0.12:
*	#localtime, #gmtime
*	bugfix: segfault on MCCP end (not exploitable)
*	bugfix: active session changes inside of compound commands didn't
	propagate properly
*	another stab at gnome-terminal and blue lines...
*	ansi2html: skip a character on unknown codes
*	necrocomputing -- support for BSD's iconv brain damage.  Hey, guys,
        it's 2008, even _SCO_ does basic POSIX.
*	new BSD has grantpt() but no getpt() or /dev/ptmx, handle this

1.0.11:
*	bugfix: don't double the asterisks when typing in a password
*	turn PARTIAL_LINE_MARKER into a variable (not settable yet)
*	bugfix: -r starting with a non-letter
*	work around gnome-terminal's blue lines

1.0.10:
*	more transliterations, mostly for line-drawing characters
*	support for Form Feed and ANSI CLS
*	support for CJK double-width chars (TTY driver)
*	TTY driver: combining chars on output, still buggy on input
*	CJK and combining chars in #substr, #postpad and #prepad
*	bugfix: #prepad took the end not start of the string, as opposed to
	what the documentation said
*	use glib's g_slice instead of malloc if it's installed, it's
	insanely faster
*	allow "weeks" in #time
*	re-written from scratch ansi2html, using CSS instead of tables
*	bugfix: input and #logcomment were mangled in ttyrec logs
*	new #mess type: logging

1.0.9:
*	#ord as inline
*	MCCP compression
*	workaround for a gnome-terminal bug
*	'make bin' target

1.0.8:
*	in the dumb terminal mode, "assphrase:" will trigger password
	protection as well
*	bare \r will turn the line into a draft, and thus cause it to be
        cleared when some new text appears
*	bugfix: pathologic action priorities were ordered wrong
*	#doactions, #dopromptactions
*	#chr, #ord, #hexord, bugfixes in UTF-8 parsing
*	bugfix: #textin with an empty line

1.0.7:
*	end-of-file ends KBtin when in non-fullscreen UI and no sessions are
	left
*	explicit -q or #verbose 0 hushes #read
*	UTF-8 support; likely to be buggy and/or incomplete (massive change)
*	IPv6 support
*	UI drivers support (specify -p or -i on command line)
*	some basic regression tests
*	#read ignores #! on the first line
*	history is no longer local to a session

1.0.6a:
*	bugfix: variables were not resolved in #log

1.0.6:
*	made commands case-insensitive, so #ALIAS works
*	bugfix: the priority of "6a" is supposed to come before "60"
*	made KBtin a more responsive to keyboard input when under a heavy load
*	#gagthis
*	made "#system something &" actually work
*	intelligent use of TCP_NODELAY
*	add a hook for closing KBtin for sessions started with -r/-s which
	didn't make any use of #hook
*	bugfix: #listlength
*	logging by >, >> and |
*	#condump won't insert unneeded background colour codes anymore
*	logging to .bz2
*	#logtype
*	bugfix: highlights prevented prompts from being recognized as such
*	moved to automake1.9

1.0.5:
*	added a symlink kbtin -> KBtin to avoid mixed-case executable
	name while retaining old name as well
*	\e[39m, \e[49m
*	manual.html (just a converted version of the online help)
*	commands that don't work on an architecture are no longer accessible
*	outgoing 0xff bytes are sent as IAC IAC telnet sequences
*	the terminal string will cycle between "KBtin", "hardcopy",
	"unknown" and "KBtin-1.0.4" (conforming to RFC 1091)
*	if you undefine UI_FULLSCREEN in tintin.h, KBtin will be pipe-
	friendly; for use as a scripting language or for regression tests
*	telnet EOR sequences are allowed and treated as GAs
*	bugfix: unterminated TELNET IAC SB subnegotiations no longer cause
	a buffer overflow
*	bugfix: sometimes TELNET sequences were not carried properly over
	a packet boundary
*	cleaned up command line parsing, added -q, -c, -s and -r
*	a (too short) manpage added
*	axed the old BSD license with advertising clause from acinclude.m4,
	the only snippet we use is in public domain
*	window title in xterms
*	#undelay as an alias for #remove=#unevent
*	bugfix: \e[K and \e[D used to swallow some text
*	core dumps will now be properly generated when appropriate
*	#pretick
*	some tintin++ 1.86 compatibility:
	*	#ifexists
	*	#ifstrequal (=#strcmp)
	*	#show_pretick (=#pretick)
*	bugfix: no more corrupted logs when KBtin gets killed by a SIGINT (^C)
	or a SIGHUP (disconnect)
*	\e[J clears the current line (\e[1J and \e[2J still don't work ok)
*	bugfix: #grep's regexp can now contain variables
*	terminal size data is now passed to the pseudo-terminals
*	bugfix: hangup if >29 sessions (oh well... :p)
*	bugfix: #act {blah} {#unact *} no longer causes an infinite loop
*	inlines: #grep, #match, #strcmp
*	pty handling code changed
*	consider \r to be an end-of-line char in #read, for M$-DOS files
*	workaround for dorky bg color handling in PuTTY and screen.  Will
        slow down innocent xterm users, too :(
*	information about logging in #info
*	the echo for player's input has its own color (#define ECHO_COLOR)
*	#collate
*	#expand
*	#hook/#unhook
*	all (?) flags are saved by #write and #writesession
*	You can use #delay with a delay of 0.
*	log only commands explicitly typed by the player
*	#logcomment
*	Use exec when invoking something using /bin/sh

1.0.4:
*	changes needed to compile on Tru64:
	*	no "extern inline"
	*	\e -> \033
	*	autoconf checks to test whether the code for inlined
		functions is actually generated
*	changes needes to compile on Cygwin:
	*	checking for stropts.h
	Note: As opposed to UNIX systems, which all enjoy the whole
	functionality, KBtin is crippled on Win32 systems.  Basically,
	while the core functionality works, #run, #system, #shell,
	#keypad, #suspend, gzip logging and COMPRESSED_HELP are broken.
	Hell, it won't even compile from the sources without your
	manipulation right now (no autoconf check to disable
	COMPRESSED_HELP).
*	#grep
*	#retain

1.0.3:
*	bugfix: color codes in programs spawned by #systems work correctly
	once again
*	removed Esc from editing keys
*	made it possible to #bind sequences containing Alt
*	added Alt-{<,>,B,F,L,U,C,Backspace,T} to the editing keys
*	#gauge renamed to #timecommand, and documented
*	bugfix: don't use pclose(), as we're not using real popen()
*	bugfix: #reverse

1.0.2:
*	bugfix: #send with no session
*	#gauge
*	#debuglog (not officially introduced as it's not finished yet)
*	bugfix: some commands ignored variables
*	proper handling of IAC IAC sequences
*	bugfix: '#<sesname> {command}' sent verbatim {}s.
*	bugfix: #message types were not propagated correctly to new
	sessions, that could crash KBtin
*	Nazi protection against too deep recursion.
*	bugfix: #path did something completely different than the docs said
*	added italic and underline as valid "colors"
*	when a session is started, it will inherit all settings from the
	currently active session instead of the null session

1.0.1:
*	a slight change of the logic of highlights being suppressed
	before/after alphanumeric characters
*	don't disagree when a server tells us they want to turn on echo,
	some MUDs take offense if we do
*	IRIX64 has no snprintf, cope with that

1.0.0:
*	first public release
*	the message prompting to read #news is disabled for this version

0.4.5:
*	man pages for ansi2txt and ansi2html
*	added ^P, ^N and ^U to the editing keys
*	$IDLETIME
*	#change
*	added tab as a valid separator between command and its arguments
*	changed all(?) error messages to use tintin_eprintf() instead
	of tintin_printf().  If "#message error" is on, eprintf will
	pierce even the !#verbose gag.
*	added ^A, ^E, ^F, ^B, ^T, ^K, ^W and ^Y, changed behavior of ^D
	on non-empty lines
*	bugfix: undefined non-alphabetic variables no longer cause
	expressions to fail
*	#send added in place of #verbatim <text>, so no #verbatim is not
	overloaded any longer
*	bugfix: resizing the window or using #status no longer screws up
	the display on SunOS
*	proper signal handling for systems where signals follow System V
	semantics
*	added support for BSD-style pseudoterminals, needed for run.c to
	compile on BSD systems

0.4.4:
*	#dogoto
*	bugfix: #ticksize 0, #ticksize 123blah
*	bugfix: #gag with invalid syntax was handled incorrectly
*	removed #strip, it was completely useless
*	bugfix: {* /}, {+ -}, {<= < > >=} evaluate correctly now
*	renamed log2{html,txt} to ansi2{html,txt} and actually bundled
	them with KBtin

0.4.3:
*	action/promptaction priorities are sorted in a semi-lexicographic
	order, so numbers sort properly
*	new #message type: error (to show error messages even if they would
	be otherwise hidden)
*	#verbose
*	the following flags are now local to sessions: verbose, verbatim,
	blank, echo, speedwalk, togglesub, presub and the #message toggles
*	shell-style "!!" history commands will now obey #verbatim

0.4.2:
*	bugfix: #writeses doesn't forget about pathdirs anymore
*	bugfix: #killall doesn't forget about binds (+plus a memory leak)
*	hash tables instead of lists for: variables, aliases, binds and
	pathdirs
*	#unpathdir
*	bugfix: lines of background color no longer appear on the screen
*	the list of commands is no longer hardcoded as a looong list of
	is_abrev()s; we use a generated hash table of code pointers instead
*	KBtin_help is now distributed in uncompressed form
*	protection against division by zero in #math and friends

0.4.1:
*	bugfix: #cr doesn't send two lines instead of one any longer
*	#atoi
*	#verbatim <line>
*	#strcmp

0.4.0:
*	TELNET protocol support.  KBtin understands the following options:
	-	ECHO              (we attempt to turn off their echo)
	-	SUPPRESS GO AHEAD
	-	TERMINAL-TYPE     (type sent is "KBtin")
	-	NAWS              (window size updated every SIGWINCH)
*	catching SIGCONT to redraw screen after being stopped
*	--More-- kludge.  We now hide the input line by default once the
	remote end tells us to turn echo off, to protect passwords on
	non-English MUDs.
*	"make install" will install NEWS and KBtin_help.gz
*	TERM environment option in #run passed as "KBtin"

0.3.9:
*	multiple config files given from command-line when invoking KBtin
*	#sub {a} {b} works as old #sub {%1a%2} {%1b%2}
*	substitutes can trigger multiple times in a single line
	(#sub {a} {b} on "hahahaha" -> "hbhbhbhb")
*	bugfix: #action no longer segfaults
*	bugfix: changing the routes while in #goto won't crash KBtin anymore
        (we use the old data)
*	we send \r\n instead of \n, for compatibility with the telnet
	protocol (only for real sockets, of course)
*	the NEWS file is statted to tell if KBtin was updated since the
	last time you read it.  BUG: the check will fail if several users
	share the same copy of KBtin

0.3.8:
*	changed tintin_puts2 to tintin_printf through the whole source
*	more verbose error messages in most cases
*	bugfix: #verbatim can be used in the middle of an alias
*	incomplete lines are no longer considered prompts if the background
	color is non-black at the end
*	promptactions fire on "blank" with nothing but spaces and colorcodes
	only if they're complete -- to prevent expensive processing of
	highlights and substituties
*	optimized set_variable
*	buffer-overflow checks in most functions
*	aborting commands in case of a buffer overflow (incomplete!)
*	#match doesn't substitute old values of variables in its command
	anymore (use $$1 to get them)
*	bugfix: #delay can be called from events without events disappearing
*	bugfix: write errors while logging no longer crash KBtin
*	#condump can dump log to a .gz file
*	changed configure.in to work with newer versions of autoconf
*	ESC[m properly recognized as ESC[0m
*	#shell
*	bugfix: \line before creating a session was improperly echoed
*	bugfix: tab (ASCII 09) characters no longer screw up linewrap
*	help.c now uses mypopen instead of popen to hide "Broken pipe"
	messages
*	workaround for systems with no *n*printf
*	ignoring errors on ioctl(TIOCSWINSZ)

0.3.7:
*	& added to the list of possible prompt chars
*	#sortlist
*	bugfix: no more segfaults in #write
*	#match
*	messages from successful calls of #system can be disabled by #mess
	#system
*	lines are joined together in #read only in case of a tintin-command
*	#decolorize

0.3.6:
*	parse.c didn't check for #unpromptaction! Aargh!
*	#char now accepts also ASCII characters >127
*	all bindable keys scroll screen to the bottom of output
*	#gag and #ungag no longer touch regular substitutes
*	promptactions fire on complete lines as well
*	a quirk in VT100 standard: \n as 81th character in line should be
	ignored
*	bugfix: ${varname} with positional variables in varname
*	#dosubstitutes
*	#dohighlights
*	incomplete lines ending with one of: ?:>.*$#] are considered prompts
	and left there if the user types something
*	local echo shows color codes intact instead of changing color text
*	#run now sets the pseudo-terminal modes correctly. This means no
	double-echoing unless a stupid program like telnet changes the
	modes.
*	bugfix: #zap doesn't (hopefully) leave zombie processes anymore
*	tilde conversion in filenames: "~/" = home dir, "~user/" = user's
	home dir
*	#if substituted variables in its command part too early

0.3.5:
*	most commands substitute variables in their args
*	#help checks also the dir where KBtin binary resides
*	#removeevent can be used to remove #delays
*	#event and #unevent as other names for #delay and #remove
*	bugfix: #foreach no longer prepends space to implicit arguments

0.3.4:
*	KBtin now compiles with -Wall with almost no warnings (save for those
        related to ioctl and pseudo-terminals)
*	delayed variable substitution - FINALLY!!!
*	#foreach can now use positional parameters instead of simple append
*	spaces between the command and first argument are not ignored if it's
        a MUD command
*	statistics from multiple #reads are combined into one
*	split-line in #read
*	#map works again only on #pathdirs
*	bugfix: cannot delete the same action twice
*	bugfix: deleting an alias being executed

0.3.3:
*	$COLS and $LINES pseudovariables will give you the terminal size
*	>place as a shortcut for $loc>place
*	spaces before the command are no longer ignored
*	#strlen command and inline
*	#map now doesn't ignore commands which are not among #pathdirs
*	#log <name> now works properly if already logging
*	variable names can now contain digits and underscores
*	events no longer ignore '#message events' turned off (duh!)
*	#explode and #implode commands
*	#substr instead of #index
*	$PATH pseudovariable
*	help file added

0.3.2:
*	#index uses now 1-based indices (for consistency with other commands)
*	#select and old #foreach removed - variable names shouldn't be used
        for storing values!
*	#foreach command: iterating through a list
*	bugfix: #suspend now deals properly with terminal settings
*	bugfix: #system no longer screws up display if the command writes
        anything to the screen
*	#boss - removed, the input line will give you away anyway
*	#write and #writesession now write #gag instead of #substitute {-gag-}
*	bugfix: ~~ is no longer considered a color code

0.3.1:
*	~fg:bg:blink~ color codes
*	ESC[nC
*	#promptaction command added
*	splitting long lines coming from MUD to prevent buffer overflows

0.3.0:
*	background and blink color codes (0..255)
*	rewriting last line of output to make actions guaranteed
*	more flexible time format
*	portable implementation of run.c

0.2.9:
*	#margin command added
*	actions, delays and binds ignore #verbatim
*	bugfix: ^D now works ok in #verbatim mode
*	#bind command added
*	bugfix: #blank should now work properly, fixing this bug improved
        KBtin's speed about twice BTW :-)
*	incoming ~n~ codes are changed to `n~ instead of working as a
        colorcode
*	unused listnode->pr fields now use 0 instead of allocating a string
	just to put "0" there (that was a waste of memory)

0.2.8a:
*	gz-logging

0.2.8:
*	bugfix: [Esc] works again
*	#write and #writesession now support routes
*	#writesession now writes also changed aliases/actions/whatsoever
*	multi-color highlights

0.2.7:
*	KBtin no longer uses the ncurses library! (major rewrite of user.c)
	
0.2.6:
*	fixed bug in simplify_list when an item is a single character
	Ex.: #splitlist head tail {a b c d}
*	fixed bug if an argument of an alias has embedded braces
	Ex.: #alias aa {#showme $1}
	     aa {{a b} c d}
*	bugfix: #verbatim no longer crashes KBtin
*	no longer removing braces from the tail of the list in #splitlist
	Ex.: iterating through list 'a {b c} d e {f g}'
*	#deleteitems command added
