

RECENT CHANGES can be tracked at the BOTTOM END.  The rest doesn't qualify
for an exciting story, just skip it.


1.1.1 from earlier releases (incomplete):
	- this file
	- debugging & other conditional compilation parameters have been moved
		to the config file. doc/debug.doc has been rewritten
	- fixed the array size in sss.cc to fit into the 64K DGROUP in DOS
	- fixed shriek() not to be volatile and to always take signed ints
	- allowed (hack) 16-bit ints in load_config and DOS HUGE memory model
	- "make tgz" (in sss/src) makes a tgz (in sss/src/../..) with the
		name sssX-Y-Z.tgz; the version numbers as read from common.h
		A copy is made on the diskette (if one is inserted at the moment).
	- "make date" outputs the last modification time

1.1.2 from 1.1.1	10.5.97
	- "make dos" creates a zipfile, not individual files
	- "make dos1250", "make dos1252" can produce two other encodings
	- in unit::sanity, fixed the range checks for pointer values
	- migrated the rest of non-ASCII chars out of the sources
	- migrated another bunch of options to the .ini file
	- allowed escape sequences and quoted strings in the .ini file
	- multiple tiny code amendments
	- no compile-time checking for the memory model
	- run-time check whether we've been compiled fully 32-bit (again)
	- changed warning flags to -Wall -Wno-parentheses -Wno-unused
	- new option type: DEBUG_AREA (enum, just for focus_dbg)
	- interf.h uglified
	- side syllables hacked out. See unit:syll_break for more info.
		The feature can be disabled in the .ini file (syll_break())
		cfg/nonsyl.dic has been consequently cleaned up.
	- the sonority rule no longer considers nasals as more sonorous than
		the ordinary consonants. Hope it doesn't hurt.
	- parser now can accept keyboard input & other minor improvements there
	- new files in the doc directory: Intro, Files

1.1.3 from 1.1.2	14.5.97
	- enums UNIT, OPT_TYPE suffer formally renamed elements because of Borland
	- BOOL, INT, STR (formerly STRING),... in config.cc are always #defined now
	- a new diphone inventory description (.dph) - the traditional one.
		Very crude, lots of the diphones discarded (incl. W[{>,` etc.)
		This inventory doesn't cover some allophones at all, see default.rul
	- in unit::set_father(), f,i,t will be inherited (untested). This should 
		allow phone-level f,i,t adjustments propagated to the diphones.
	- unit::diph() optionally allows repeated diphones (have a look there).
	- we now allow "triphones" (like "a'a", a.k.a. "a|a" in traditnl.dph)
	- the default rules contain one killer rule (until traditnl.dph is fixed)

1.1.4 from 1.1.3	19.5.97
	- optional hash table profiling; configurable hash table full percentage
	- removed a word-length quadratic complexity aspect of subst() by not 
		checking too long words (longer than hash::longest). Typically,
		this "feature" will cause an overall slowdown. :-)
	- fixed unit::subst to loop until there's nothing to substitute
	- traditnl.dph is less crude now, it only doesn't solve the voiced 
		affricates now. We still never use many important diphones.
	- some big fixed-length auto arrays have been made static & malloced
	- introduced cfg.safe_grow, but still not configurable

1.1.5 from 1.1.4	22.5.97
	- '\0' shall be replaced by '_' in parser::getch; '\0' never gets output.
	- unit::fout is much more configurable now, see config.cc
	- tabs regularized to eight chars

1.1.6 from 1.1.5	27.5.97
	- config.cc #inclusion scheme has been substantially reworked
	- aggregate (array...) config options are now possible, see config.cc
	- unit::fout is even more configurable now. And slower as well.
	- ANSI escape sequences mostly made configurable
	- can remove elements from the hash tables now
	- invalid options are checked against
	- fixed pointer sanity checks (when trusted_ptr==off)
	- added doc/output.doc

1.1.7 from 1.1.6	28.5.97
	- fixed a stupid "last byte swallowing" bug
	- added diphtong rules, made traditnl.dph handle diphtongs better
	- too high level symbols, which could make the parser prematurely
		terminate a substitution, are checked against (parser::done)
	- gather now gathers everything, thus preserving syllables etc.
		during substitutions. This makes work multiple multilevel
		substitutions, such as "ououo" -> "ou|ou|o".
	- prep is temporarily broken

1.1.8 from 1.1.7	29.5.97
	- fixed prep &c (bug having to do with M_EXACT and unit::gather())
	- if a preposition occurs at the end of a colon, let it be fatal
	- added the FILE cfg option type
	- deuglified load_config()


1.2.-1 from 1.1.8	30.5.97
	- converted all printf's to redirectable calls. Use "stddbg_file",
		"stdshriek_file", "stdwarn_file" in sss.ini to redirect them.
		An exception is user_pause(), which should never be redirected
	- renamed sss to ss, 'cause 'tis shorta.
	- colorize() now doesn't check against redirected input
	- rewrote the stuff about ss_init(), multiple .ini files
	- at the very beginning, the debug output may go temporarily
		to the screen. It will be redirected properly after
		the .ini file which uses it is redirected.
	- we now have cfg/ssfixed.ini and ss.ini instead of sss.ini.
		Any values in ss.ini override those in ssfixed.ini. The idea 
		is not to bury the oft-changing params in the permanent ones.
	- the "markup_language" configuration parameter (MUST be located
		in ssfixed.ini!, possible values: none, ansi, rtf) allows
		run-time switching between ANSI output and the Rich Text Format
		output. Either ssansi.ini or ssrtf.ini is processed after
		ssfixed.ini
	- ss_reinit() can be used to re-read the config files. Not fool-proof.
	- ss_init() shall be used instead of load_config()

1.2.0 from 1.2.-1	1.6.97
	- cfg/ssdeflt.ini (used by ss_reinit()) is now automagically generated
		from src/config.cc (on "make")
	- Makefile deuglified a little bit
	- fixed hash::hash (empty lines had been creating phantom items)
	- doc/output.doc includes new topics (e.g. debugging info redirection)
	- fixed safe_grow and max_line_len to be configurable
	- got finally rid of ANSI escape sequences in config.cc
	- made '~' a valid word separator (e.g. in a dictionary)

1.2.1 from 1.2.0	13.6.97
	- fixed some of the silly Borland warnings
	- removed -Wno-parentheses (and fixed some lines which got it)
	- added nnet.cc (neural networks' input - see doc/neuralnet.doc)
	- consistently changed "auxiliary syllable" to "side syllable"
	- changed warning flags to -Wall with no exceptions
	- faked the use of unused function arguments, see unused() in common.h
	- added the "text" abstraction (src/text.*) to handle #include in rules
	- maybe fixed a DOS CR/LF freadin() bug
	- gather() called after the diphones get created now shrieks gracefully

1.2.2 from 1.2.1	 2.7.97
	- no code change, makefile adjusted for the files that were new in 1.2.1

1.2.3 from 1.2.2	 7.7.97
	- minor code changes in text.*, chasing a DOS-only Heisenbug (lost)

1.2.4 from 1.2.3	 14.9.97
	- fixed this==NULL sanity check in unit::sanity()
	- made parser skip any garbage (whitespace?) until the first phone
	- minor amendments to text.cc
	- made hash.cc a little bit more commentproof
	- when DEBUG is defined, free() is #defined to paranoid_free() (see)
	- fixed tmps declaration in rules::str2rule() (the DOS-only bug?)
	- improved cfg/syll.dic (laryngeal stop before word-initial vocals)
	- fixed long vowels in the nnet code (unit::nnet_type())
	- the glottal stop is now a valid voiceless stop for the nnet code

1.2.5 from 1.2.4	29.9.97
	- added doc/COPYING (GNU Public License - copyleft) to fix the legalese
	- the paranoid_free() hack from 1.2.4 has been removed. Because,
	- dmalloc (debugging mem alloc()) library is used #ifdef WANT_DMALLOC
	- fixed a fence-post error (rules::rules::ruleline one byte too short)
	- rules::resolve_vars now uses a pseudostatic buffer (was call-lived)
	- the FOREVER macro should be used to mark permanent memory allocations
	- some minor memory leaks have been found and fixed
	- rewrote hash::hash to make it even more commentproof, but messier
	- "make clean" tries to clean up the Makefile and report some settings
	- cleaned up parser::parser, parser.cc now depends on interf.cc::freadin()

1.2.6 from 1.2.5	29.10.97
	- partly allowed deletion of the last phone in a syllable
	- const char * everywhere to be -Wwrite-strings clean
	- hash collisions are now handled with a balanced AVL tree
	- furthermore, on hash table over/underflow it is completely rehashed
	- made the only nnet.rules substitution not destroy syllables
	- fixed a trailing whitespace bug in hash:hash
	- it is possible to remove the diphones with "DIPHONES ~" rule
	- option to dump the diphones at every DIPHONES rule (immed_diphones)
	- added a punctuation hack into the nnet rules and similar minor fixes


1.3.-2 from 1.2.6	 3.11.97
	- aux/addcflag to easily add compiler flags; used by "make gdb/pg"
	- "make clean" tries harder to clean up the Makefile
	- simple suprasegmentalia (doc/rules.doc, doc/prosody.doc)
	- hash::add_int/translate_int now understands negative quantities
	- version optionally printed on startup
	- hash table can work with other keys/data than char*/char* now
	- fixed substitutions ('$' didn't work if scope->cont!=NO_CONT)
	- new rule type RAISE - move tokens to other levels
	- fixed some harmless memory leaks with ss_done()
	- added rules to mark wh-quesions as such
	- if there is nothing for a postp/preposition to join to, it's ignored

1.3.-1 from 1.3.-2	17.11.97
	- inline is never used under DOS, Borland can't handle it properly
	- snprintf is no longer used, it is unportable
	- allowed no value in .ini files, default is "".
	- long command line options etc. (see doc/options.doc)
	- fixed: if no phones given to the parser, it would crash
	- ss.cc is now compiled separately, thus speeding up the compilation
	- new rule type SMOOTH - smoothen suprasegmentalia (doc/rules.doc)
	- unit::project() - move suprasegmental adjustments to a certain level
	- some short command options, still undocumented
	- f,i,t is now kept zero-relative, not neutral-value-relative
	- unit::effective is now a uniform sum of the adjustments


1.4.-2 from 1.3.-1	 8.12.97
	- "gcc -pipe" might compile a bit faster
	- src/x moved to aux/xd
	- default.rul renamed to czech.rul
	- rule is now a fully-fledged class with a VMT, doc/classes.doc
	- stopped trying to avoid multiple-loaded dictionaries
	- moved the "scope" logic from unit::...() to rules::apply()
	- rules get precompiled much tighter
	- made hash dmallocable
	- fixed profiling (LDOPTS in the Makefile)
	- REGRESS and PROGRESS now can insert new units (doc/rules.doc)
	- this allows for throwing out many subst rules
	- simple help for single-letter (short) options
	- debugging tags - rules now have source file/line information
	- copy constructor for hash tables (could be made faster)
	- class block - a subblock of rules (doc/rules.doc)
	- fixed the "Undefined identifier (null)" error message in resolve_vars
	- conditional rules (rule type IF)
	- first try at merging in the win32 and .wav generator code
	- dos package contains files from var subdir
	- shriek() is now more consistent (integers should have their %d)
	- rule can begin with 0 or more words of comment (hm, inconsistent)
	- str2rule renamed to next_rule, cleaned up, added functionality

1.4.-1 from 1.4.-2	11.12.97
	- doc for r_if (doc/rules.doc)
	- renamed some sources (r*)
	- calling syn32.cc to write the samples somewhere, rewrote ss.cc
	- redesigned czech.rul, though the old style is still supported
	- minor memory leaks fixed
	- updated copyright notices in syn32.*, common.h, and COPYING
	- adjusted class dsynth (former DifSynt)
	- threw out dos support files again
	- some options for controlling syn32.cc output

1.4.0 from 1.4.-1	15.12.97
	- adjusted class synteza in syn32.cc
	- option wav_header to turn off the header	
	- wiped out lot of now redundant scoping code out of elements.cc
	- added hash::write(), hash::update(), doc/hash.doc
	- new option -n - neuronet rules
	- synth32.cc now tests whether it was able to open its files
	- doc/sound.doc
	- if paranoid, rules cannot begin with the old-style comment

1.4.1 from 1.4.0	18.12.97
	- renamed syn32.cc to synth.cc
	- changed div.quot to / throughout synth.cc
	- handling 0 models for a diphone differently
	- ammended the (unused) hash<non-char> code
	- fixed the directories (cfg!=src/cfg)

1.4.2 from 1.4.1	19.12.97
	- the default config now really speaks to /dev/dsp16
	- updated doc/sound.doc 
	- fork() suggested in ss.cc as an example

1.4.3 from 1.4.2	22.12.97
	- rules can examine string configuration parameters (/dev/rules.doc)
	- twice using strcasecmp() (if not portable, replace with stricmp())
	- -d gives diphone names, not numbers
	- -s makes ss speak (not default today)
	- synteza::wave_buffer added (performance reasons)
	- found and inserted the improved cfg/ptacek97.dph at last

1.4.4 from 1.4.3	29.12.97
	- fixed wavout maybe NULL bug in synteza::synteza()
	- invent_dir now points to /usr/lib/ss
	- improved prosody and other rules
	- r_if renamed to r_inside, new rule r_if (constant comparison only),
		it is not very useful at the moment, as we don't use "external"
		parameters introduced in 1.4.3 as yet
	- text to be processed can be given on command-line
	- added some preliminary german.rul
	- fixed splitting of a 'q'
	- moved some more r_raise code from run-time to its constructor
	- r_inside now accepts more sophisticated lists and handles them faster
		(booltab instead of a simple strchr)
	- it is possible to force hash tables to be power-of-two-sized,
		thus avoiding division in hash::fn() on machines with no hw div
	- fork() is used to speak the samples (if UNIX && needed && enabled)

1.4.5 from 1.4.4	2.1.98
	- the text to be parsed can be given directly on the command line
	- option colloquial (-c) turns on the specific features of casual speech
	- option irony (-i) turns on ironical prosody (tries to)
	- non-terminated utterances (non-final colons) have been hacked a bit
	- renamed struct diphone member "i" to "e" (possible naming conflicts
		with local variables)
	- partly united struct diphones with struct difon
	- changed use_syn for inventar[2] - again a bug?
	- stupid heuristic classification "se" as either prep or postp 

1.4.6 from 1.4.5	4.1.98
	- t/i adjustments ("korekce") can be turned on with a cfg par
	- support for sampling frequencies other than 8kHz (cfg.sampling_rate)
	- the sampling buffer now has the optimal size (hw dependent)
	- sampling is done through the open() breed of functions, not the
		fopen() one. Rationale: we need ioctl's, but not clib buffering.
	- changed some #includes and Makefile dependencies
	
1.4.7 from 1.4.6	18.1.98
	- multiple languages partially supported
	- reshaped hash_table as a template

1.4.8 from 1.4.7	26.1.98
	- reduced number of diagnostic levels to 5 (0-4)
	- cfg files moved to /usr/lib/ss
	- .ini file for each diphone inventory added
	- the ANYWAY option of hash tables (see doc/hash.doc)
	- new target - make install
	- make dist had to be rewritten

1.4.9 from 1.4.8	27.1.98
	- merged an improved synth.* by Petr

1.4.10 from 1.4.9	 2.2.98
	- makeinst - a bit more working cfg installer
	- the bulk made a shared library libss.a
	- make static  links statically (use for debugging)
	- all directories are relative to cfg.base_dir
	- stricmp, filenames made more consistent and portable

1.4.11 from 1.4.10	 4.2.98
	- #!/bin/bash is used to mark scripts as such
	- detection of open syllables (marked with '~')
	- minor dos fixes (fork(), open(,,)

1.4.12 from 1.4.11	16.2.98
	- dos fix - IS_NOT_SLASH in compose_pathname()
	- significant prosody amendments
	- backslash can escape exclamation marks within some rules
	- nondeterministic [ ] rules (see "choices" in rules.doc) 

1.4.13 from 1.4.12	23.2.98
	- minor fixes (O_BINARY, f0 for int3, DOS documentation)
	- choice probabilities and repeat counts (see rules.doc)
	- winss.ini replaces ss.ini during "make dos"
	- "make cfgsync" synces cfg for "make dos" and "make dist"

1.4.14 from 1.4.13	 6.3.98
	- Watcom changes merged
	- null number pronunciation support (parser only)
	- fixed r_syll to avoid "Nothing to split" with unknown symbols
	- allowed multiple non-option parameters if not paranoid
	- partly fixed voiced africates
	- show_raw_diphs option added
	- various diphone fixes
	- .dph files moved somewhere under the inv directory


1.5.-1 from 1.4.14	16.3.98
	- Watcom/QNX and generic portability fixes
	- regex rule support using rx library (turn on with WANT_REGEX
		in src/common.h; see also rules.doc and "man grep")
	- some Czech numerals (see lng/czech/num*) and other special stuff
	- better guess at German vowel quantity rules
	- -p option now stands for --pausing
	- -H option lists the long options
	- renamed inventories and associated files, see also inv/UNKNOWN
	- renamed config.cc to options.cc
	- first attempt at using autoconf to set up a configure script
		(see the end doc/Files for an explanation)
	- removed three obsolete output formatting options
	- quoted exclamation marks in rule files are not expanded

1.5.0 from 1.5.-1	20.3.98
	- rx and regex are properly detected by configure
	- speak using /dev/dsp instead of /dev/dsp16 (SNDCTL_DSP_SAMPLESIZE)
	- doc/english/prosody.doc

1.5.1 from 1.5.0	22.3.98
	- partly fixed -soname stuff
	- Czech numerals work quite well
	- fixed glottal stops in inv/czech/traditnl.dph
	- removed unsafe unlinks and unsafe grows...hopefully...
	- escaped chars are more powerful now, text.cc:strip()
	- crude pauses can be inserted (denoted by "#")
	- cleaned up some #defines (bool constants, ESCAPE...)
	- Czech voiced affricates now respect traditnl.dph


2.-2.0 from 1.5.1	22.4.98
	- ss now requires ssd and talks to it via TCP; ss is a mere stub now.
	- "make monolith" makes the old non-networking ss
	- new conditional rule type WITH
	- preliminary support for multiple concurrent voices (inventories),
		languages, syntheses, configurations.
	- class lang, class voice; options.cc accordingly messified
	- ss.cc, monolith.cc start to reflect language dependencies
	- started to prefer egcs to gcc
	- synth.cc, ktdsyn.cc reshaped as well as the respective headers
	- halfway support for flexible stereo output
	- moved upper/lowercase issues from parser.cc to the rules
	- everything may have got broken this time, sorry
	- this is not meant to be a functional version

2.-2.1 from 2.-2.0	27.4.98
	- debugging, debugging, debugging, still not working
	- using the compiler instead of the linker in Makefile

2.-2.2 from 2.-2.1	29.4.98
	- nasals may become sonorous
	- no accents when no intonation

2.-2.3 from 2.-2.2	30.4.98
	- more debugging, as always


2.-1.0 from 2.-2.3	2.5.98
	- by default, ss is static wrt libss, "make shared" to make it shared.
	- implemented both sides of the Text-To-Speech Control Protocol
		(see doc/english/protocol.doc)
	- lpcsyn.{cc,h} is back, but doesn't get packed into the distribution

2.-1.1 from 2.-1.0	4.5.98
	- class lpcsyn splits into lpcint, lpcfloat and lpcvq
	- distribution fixes

2.-1.2 from 2.-1.1	5.5.98
	- fixes


2.0.0 from 2.-1.2	10.5.98
	- lpcsyn again integrated, lpcsyn.h lost and rewritten
	- more TTSCP commands: shutdown, set language, set voice, show
	- some minimum exception handling is performed, still using shriek()
	- fixed member pointers in options.cc (removed them)
	- wave file header might start to work (untested)
	- some traditional voices come back
	- added GPL banners to all relevant files
	- somehow integrated rx.c, rx.h
	- abbreviations spelled out (cz)

2.0.1 from 2.0.0	13.5.98
	- regex is configured better
	- rewrote freadin() to make it faster and not to duplicate files in memory
	- the relax_input option turns unknown chars on input to deflt_char (broken)
	- changed TTSCP handshake string

2.0.2 from 2.0.1	17.5.98
	- hash tables now do hash about any combination of types
	- hash tables are slabbing (faster and possibly less memory consuming
	- tcpsyn.h


2.1.-1 from 2.0.2	 2.6.98
	- channel type option implemented
	- WITH rule debugged
	- scroll lock LED tracks attached voices (for monolith)
	- ssd offspring exits
	- open syllables detection improved (cz)
	- made daemon.cc rather unixy
	- on linux, daemon debugging info goes to /dev/tty10
	- select() multitasks concurrent connexion's options (contexts)
	- cfg is no more struct configuration, it is struct configuration *
	- moved diphone names physically out of struct voice
	- copying-on-write configuration for individual connections (incomplete)
	- basic authentication (TTSCP pass command)
	- cfg/allowed.ini holds a list of TTSCP user changeable parameters

2.1.0 from 2.1.-1	3.6.98
	- egcs portability fix in hash.cc
	- numerous harmless memory leaks and related cleanup

2.1.1 from 2.1.0	6.6.98
	- host of fixes, most of them dos-related
	- a simple HOWTO to welcome newcomers
	- daemon startup more persistent (retries binding if necessary)
	- struct option changed, other cfg and context fixes
	- a little ktdsyn code cleanup

2.1.2 from 2.1.1	11.6.98
	- the TTSCP_USER environment variable may point to a file with
	  some initial TTSCP commands (used by the client)
	- cfg/allowed.ini now works differently (and at all)
	- rewrote cmd_set and associated stuff
	- updated TTSCP response code stuff
	- generalised r_prosody (two more questions in unit::sseg())
	- long word shortening (ipcz)
	- bool is now checked for by autoconf and handled in defaults.h
	- makefile rules for configure and its dependencies
	- minor QNX fixes

2.1.3 from 2.1.2	14.6.98
	- more QNX and src/configure fixes
	- inline dictionary support (doc/czech/dict.doc, doc/english/rules.doc)

2.1.4 from 2.1.3	16.6.98
	- voidsyn and lpcsyn fixes
	- lpcsyn now uses just "int" instead of occassional "long int" before
	- dispatcher_pid (used to distinguish between the server processes)

2.1.5 from 2.1.4	26.6.98
	- sseg_weight options (turning off sseg values for some unit levels)
	- the CONTOUR, NOTHING and switch (<...>) rules (see doc/*/rules.doc)
	- non-phone substitutions (doc/czech/dict.doc, unit::relabel())
	- the most of palkova.rul, preposition adjunction rules fixed

2.1.6 from 2.1.5	28.6.98
	- assim rules do not wipe zeroes
	- numerals fixes
	- spelling out rules improved (abbrev.dic and related rules)
	- autoconfiguring socklen_t (some systems have it signed, some unsigned, some missing)
	- pauses, changed prosody rules in czech.rul

2.1.7 from 2.1.6	29.6.98
	- "se" handling heuristics
	- draft palkova.rul

2.1.8 from 2.1.7	30.6.98
	- numerous fixes, including Borland fixes in rx.c


2.2.0 from 2.1.8	28.7.98
	- soft options (user supplied voice options meaningful for a single language)
	- doc/english/{options.doc,rules.doc} (in linuxdoc SGML)
	- rule files now follow hash.* rules for comments (a comment-out
		character must not be preceded by non-whitespace)
	- it is now possible to use the "#include" directive in .ini files
	- simpleparser renamed to parser and partly rewritten
	- tokenizing (see src/parser.h)
	- escape sequences in hash tables (dictiories)
	- "make mh" is synonymous to "make monolith"
	- if allowed.ini doesn't exist, an empty one is assumed.
	- somewhat changed ss_init() ss_reinit(), ss_done(), forever() and others
	- O_FILE option type no longer exists (only unit::fout() affected)

	Merged from 2.1.7.1 (21.7.98):
	- some qnx fixes
	- ktdsyn prosody works properly now + related voice configuration fixes
	- lpc-vq fixed

	- changed freadin() calls to claim()/unclaim() pairs
	- all indexing in lpcsyn.cc uses imodel (used to be ignored here and there)
	- timestamping some files (daemon automatically rereads changed files)
	- fixed preposition handling in certain contexts (cz)
	- ss_done, ss_init, ss_reinit, ss_catharsis somewhat stabilised (related fixes)

2.2.1 from 2.2.0	29.7.98
	- better lpcsyn source handling; repacking
	- fixed minor memory leaks

2.2.2 from 2.2.1	30.7.98
	- changed r_if to take a boolean voice option name as a parameter
	- colloquial and irony options changed to soft, -c and -i removed
	- got the traditnl.dph vs. kadlec.dph file switching stuff right (cz)
	- got rid of stdwarn, moved stdshriek & stdbg to struct configuration


2.3.-1 from 2.2.2	13.9.98
	- ss is renamed to Epos. All file names, related identifiers and such
		have changed.
	- ss client renamed to "say"
	- some voice-specific prosodic adjustments to a diphone are now done
		in synth::syndiphs() (and do not alter the diphone stream anymore)
	- waveform.cc (we now represent the output signal in the .wav file format)
	- it is possible to generate the .wav data before attaching to a device
	- src/agent.cc, agent.h, ttscp.cc; the new TTSCP protocol and streaming
	- more built-in TTSCP command help
	- exception handling reworked (proper response codes and classification)
	- near-complete English documentation in linuxdoc-SGML
	- option -e (or --show_phones) lists the sounds generated line by line.

2.3.0 from 2.3.-1	20.9.98
	- install script and #include fixes
	- doc/english/allowed.ini integrated into doc/english/options.sgml
	- protocol.sgml renamed to ttscp.sgml
	- TTSCP delh command
	- primitive tcpsyn (remote synchronous synthesis)
	- unit::effective can use multiply levels instead of add levels
	- scheduler somewhat secured against starvation
	- documentation esp. on rules reorganised and improved
	- documentation automatically tweaked and version-stamped
	
2.3.1 from 2.3.0	27.9.98
	- more documentation improvements (spelling and formatting fixes)
	- tcpsyn is now configurable using the "remote_server" option

2.3.2 from 2.3.1	 7.10.98
	- class unit is slabbed (allocated faster)
	- individual options partly documented
	- multiple src and autoconf fixes, better support for buggy compilers

2.3.3 from 2.3.2	13.10.98
	- ugly segfault in class ttscp constructor removed
	- class context deletes its shdshriek and stddbg
	- class navelcord (in src/navel.h) can be used to avoid memory leaks
	  in case of exceptions
	- documentation adjusted to sgml-tools 1.0.6,
	  but the good old linuxdoc dtd (96) has been retained
	- doc conversion to html and other formats somewhat debugged
	- remaining individual options documented
	- voice .ini files can be located in language dependent places

2.3.4 from 2.3.3	19.10.98
	- cfg->pseudo_root_dir limits the TTSCP file namespace
	- ktd files placed more appropriately
	- the LOG macro changed to  DEBUG(x,11,fprintf(stddbg,...);)
	- struct cowabilium, cow_claim() introduced, 
	- changed struct configuration to a a derived class (bad move?)
	- removed a cfg bug when issuing strm a second time in TTSCP
	- updated some files under doc/., renamed HOWTO to WELCOME

2.3.5 from 2.3.4	20.10.98
	- dist/inst script fixes ("cp" to "cp -a"), other minor fixes
	- don't bind to "localhost", but to the real Internet address
	  as given by gethostname() and getaddrbyname() in src/client.cc

2.3.6 from 2.3.5	26.10.98
	- don't connect to "localhost" (say and tcpsyn)
	- symlinks are copied by aux/makeinst

2.3.7 from 2.3.6	 2.11.98
	- "say -l" lists languages and voices for the current language
	- the daemon now binds to all available interfaces
	- severe bug fixes in src/waveform.cc and src/tcpsyn.cc
	- pushing file descriptors with select() (writing to sockets &c)
	  and other changes to output agents (and struct wavefm semantics)

2.3.8 from 2.3.7	6.11.98
	- portability fixes (partly ported to Visual C)
	- waveform agent type (dummy agent for trivial audio icons, untested)

2.3.9 from 2.3.8	15.11.98
	- explicit agent type specifiers within streams
	- missing SNDCTL_DSP_SETFMT bug fixed (affected direct 16bit speech)
	- get_result() in say.cc now returns the error code; related fixes
	- SO_REUSEADDR placed correctly, the persistence option removed

2.3.10 from 2.3.9	23.11.98
	- fixes: a_disconnector, waveform input
	- Visual C portability adjustments and VC bug workarounds
	- aux renamed to arch/unix, moved/deleted some files

2.3.11 from 2.3.10	30.11.98
	- numerous fixes, including a diphones input agent fix
	- TTSCP greeting string includes Epos version number
	- nonblocking soundcard writes ioctl()ified (OSS ignores O_NONBLOCK)
	- the 'f' (aka "---forking") short option
	- hacked up the global brk command

2.3.12 from 2.3.11	6.12.98
	- cfg/winepos.ini renamed to arch/win/epos.ini and other similar cleanup
	- nonblocking sgets() can now cope with "no data on socket" situations
	- stream::callbk is now scheduled inconditionally (not block()ed)
	- async_close() forks off children to do fd closes on background
	- memory leak in failing stream::stream() patched


2.4.-2 from 2.3.12	28.12.98
	- monosyll, polysyll contour (monosyll incomplete)
	- lang and voice options on the cmd line successfully rejected
	- control connections also use connection handles
	- ctrl_conns and data_conns hash tables looked into and rewritten
	- data command now limits the lifetime of that data connection
	- intr command (good old brk) now breaks only one task
	- TTSCP session headers
	- setl command now sets a value for the current stream (only)
	- setg command sets a value globally
	- down command requires a completed server authentication state
	- fixed a fence-post bug in sgets (when read() returns -1)
	- fixed a bug in voice::operator new (used this_lang; was not parent)
	- wavefm now doesn't unnecessarily explode the buffer when flush() busy
	- verify.cc - a small test suite
	- hash_table<...>::forall() added a user parameter for (*userfn)()
	- hash_table<...>::get_random() allows user-controlled destruction
	- server password stored to /var/run/epospwd
	- czech.ini and palkova.ini merged to czech.ini with
		naive.rul and prosody.rul conditionally included
	- eposmh renamed to eposm, separate hash.o and hashm.o

2.4.-1 from 2.4.-2	1.1.99
	- tcpsyn fixed
	- the --fallback_voice option (egcs 1.0.2 bugs may break it)
	- #include &c changed to @include (rule file, ini files)

2.4.0 from 2.4.-1	17.1.99
	- handled missing params to TTSCP commands
	- partly integrated ptdsyn by Martin Petriska + his support for Slovak
	- fixed set to setl in xmit_option()
	- reorganised /usr/lib/epos (lng, voice, inv)
	- split the inventory packages off the main dist

2.4.1 from 2.4.0	20.1.99
	- preliminary qnx ipc proxy added

2.4.2 from 2.4.1	25.1.99
	- a trivial qnx ipc proxy client
	- eliminated the 6xx TTSCP responses except for 600
	- eliminated some unnecessary pragmas
	- network unreachable condition detected
	- doc/Files updated

2.4.3 from 2.4.2	30.1.99
	- split arch/dos off arch/win and related cleanup
	- options.cc renamed to options.lst, comments added
	- an unrelated options.cc split off the interf.cc file
	- analogically, split interf.h to interf.h and options.h
	- elements.{cc,h} renamed to unit.{cc,h}
	- configuration cow scheme rewritten (was ill-conceived)
	- streams no more have their own contexts, use a_ttscp->c

2.4.4 from 2.4.3	10.2.99
	- fixed wavefm::put_sample() (off-by-one error)
	- fixed string values related memory leaks in the cowing code
	- fixed hard data connection abort
	- robust nonatomic appl bytes counts (untested, no client support)

2.4.5 from 2.4.4	14.2.99
	- fixed an unwanted dependency on epos-lpc (traditnl.dpt)
	- prevented pwdfile hijacking in the "already running" situation
	- send_appl reshaped to client_appl, now using the 123 TTSCP replies 
	- fixed the replies sent by oa_waveform
	- input agent type changed from T_NONE to T_INPUT, T_ANY removed
	- unit::gather returns NULL if buffer overflow and not paranoid

2.4.6 from 2.4.5	17.2.99
	- portability, QNX and NT adjustments, code rearrangements
	- fixed a few client error handling related functions 
	- a queer scheme to supply cfg to client.cc without options.cc
	- newline character in TTSCP changed from LF to CR LF
		(no known compatibility issue)

2.4.7 from 2.4.6	26.2.99
	- QNX adjustments and other minor fixes
	- waveform rewritten to handle the ioctl mess more transparently
	- moved TTSCP command help strings out of the source
	- banned async_close(-1)
	- concentrated the TTSCP command syntax checking to PAR_SYNTAX
	- introduced this_context to fix context switching upon shriek()
		(very incomplete)
	- /var/run/epos.pwd created only if listen_port == 8778
	- new option "show_labels"

2.4.8 from 2.4.7	 2.3.99
	- fixed cow (failing to cow configuration->langs & lang->voices lists
		and a pointer aliasing bug, cf. the next item)
	- this_lang and this_voice variables changed to macros; referencing
		them is now slower, while the context switch is faster
	- NT adjustments, arch/dos/config.h.in

2.4.9 from 2.4.8	10.3.99
	- get_named_cfg & format_option unified, simplified, accelerated
	- slab fragment size made slab-local
	- fixed a 2.4.7 bug - long waveforms trunca being written to /dev/dsp
	- additional ASCII characters permitted for Czech
	- say can accept text through stdin
	- pending data queues within streams

2.4.10 from 2.4.9	15.3.99
	- utterance chunking and joining
	- some language dependent directory options now use the "lng" treename
	- somewhat documented existing TTSCP modules in doc/english/ttscp.sgml
	- some time sharing debugging
	- slabbing langs and cfgs (very poorly)

2.4.11 from 2.4.10	22.3.99
	- fixed a reschedule bug
	- sound ioctl adjustments to work on qnx
	- added a proper cow() to voice_switch()
	- language, voice made regular special typed options

2.4.12 from 2.4.11	29.3.99
	- QNX, NT and error-on-close fixes
	- version stamps: /usr/lib/epos/version
	- language and voice dependent options on the command line

2.4.13 from 2.4.12	31.3.99
	- NT fix (WSAStartup moved to a global constructor)
	- data cmd: cannot refer to the present connection

2.4.14 from 2.4.13	10.5.99
	- say.cc fixes (strdup, pseudoconfiguration::paranoid)
	- NT fix: async_close also attempts closesocket()

2.4.15 from 2.4.14	21.6.99
	- set of description layers made configurable
	- option actions (pre-set and post-set)
	- arrays of options indexed by description levels
	  (not well documented nor robust)
	- fixed a bug in enum2str() (trailing colon)
	- fixed a bug in str2enum() (not found case w/o trailing colon)
	- added more characters to mathsign.dic:  # `
	- say now displays the transcription after the rules are applied

2.4.16 from 2.4.15	8.7.99
	- the configure script respects --prefix=  somewhat more
	- INV_ prefixes in options.lst changed to VOICE_
	- fixed a strip() bug in text.cc (multiple escapes on a line)
	- Czech phone number prosody hack using \X
	- #localsound output agent
	- fixed a bug in agent::relax (wrong queue direction)
	- tcpsyn deadlock avoided with a timeout between connect and TTSCP header
	- it is possible to specify the language and/or the voice through the
		"location" option for tcpsyn voices - see docs
	- agents can now wait for other agents (agent::dep)
	- {m,c,re}alloc everywhere checked against out-of-memory condition
	- and other infrastructure fixes

2.4.17 from 2.4.16	19.7.99
	- changed "first" and "second" (channel identifiers for the --channel
		option) to "left" and "right"
	- four bytes of buffer space now guaranteed by flush() instead of two
	- moved skip_waveform from attach(int) to flush()
	- partly added diphone labels (except for flush() and become())
	- using header.total_length for bookkeeping (RIFF chunks completely output)
	- description layer valued options resurrected
	- show command now prefixes the option value with a space
	- --local_only option can provide reasonable privacy for trivial cfgs
	- documentation formatting improved (sgml-tools, latex, and babel issues)
	- obsolete "for (int tmp...)" scoping support in OPTIONARRAY initializers

2.4.18 from 2.4.17	24.7.99
	- minor compatibility fixes
	- LPC voices: short pauses now actually follow sentences (using the silent
		diphone 2); needs more work (extend to ktd, ptd, and adjust the length)
	- Windows port automatically converts cfg and doc to CP1250 (hack)	

2.4.19 from 2.4.18	14.8.99
	- changed a huge static buffer in a_print::run() to a small growable one
	- fopen() calls removed or made to check against oom - except ptdsyn

2.4.20 from 2.4.19	29.8.99
	- added the omitted mode argument to open() calls with O_CREAT
	- fixed some unused arguments and other compiler warnings
	- server password file not necessarily created
	- fopen() can return stdin, stdout no more (should rather fdup() them somehow)
	- fixed a typo in traditnl.dph (wrong ? to correct ?0)
	
2.4.21 from 2.4.20	 1.9.99
	- turned utterance chunking off by default and added the -u flag to say.cc
	- turned relax_input on by default
	- --spell soft option for czech
	- ceased to treat a newline as a space
	- various ugly hacks in the Czech rules

2.4.22 from 2.4.21	 3.9.99
	- ordinal numbers in genitive in Czech
	- fixed relax_input + default_char and made them a default option

2.4.23 from 2.4.22	 4.9.99
	- ugly hacks in Czech rules made clean features, ordinal numbers improved

2.4.24 from 2.4.23	10.9.99
	- local_only made true by default (no remote TTSCP access to the server)
	- TTSCP handle length is now configurable (handle_size)
	- __STDC__ is no more defined to 0 in arch/win/config.h
	- other Borland C++ Builder related fixes
	- --debug_password option (turned off by default)
	- updated cfg/ttscp/help/*

2.4.25 from 2.4.24	12.9.99
	- redesigned struct wavefm, esp. flush() to accomodate the first
		attempt at labels (--show_labels).  Made all members of wavefm
		public and worse ugliness.

2.4.26 from 2.4.25	17.9.99
	- short options properly documented; -d, -e disappeared (use long opts instead)
	- fixed a *""=0 bug in parse_cfg_str() with implicit option values
	- fixed a --language option bug (server command line)
	- made Epos gracefully shutdown at SIGTERM
	- temporary symbols available in rules extended to \X,\Y,\Z,\W,\V,\U.
	- fixed disconnection bug at the end of appl with Windows Sokec
	- fixed some unit deletion stuff &c in unit.cc and elsewhere

2.4.27 from 2.4.26	19.9.99
	- fixed a typo in unit.cc (2.4.26 wouldn't compile)
	- made say connect to "localhost", not to gethostname()
		(so that it can find the server even with local_only).
	- minor tweax inspired by Visual C++ warnings
		socky #defined to (un)signed) to correspond to the socket type
	- fixed the unlabeled waveform format (total_bytes was negative)

2.4.28 from 2.4.27	22.9.99
	- moved naive prosody stuff to lng/czech
	- agent::timeslice now catches command_failed, so that errors during
		stream processing are correctly reported and survived
	- a minor VC fix (missing "socky" qualifier)
	- fixed the lpcfloat voices (incorrectly interpreted models)
	- monolith fixed
	- intr command fixed (could send multiple 40x replies)
	- next attempt at labelled waveforms
	- added some missing stuff to the documentation, chapter Options

2.4.29 from 2.4.28	28.9.99
	- replaced gather and subst buffers with growable buffers
		(subst and regex rules may get broken under some circumstances)
	- added a max_text_size sanity check (as an option)
	- fixed a set_option bug (setl could fail, but set the option to 0)
	- a small fix in lng/czech/prosody.rul - penults always off-falling
	- a few minor fixes

2.4.30 from 2.4.29	 3.10.99
	- new autoconf test - HAVE_REG_EEND
	- arch/unix/Makefile.dummy made even more dummy
	- Makefile made urmake compatible
	- code pedantified (except for kill(), strcasecmp(), gethostname(), strdup())
	- fix for infinite "grow sb" loop in unit::subst()
	- allowed.ini renamed to restr.ini, together with the respective option
		and its location can be changed with --base_dir
	- added a security section to the documentation
	- commented out the mark_voice() debugging thing in waveform.cc

2.4.31 from 2.4.30	 6.10.99
	- waveform stuff survives no sound ioctls found without FORGET_SOUND_IOCTLS
	- minor fix to say.cc to avoid fopen(NULL)
	- oa_wavefm::run() modified to run until EAGAIN (not just end of ophase)

2.4.32 from 2.4.31	11.10.99
	- removed superfluous explicit hash_table<char, char> instantiation
	- removed and fixed most FIXMEs (in src/*.cc)
	- properly escaped line-initial hash chars standing for pauses
		in lng/*/traditnl.dph (discarded as comments until now)

2.4.33 from 2.4.32	19.10.99
	- say.cc fix (if no TTSCP_USER environment variable set)

2.4.34 from 2.4.33	26.11.99
	- initializing unit::gb and unit::sb statically
	- minor additions to main.dic

2.4.35 from 2.4.34	 8.11.99
	- partly fixed labelled waveforms (added a field to "cue " chunk header)
	- hopefully finally fixed unit::sb

2.4.36 from 2.4.35	11.11.99
	- fixed unlabelled waveforms (added "adjustment" to class w_ophase)

2.4.37 from 2.4.36	 6.3.00
	- endianness and Solaris related fixes
	- mmsystem compatibility (Petr)
	- added an lpc voice, "theimer"
	- voices reconfigured: rvq renamed to r-kubec-vq, r-vichova added
	- permanent voice fallbacks
	- put lpcsyn.cc lpcsyn.h under GPL
	- repacked inventories (relative to /usr/lib/epos/inv, added READMEs)

2.4.38 from 2.4.37	 13.3.00
	- mmsystem and Visual C++ scripting fixes (Petr)
	- a few voices changed prosodic defaults

2.4.39 from 2.4.38	 16.3.00
	- Windows specific regex configuration fixes
	
2.4.40 from 2.4.39	 17.3.00
	- #define __STDC__ braindamage removed from rx.h
	- added HAVE_MMSYSTEM_H to win/config.in

2.4.41 from 2.4.40	 15.5.00
	- sound labels
	- label offset fix
	- pause and nearby diphones fixed in ptacek97.dph
	- some fixed diphone counts fixed

2.4.42 from 2.4.41	 16.5.00
	- label fixes
	- say -d option (show segments)

2.4.43 from 2.4.42	  3.9.00
	- const qualifier fixes
	- AC_CONST and AC_INLINE removed from configure.in (suggested by Milan Zamazal)
	- syslog support
	- hackfile used only if syslog is not available

2.4.44 from 2.4.43	 5.12.00
	- added authpriv option
	- fixed a unit::subst bug (M_EXACT)
	- attempt to improve syll.dic to handle i-i junctures

2.4.45 from 2.4.44	 26.1.01
	- HAVE_SYSLOGed severity() and other NT fixes
	- fixed a VC bug (const qualifiers in ttscp_cmd decl)
	- fixed cfg->wav_hdr (maybe)
	- ulaw encoding, downsampling by one half (Petr)
	- faster waveform generation (tranformations if any moved to wavefm::translate)
	- waveform buffer is no more char*, but unsigned short* and hdr.buffer_idx
		MUST be translated (multiplied twice) in wavefm::translate()
	- fixed ordinal numbers in Czech (also added the gen_ordinals option)

2.4.46 from 2.4.45	15.2.01
	- fixed waveform buffer realloc bug in wavefm::attach(int)
	- fixed labels; configured with label_phones, label_seg, label_sseg
	- partly added sseg labels

2.4.47 from 2.4.46	27.2.01
	- added some option documentation and other doc updates
	- added voice::operator delete(void *, lang *) and more warning avoidance
	- changed output_rate option to out_sampling_rate
	- banned spurious messages in lpcsyn.cc
	- fixed	label_ssegs
	- chmod 644 lpcsyn
	- short option -u (no header, ulaw encoding, file name said.vox)
	- removed the -fhandle-exceptions option for gcc
	- fixed a sleep table bug in agent.cc
	- moved mmsystem code from agent.cc to waveform.cc and somewhat fixed it (untested!)

2.4.48 from 2.4.47	 1.3.01
	- mmsystem interface fixes
	- client-side written files (said.wav, said.vox), see the -w -m -o options
	- --localsound, --writefs, --readfs options
	- terminology: segments are no more called diphones (in general), except for
		the TTSCP module name
	- various documentation updates
	- fixed a struct segment discrepancy between hacked and unhacked TTSCP
		(dependence on label_sseg)
	- fixed the unit::write_segs() pointer cache

2.4.49 from 2.4.48	 6.3.01
	- terminology: fixed arch/win/epos.ini (play_segments option), say, mh, doc, etc.
	- a minor fix in wavefm::ioctl_attach, MMSYSTEM code
	- made wavefm::attach (and also buffer_size handling) more logical

2.4.50 from 2.4.49	 7.3.01
	- fixed waveform headers (ulaw format, alignment and other fields)
	- optimized away wavefm::samp_size_bytes
	- full_syslog option
	- a more effective, though untested ulaw convertor
		(#define OLD_9BIT_BASED_ULAW to override)
	- treat \r as WHITESPACE 

2.4.51 from 2.4.50	 21.3.01
	- total_length is now filled in in waveforms transmitted over TTSCP
	- label_sseg segfaults no more
	- mmsystem wave header structure is now global, not allocated

2.4.52 from 2.4.51	 26.3.01
	- local_sound_device option
	- mmsystem fixed not to release a live buffer data
	- made the Bad option message less misleading
	- some mediaeval options (concerning waveform handling) removed

2.4.53 from 2.4.52	 31.3.01
	- removed src/navel.h, src/riff.cc, src/label.cc
	- removed a minor off-by-one bug in rule.cc
	- fixed a LF->CRLF translation bug in say.cc (Windows only)
	- moved most stuff from epos.ini to fixed.ini (both UNIX and Windows)
	- adapted some option defaults and .ini file comments
	- optimized away use_segs pseudooption

2.4.54 from 2.4.53	12.4.01
	- line-final backslash now makes the line continue with the next physical line
	- retreat to the old ulaw code

2.4.55 from 2.4.54	15.4.01
	- odd chunk size bug fixed in wavefm::label()
	- nine langs/voices bug fixed
	- no waveform-initial cue point
	- touched the NT service code a little bit
	- wavefm.cc cleanup

2.4.56 from 2.4.55	25.4.01
	- wavefm code support for non-16-bit samples etc. fixed

2.4.57 from 2.4.56	21.5.01
	- minor fixes in wavefm code
	- autoconf now avoids an unnecessary perverse librx.so
	- made \n a word level character (for Czech)
	- fixed the "daemon_log file cannot be created" scenario behavior
	- declared the server shutdown flag volatile
	- changed all debugging level 4 messages to level 3
	- fixed parser aliasing for \r  (from space to newline)
	- some read-only off-by-one bugs efenced off
	- pre-set hooks allowed to return a new value, pre_init_f added
	- memory leak in cow_free fixed (not freeing voice->syn etc.)
	- wavefm::translate_data() fixed (zeroed data bug)

2.4.58 from 2.4.57	19.6.01
	- written the NT service code from scratch
	- removed some garbage and updated arch/unix/listtmp
	- added the Portability documentation to the docs
	- updated the WELCOME file
	
2.4.59 from 2.4.58	22.6.01
	- NT related fixes, made most files 8+3 file naming convention compliant
	- say is now able to start the service if privileged enough on NT
	- Epos now installs as an interactive process by default
	- monolith code fixed under windows
	- documentation adjustments
	- hash.cc split to hash.cc and hashd.cc, the latter includes the former
	- global is_monolith flag instead of a #define
	- only options accepted on Epos server command line

2.4.60 from 2.4.59	 8.6.01
	- removed monolith-only hacks in synth.cc
	- preparing for a Windows CE port (kludges for missing APIs)
	- split service.h to service.h and globals.h
	- say.exe -k now can stop TTSCP service (NT only)

2.4.61 from 2.4.60	 1.8.01
	- tweaked subst() behavior (temporarily hiding the final separator)
	- if paranoid, hashing rules don't postpone loading the dictionaries
	- removed a few duplicate dph files
	- new rules for Slovak

2.4.62 from 2.4.61	 5.8.01
	- diacritics used for diphtongs in Slovak and that made optional
	- minor NT port fixes:
		- project files, HAVE_FCNTL_H, MB_SERVICE_NOTIFICATION
		- glibc regex code no more reports warnings
	- minor CE port adjustments
	- cfg->relax_input fixed

2.4.63 from 2.4.62	16.8.01
	- more CE port adjustments, stdlib.cpp introduced
	- side syll hack moved from source to the rules.  Major rule group
		permutation in lng/czech/trans.rul (syllabification,
		transcription, nonsyll prep adjoining, geminates groups)
	- (Cz) fixed the voicing assimilation rule for  after an
		unvoiced nonsyllabic preposition; fixed ain$ -> ajn etc.
	- fixed a unit::gather() bug

2.4.64 from 2.4.63	18.8.01
	- fixed a unit::insert looping bug
	- minor fixes to the Slovak rules (esp. disabled glottal stops)
	- on UNIX, the init_time option
	- a trivial agent profiler, see the profile option
	- minor NT fixes, such as call_abort() or project settings


2.4.65 from 2.4.64	27.8.01
	- fixed a select() bug

2.4.66 from 2.4.65	30.8.01
	- fixed gettimeofday() autodetection (makes the built-in profiler work)
	- (Sk) fixed soft option a_colons in slovak.rul
	- fixed intr semantics (if nothing to do, return 423 instead of 200)
	- made say more efficient wrt the TTSCP command flow
	- fixed (rather, documented) some Windows socket issues, esp. readfs
	- moved call_abort down rx.c
	- avoided a spurious template instantiation warning in Visual C
	- moved traditnl.dph from lng/slovak.prev to lng/slovak

2.4.68 from 2.4.66	internal
	- added tdpsyn.cc, .h

2.4.69 from 2.4.68	31.10.01
	- integrated 2.4.66 to 2.4.67 patch (mostly related to tdpsyn and
		adjustments in Czech and Slovak language configuration)
	- tdpsyn rewritten

2.4.70 from 2.4.69	internal
	- added tdpsyn to arch/win/configure.bat, arch/win/epos.dsp
	- tdpsyn now handles missing diphones based on paranoid the obvious way
	- added mappings/README
	- added r-violka and r-machac voices
	- (Sk) removed |'s before diphonization
	- (Sk) fixed the v>w rule
	- (Cz + Sk) fixed the capitalization just after a non-letter spelling bug
	- backported some code from 2.5 (a 2.5.0 to 2.5.2 patch):
		- src/function.cc, made *gress (and other) rules use much less memory
		- hackfile renamed to epos.err (still used only if no syslog)
		- added encoding.cc, i.e. support for multiple character encodings
		- URL spelling rules (unpronounceable consonant groups are spelled out)
		- handling server -D option in a less cleverish way
		- Makefile on config.h dependency removed
		- some error messages changed to the file:line format
		- rules go on parsing after errors
		- added an undocumented class of errors 88x
		- fixed an incomplete conditional rule parsing bug
		- max_errors, max_nest options
		- lng/czech/numerals.rul fixed (1[234] mili.*)

2.4.71 from 2.4.70	5.11.01
	- (Cz + Sk) (v ztvorke) "v uvodzovkch" (punctuation rendering for short texts)
	- (Cz + Sk) fixes for URL spelling rules
	- tdpsyn.cc now uses memset and memcpy properly instead of initialization loops
	- added tcpsyn.max_frame; made the out_buffer size fit the segment inventory
	- faster waveform->sample(SAMPLE *, int) used by tdpsyn
	- (Cz + Sk) Roman numerals
	- say first transcribes, then speaks
	- (Sk) fixed voicing loss in voiced-final + personal pronoun

2.4.72 from 2.4.71	16.11.01
	- function.cc, .h, encoding.cc, .h added to arch/win project files
	- (Sk) fixed "tretiemu", ")]}", and many spellout forms
	- various minor code fixes
	- tdpsyn bug (OLA frames omitted) fixed
	- say now attempts to connect to a public TTSCP server if needed
	- (Cz + Sk) Roman numerals rules made more robust
	- a marginal URL spelling fix (word-initial l,r)
	- (Cz + Sk) workaround rule for noisy pause diphones

2.4.73 from 2.4.72	17.12.01
	- (Cz) ucircle spellout bug fixed

2.4.74 from 2.4.73	18.3.02
	- cosmetic header and source file fixes, libeposaif

2.4.76 from 2.4.74	20.5.02
	- joined Petr's diffs from 2.4.73:
		- linear predictive prosody modelling (tdpsyn)
		- TSR debugging tool support (Win only)
		- 1/3 and 1/4 downsampling band-pass filters
		- tdpsyn prosody modelling fix

2.4.77 from 2.4.76	18.8.02
        - fixed triphone files (betty.dph and violka.tdi)
	- fixed lpc prosody
        - added additive_cont option (needed with lpc prosody model)
	    
2.4.78 from 2.4.76	18.8.02
	- gauge prototype
	- client.cc: sputs replacement callbacks
	- nonblock.cc - handles control connection congestion
	- split sleep_table to block_table and push_table
	- minor scheduler and client code fixes

2.4.79 from 2.4.78	20.9.02
	- added 2.4.77 fixes
	- some LP prosody fixes
	- fixed d.f parameter, it's really F0 now!
	- (Win32) fixed missing 2x socky @ client.h
	- (Win32) fixed missing nonblock.cpp @ configure.bat & epos.dsw
	
	 