1
2
3RECENT CHANGES can be tracked at the BOTTOM END.  The rest doesn't qualify
4as an exciting story, just skip it.
5
6[ Note: some items mention who reported a bug or even did the
7described modification.  The absence of such attribution
8doesn't imply that the work did itself spontaneously.
9Notably Pavel Machek, Adam Nohejl, Daniel Sobe, Mirek Trmac and Milan Zamazal
10contributed in this way much more often than explicitly indicated here.     ]
11
12
131.1.1 from earlier releases (incomplete):
14	- this file
15	- debugging & other conditional compilation parameters have been moved
16		to the config file. doc/debug.doc has been rewritten
17	- fixed the array size in sss.cc to fit into the 64K DGROUP in DOS
18	- fixed shriek() not to be volatile and to always take signed ints
19	- allowed (hack) 16-bit ints in load_config and DOS HUGE memory model
20	- "make tgz" (in sss/src) makes a tgz (in sss/src/../..) with the
21		name sssX-Y-Z.tgz; the version numbers as read from common.h
22		A copy is made on the diskette (if one is inserted at the moment).
23	- "make date" outputs the last modification time
24
251.1.2 from 1.1.1	10.5.97
26	- "make dos" creates a zipfile, not individual files
27	- "make dos1250", "make dos1252" can produce two other encodings
28	- in unit::sanity, fixed the range checks for pointer values
29	- migrated the rest of non-ASCII chars out of the sources
30	- migrated another bunch of options to the .ini file
31	- allowed escape sequences and quoted strings in the .ini file
32	- multiple tiny code amendments
33	- no compile-time checking for the memory model
34	- run-time check whether we've been compiled fully 32-bit (again)
35	- changed warning flags to -Wall -Wno-parentheses -Wno-unused
36	- new option type: DEBUG_AREA (enum, just for focus_dbg)
37	- interf.h uglified
38	- side syllables hacked out. See unit:syll_break for more info.
39		The feature can be disabled in the .ini file (syll_break())
40		cfg/nonsyl.dic has been consequently cleaned up.
41	- the sonority rule no longer considers nasals as more sonorous than
42		the ordinary consonants. Hope it doesn't hurt.
43	- parser now can accept keyboard input & other minor improvements there
44	- new files in the doc directory: Intro, Files
45
461.1.3 from 1.1.2	14.5.97
47	- enums UNIT, OPT_TYPE suffer formally renamed elements because of Borland
48	- BOOL, INT, STR (formerly STRING),... in config.cc are always #defined now
49	- a new diphone inventory description (.dph) - the traditional one.
50		Very crude, lots of the diphones discarded (incl. W[{>,` etc.)
51		This inventory doesn't cover some allophones at all, see default.rul
52	- in unit::set_father(), f,i,t will be inherited (untested). This should
53		allow phone-level f,i,t adjustments propagated to the diphones.
54	- unit::diph() optionally allows repeated diphones (have a look there).
55	- we now allow "triphones" (like "a'a", a.k.a. "a|a" in traditnl.dph)
56	- the default rules contain one killer rule (until traditnl.dph is fixed)
57
581.1.4 from 1.1.3	19.5.97
59	- optional hash table profiling; configurable hash table full percentage
60	- removed a word-length quadratic complexity aspect of subst() by not
61		checking too long words (longer than hash::longest). Typically,
62		this "feature" will cause an overall slowdown. :-)
63	- fixed unit::subst to loop until there's nothing to substitute
64	- traditnl.dph is less crude now, it only doesn't solve the voiced
65		affricates now. We still never use many important diphones.
66	- some big fixed-length auto arrays have been made static & malloced
67	- introduced cfg.safe_grow, but still not configurable
68
691.1.5 from 1.1.4	22.5.97
70	- '\0' shall be replaced by '_' in parser::getch; '\0' never gets output.
71	- unit::fout is much more configurable now, see config.cc
72	- tabs regularized to eight chars
73
741.1.6 from 1.1.5	27.5.97
75	- config.cc #inclusion scheme has been substantially reworked
76	- aggregate (array...) config options are now possible, see config.cc
77	- unit::fout is even more configurable now. And slower as well.
78	- ANSI escape sequences mostly made configurable
79	- can remove elements from the hash tables now
80	- invalid options are checked against
81	- fixed pointer sanity checks (when trusted_ptr==off)
82	- added doc/output.doc
83
841.1.7 from 1.1.6	28.5.97
85	- fixed a stupid "last byte swallowing" bug
86	- added diphtong rules, made traditnl.dph handle diphtongs better
87	- too high level symbols, which could make the parser prematurely
88		terminate a substitution, are checked against (parser::done)
89	- gather now gathers everything, thus preserving syllables etc.
90		during substitutions. This makes work multiple multilevel
91		substitutions, such as "ououo" -> "ou|ou|o".
92	- prep is temporarily broken
93
941.1.8 from 1.1.7	29.5.97
95	- fixed prep &c (bug having to do with M_EXACT and unit::gather())
96	- if a preposition occurs at the end of a colon, let it be fatal
97	- added the FILE cfg option type
98	- deuglified load_config()
99
100
1011.2.-1 from 1.1.8	30.5.97
102	- converted all printf's to redirectable calls. Use "stddbg_file",
103		"stdshriek_file", "stdwarn_file" in sss.ini to redirect them.
104		An exception is user_pause(), which should never be redirected
105	- renamed sss to ss, 'cause 'tis shorta.
106	- colorize() now doesn't check against redirected input
107	- rewrote the stuff about ss_init(), multiple .ini files
108	- at the very beginning, the debug output may go temporarily
109		to the screen. It will be redirected properly after
110		the .ini file which uses it is redirected.
111	- we now have cfg/ssfixed.ini and ss.ini instead of sss.ini.
112		Any values in ss.ini override those in ssfixed.ini. The idea
113		is not to bury the oft-changing params in the permanent ones.
114	- the "markup_language" configuration parameter (MUST be located
115		in ssfixed.ini!, possible values: none, ansi, rtf) allows
116		run-time switching between ANSI output and the Rich Text Format
117		output. Either ssansi.ini or ssrtf.ini is processed after
118		ssfixed.ini
119	- ss_reinit() can be used to re-read the config files. Not fool-proof.
120	- ss_init() shall be used instead of load_config()
121
1221.2.0 from 1.2.-1	1.6.97
123	- cfg/ssdeflt.ini (used by ss_reinit()) is now automagically generated
124		from src/config.cc (on "make")
125	- Makefile deuglified a little bit
126	- fixed hash::hash (empty lines had been creating phantom items)
127	- doc/output.doc includes new topics (e.g. debugging info redirection)
128	- fixed safe_grow and max_line_len to be configurable
129	- got finally rid of ANSI escape sequences in config.cc
130	- made '~' a valid word separator (e.g. in a dictionary)
131
1321.2.1 from 1.2.0	13.6.97
133	- fixed some of the silly Borland warnings
134	- removed -Wno-parentheses (and fixed some lines which got it)
135	- added nnet.cc (neural networks' input - see doc/neuralnet.doc)
136	- consistently changed "auxiliary syllable" to "side syllable"
137	- changed warning flags to -Wall with no exceptions
138	- faked the use of unused function arguments, see unused() in common.h
139	- added the "text" abstraction (src/text.*) to handle #include in rules
140	- maybe fixed a DOS CR/LF freadin() bug
141	- gather() called after the diphones get created now shrieks gracefully
142
1431.2.2 from 1.2.1	 2.7.97
144	- no code change, makefile adjusted for the files that were new in 1.2.1
145
1461.2.3 from 1.2.2	 7.7.97
147	- minor code changes in text.*, chasing a DOS-only Heisenbug (lost)
148
1491.2.4 from 1.2.3	 14.9.97
150	- fixed this==NULL sanity check in unit::sanity()
151	- made parser skip any garbage (whitespace?) until the first phone
152	- minor amendments to text.cc
153	- made hash.cc a little bit more commentproof
154	- when DEBUG is defined, free() is #defined to paranoid_free() (see)
155	- fixed tmps declaration in rules::str2rule() (the DOS-only bug?)
156	- improved cfg/syll.dic (laryngeal stop before word-initial vocals)
157	- fixed long vowels in the nnet code (unit::nnet_type())
158	- the glottal stop is now a valid voiceless stop for the nnet code
159
1601.2.5 from 1.2.4	29.9.97
161	- added doc/COPYING (GNU Public License - copyleft) to fix the legalese
162	- the paranoid_free() hack from 1.2.4 has been removed. Because,
163	- dmalloc (debugging mem alloc()) library is used #ifdef WANT_DMALLOC
164	- fixed a fence-post error (rules::rules::ruleline one byte too short)
165	- rules::resolve_vars now uses a pseudostatic buffer (was call-lived)
166	- the FOREVER macro should be used to mark permanent memory allocations
167	- some minor memory leaks have been found and fixed
168	- rewrote hash::hash to make it even more commentproof, but messier
169	- "make clean" tries to clean up the Makefile and report some settings
170	- cleaned up parser::parser, parser.cc now depends on interf.cc::freadin()
171
1721.2.6 from 1.2.5	29.10.97
173	- partly allowed deletion of the last phone in a syllable
174	- const char * everywhere to be -Wwrite-strings clean
175	- hash collisions are now handled with a balanced AVL tree
176	- furthermore, on hash table over/underflow it is completely rehashed
177	- made the only nnet.rules substitution not destroy syllables
178	- fixed a trailing whitespace bug in hash:hash
179	- it is possible to remove the diphones with "DIPHONES ~" rule
180	- option to dump the diphones at every DIPHONES rule (immed_diphones)
181	- added a punctuation hack into the nnet rules and similar minor fixes
182
183
1841.3.-2 from 1.2.6	 3.11.97
185	- aux/addcflag to easily add compiler flags; used by "make gdb/pg"
186	- "make clean" tries harder to clean up the Makefile
187	- simple suprasegmentalia (doc/rules.doc, doc/prosody.doc)
188	- hash::add_int/translate_int now understands negative quantities
189	- version optionally printed on startup
190	- hash table can work with other keys/data than char*/char* now
191	- fixed substitutions ('$' didn't work if scope->cont!=NO_CONT)
192	- new rule type RAISE - move tokens to other levels
193	- fixed some harmless memory leaks with ss_done()
194	- added rules to mark wh-quesions as such
195	- if there is nothing for a postp/preposition to join to, it's ignored
196
1971.3.-1 from 1.3.-2	17.11.97
198	- inline is never used under DOS, Borland can't handle it properly
199	- snprintf is no longer used, it is unportable
200	- allowed no value in .ini files, default is "".
201	- long command line options etc. (see doc/options.doc)
202	- fixed: if no phones given to the parser, it would crash
203	- ss.cc is now compiled separately, thus speeding up the compilation
204	- new rule type SMOOTH - smoothen suprasegmentalia (doc/rules.doc)
205	- unit::project() - move suprasegmental adjustments to a certain level
206	- some short command options, still undocumented
207	- f,i,t is now kept zero-relative, not neutral-value-relative
208	- unit::effective is now a uniform sum of the adjustments
209
210
2111.4.-2 from 1.3.-1	 8.12.97
212	- "gcc -pipe" might compile a bit faster
213	- src/x moved to aux/xd
214	- default.rul renamed to czech.rul
215	- rule is now a fully-fledged class with a VMT, doc/classes.doc
216	- stopped trying to avoid multiple-loaded dictionaries
217	- moved the "scope" logic from unit::...() to rules::apply()
218	- rules get precompiled much tighter
219	- made hash dmallocable
220	- fixed profiling (LDOPTS in the Makefile)
221	- REGRESS and PROGRESS now can insert new units (doc/rules.doc)
222	- this allows for throwing out many subst rules
223	- simple help for single-letter (short) options
224	- debugging tags - rules now have source file/line information
225	- copy constructor for hash tables (could be made faster)
226	- class block - a subblock of rules (doc/rules.doc)
227	- fixed the "Undefined identifier (null)" error message in resolve_vars
228	- conditional rules (rule type IF)
229	- first try at merging in the win32 and .wav generator code
230	- dos package contains files from var subdir
231	- shriek() is now more consistent (integers should have their %d)
232	- rule can begin with 0 or more words of comment (hm, inconsistent)
233	- str2rule renamed to next_rule, cleaned up, added functionality
234
2351.4.-1 from 1.4.-2	11.12.97
236	- doc for r_if (doc/rules.doc)
237	- renamed some sources (r*)
238	- calling syn32.cc to write the samples somewhere, rewrote ss.cc
239	- redesigned czech.rul, though the old style is still supported
240	- minor memory leaks fixed
241	- updated copyright notices in syn32.*, common.h, and COPYING
242	- adjusted class dsynth (former DifSynt)
243	- threw out dos support files again
244	- some options for controlling syn32.cc output
245
2461.4.0 from 1.4.-1	15.12.97
247	- adjusted class synteza in syn32.cc
248	- option wav_header to turn off the header
249	- wiped out lot of now redundant scoping code out of elements.cc
250	- added hash::write(), hash::update(), doc/hash.doc
251	- new option -n - neuronet rules
252	- synth32.cc now tests whether it was able to open its files
253	- doc/sound.doc
254	- if paranoid, rules cannot begin with the old-style comment
255
2561.4.1 from 1.4.0	18.12.97
257	- renamed syn32.cc to synth.cc
258	- changed div.quot to / throughout synth.cc
259	- handling 0 models for a diphone differently
260	- ammended the (unused) hash<non-char> code
261	- fixed the directories (cfg!=src/cfg)
262
2631.4.2 from 1.4.1	19.12.97
264	- the default config now really speaks to /dev/dsp16
265	- updated doc/sound.doc
266	- fork() suggested in ss.cc as an example
267
2681.4.3 from 1.4.2	22.12.97
269	- rules can examine string configuration parameters (/dev/rules.doc)
270	- twice using strcasecmp() (if not portable, replace with stricmp())
271	- -d gives diphone names, not numbers
272	- -s makes ss speak (not default today)
273	- synteza::wave_buffer added (performance reasons)
274	- found and inserted the improved cfg/ptacek97.dph at last
275
2761.4.4 from 1.4.3	29.12.97
277	- fixed wavout maybe NULL bug in synteza::synteza()
278	- invent_dir now points to /usr/lib/ss
279	- improved prosody and other rules
280	- r_if renamed to r_inside, new rule r_if (constant comparison only),
281		it is not very useful at the moment, as we don't use "external"
282		parameters introduced in 1.4.3 as yet
283	- text to be processed can be given on command-line
284	- added some preliminary german.rul
285	- fixed splitting of a 'q'
286	- moved some more r_raise code from run-time to its constructor
287	- r_inside now accepts more sophisticated lists and handles them faster
288		(booltab instead of a simple strchr)
289	- it is possible to force hash tables to be power-of-two-sized,
290		thus avoiding division in hash::fn() on machines with no hw div
291	- fork() is used to speak the samples (if UNIX && needed && enabled)
292
2931.4.5 from 1.4.4	2.1.98
294	- the text to be parsed can be given directly on the command line
295	- option colloquial (-c) turns on the specific features of casual speech
296	- option irony (-i) turns on ironical prosody (tries to)
297	- non-terminated utterances (non-final colons) have been hacked a bit
298	- renamed struct diphone member "i" to "e" (possible naming conflicts
299		with local variables)
300	- partly united struct diphones with struct difon
301	- changed use_syn for inventar[2] - again a bug?
302	- stupid heuristic classification "se" as either prep or postp
303
3041.4.6 from 1.4.5	4.1.98
305	- t/i adjustments ("korekce") can be turned on with a cfg par
306	- support for sampling frequencies other than 8kHz (cfg.sampling_rate)
307	- the sampling buffer now has the optimal size (hw dependent)
308	- sampling is done through the open() breed of functions, not the
309		fopen() one. Rationale: we need ioctl's, but not clib buffering.
310	- changed some #includes and Makefile dependencies
311
3121.4.7 from 1.4.6	18.1.98
313	- multiple languages partially supported
314	- reshaped hash_table as a template
315
3161.4.8 from 1.4.7	26.1.98
317	- reduced number of diagnostic levels to 5 (0-4)
318	- cfg files moved to /usr/lib/ss
319	- .ini file for each diphone inventory added
320	- the ANYWAY option of hash tables (see doc/hash.doc)
321	- new target - make install
322	- make dist had to be rewritten
323
3241.4.9 from 1.4.8	27.1.98
325	- merged an improved synth.* by Petr
326
3271.4.10 from 1.4.9	 2.2.98
328	- makeinst - a bit more working cfg installer
329	- the bulk made a shared library libss.a
330	- make static  links statically (use for debugging)
331	- all directories are relative to cfg.base_dir
332	- stricmp, filenames made more consistent and portable
333
3341.4.11 from 1.4.10	 4.2.98
335	- #!/bin/bash is used to mark scripts as such
336	- detection of open syllables (marked with '~')
337	- minor dos fixes (fork(), open(,,)
338
3391.4.12 from 1.4.11	16.2.98
340	- dos fix - IS_NOT_SLASH in compose_pathname()
341	- significant prosody amendments
342	- backslash can escape exclamation marks within some rules
343	- nondeterministic [ ] rules (see "choices" in rules.doc)
344
3451.4.13 from 1.4.12	23.2.98
346	- minor fixes (O_BINARY, f0 for int3, DOS documentation)
347	- choice probabilities and repeat counts (see rules.doc)
348	- winss.ini replaces ss.ini during "make dos"
349	- "make cfgsync" synces cfg for "make dos" and "make dist"
350
3511.4.14 from 1.4.13	 6.3.98
352	- Watcom changes merged
353	- null number pronunciation support (parser only)
354	- fixed r_syll to avoid "Nothing to split" with unknown symbols
355	- allowed multiple non-option parameters if not paranoid
356	- partly fixed voiced africates
357	- show_raw_diphs option added
358	- various diphone fixes
359	- .dph files moved somewhere under the inv directory
360
361
3621.5.-1 from 1.4.14	16.3.98
363	- Watcom/QNX and generic portability fixes
364	- regex rule support using rx library (turn on with WANT_REGEX
365		in src/common.h; see also rules.doc and "man grep")
366	- some Czech numerals (see lng/czech/num*) and other special stuff
367	- better guess at German vowel quantity rules
368	- -p option now stands for --pausing
369	- -H option lists the long options
370	- renamed inventories and associated files, see also inv/UNKNOWN
371	- renamed config.cc to options.cc
372	- first attempt at using autoconf to set up a configure script
373		(see the end doc/Files for an explanation)
374	- removed three obsolete output formatting options
375	- quoted exclamation marks in rule files are not expanded
376
3771.5.0 from 1.5.-1	20.3.98
378	- rx and regex are properly detected by configure
379	- speak using /dev/dsp instead of /dev/dsp16 (SNDCTL_DSP_SAMPLESIZE)
380	- doc/english/prosody.doc
381
3821.5.1 from 1.5.0	22.3.98
383	- partly fixed -soname stuff
384	- Czech numerals work quite well
385	- fixed glottal stops in inv/czech/traditnl.dph
386	- removed unsafe unlinks and unsafe grows...hopefully...
387	- escaped chars are more powerful now, text.cc:strip()
388	- crude pauses can be inserted (denoted by "#")
389	- cleaned up some #defines (bool constants, ESCAPE...)
390	- Czech voiced affricates now respect traditnl.dph
391
392
3932.-2.0 from 1.5.1	22.4.98
394	- ss now requires ssd and talks to it via TCP; ss is a mere stub now.
395	- "make monolith" makes the old non-networking ss
396	- new conditional rule type WITH
397	- preliminary support for multiple concurrent voices (inventories),
398		languages, syntheses, configurations.
399	- class lang, class voice; options.cc accordingly messified
400	- ss.cc, monolith.cc start to reflect language dependencies
401	- started to prefer egcs to gcc
402	- synth.cc, ktdsyn.cc reshaped as well as the respective headers
403	- halfway support for flexible stereo output
404	- moved upper/lowercase issues from parser.cc to the rules
405	- everything may have got broken this time, sorry
406	- this is not meant to be a functional version
407
4082.-2.1 from 2.-2.0	27.4.98
409	- debugging, debugging, debugging, still not working
410	- using the compiler instead of the linker in Makefile
411
4122.-2.2 from 2.-2.1	29.4.98
413	- nasals may become sonorous
414	- no accents when no intonation
415
4162.-2.3 from 2.-2.2	30.4.98
417	- more debugging, as always
418
419
4202.-1.0 from 2.-2.3	2.5.98
421	- by default, ss is static wrt libss, "make shared" to make it shared.
422	- implemented both sides of the Text-To-Speech Control Protocol
423		(see doc/english/protocol.doc)
424	- lpcsyn.{cc,h} is back, but doesn't get packed into the distribution
425
4262.-1.1 from 2.-1.0	4.5.98
427	- class lpcsyn splits into lpcint, lpcfloat and lpcvq
428	- distribution fixes
429
4302.-1.2 from 2.-1.1	5.5.98
431	- fixes
432
433
4342.0.0 from 2.-1.2	10.5.98
435	- lpcsyn again integrated, lpcsyn.h lost and rewritten
436	- more TTSCP commands: shutdown, set language, set voice, show
437	- some minimum exception handling is performed, still using shriek()
438	- fixed member pointers in options.cc (removed them)
439	- wave file header might start to work (untested)
440	- some traditional voices come back
441	- added GPL banners to all relevant files
442	- somehow integrated rx.c, rx.h
443	- abbreviations spelled out (cz)
444
4452.0.1 from 2.0.0	13.5.98
446	- regex is configured better
447	- rewrote freadin() to make it faster and not to duplicate files in memory
448	- the relax_input option turns unknown chars on input to deflt_char (broken)
449	- changed TTSCP handshake string
450
4512.0.2 from 2.0.1	17.5.98
452	- hash tables now do hash about any combination of types
453	- hash tables are slabbing (faster and possibly less memory consuming
454	- tcpsyn.h
455
456
4572.1.-1 from 2.0.2	 2.6.98
458	- channel type option implemented
459	- WITH rule debugged
460	- scroll lock LED tracks attached voices (for monolith)
461	- ssd offspring exits
462	- open syllables detection improved (cz)
463	- made daemon.cc rather unixy
464	- on linux, daemon debugging info goes to /dev/tty10
465	- select() multitasks concurrent connexion's options (contexts)
466	- cfg is no more struct configuration, it is struct configuration *
467	- moved diphone names physically out of struct voice
468	- copying-on-write configuration for individual connections (incomplete)
469	- basic authentication (TTSCP pass command)
470	- cfg/allowed.ini holds a list of TTSCP user changeable parameters
471
4722.1.0 from 2.1.-1	3.6.98
473	- egcs portability fix in hash.cc
474	- numerous harmless memory leaks and related cleanup
475
4762.1.1 from 2.1.0	6.6.98
477	- host of fixes, most of them dos-related
478	- a simple HOWTO to welcome newcomers
479	- daemon startup more persistent (retries binding if necessary)
480	- struct option changed, other cfg and context fixes
481	- a little ktdsyn code cleanup
482
4832.1.2 from 2.1.1	11.6.98
484	- the TTSCP_USER environment variable may point to a file with
485	  some initial TTSCP commands (used by the client)
486	- cfg/allowed.ini now works differently (and at all)
487	- rewrote cmd_set and associated stuff
488	- updated TTSCP response code stuff
489	- generalised r_prosody (two more questions in unit::sseg())
490	- long word shortening (ipcz)
491	- bool is now checked for by autoconf and handled in defaults.h
492	- makefile rules for configure and its dependencies
493	- minor QNX fixes
494
4952.1.3 from 2.1.2	14.6.98
496	- more QNX and src/configure fixes
497	- inline dictionary support (doc/czech/dict.doc, doc/english/rules.doc)
498
4992.1.4 from 2.1.3	16.6.98
500	- voidsyn and lpcsyn fixes
501	- lpcsyn now uses just "int" instead of occassional "long int" before
502	- dispatcher_pid (used to distinguish between the server processes)
503
5042.1.5 from 2.1.4	26.6.98
505	- sseg_weight options (turning off sseg values for some unit levels)
506	- the CONTOUR, NOTHING and switch (<...>) rules (see doc/*/rules.doc)
507	- non-phone substitutions (doc/czech/dict.doc, unit::relabel())
508	- the most of palkova.rul, preposition adjunction rules fixed
509
5102.1.6 from 2.1.5	28.6.98
511	- assim rules do not wipe zeroes
512	- numerals fixes
513	- spelling out rules improved (abbrev.dic and related rules)
514	- autoconfiguring socklen_t (some systems have it signed, some unsigned, some missing)
515	- pauses, changed prosody rules in czech.rul
516
5172.1.7 from 2.1.6	29.6.98
518	- "se" handling heuristics
519	- draft palkova.rul
520
5212.1.8 from 2.1.7	30.6.98
522	- numerous fixes, including Borland fixes in rx.c
523
524
5252.2.0 from 2.1.8	28.7.98
526	- soft options (user supplied voice options meaningful for a single language)
527	- doc/english/{options.doc,rules.doc} (in linuxdoc SGML)
528	- rule files now follow hash.* rules for comments (a comment-out
529		character must not be preceded by non-whitespace)
530	- it is now possible to use the "#include" directive in .ini files
531	- simpleparser renamed to parser and partly rewritten
532	- tokenizing (see src/parser.h)
533	- escape sequences in hash tables (dictiories)
534	- "make mh" is synonymous to "make monolith"
535	- if allowed.ini doesn't exist, an empty one is assumed.
536	- somewhat changed ss_init() ss_reinit(), ss_done(), forever() and others
537	- O_FILE option type no longer exists (only unit::fout() affected)
538
539	Merged from 2.1.7.1 (21.7.98):
540	- some qnx fixes
541	- ktdsyn prosody works properly now + related voice configuration fixes
542	- lpc-vq fixed
543
544	- changed freadin() calls to claim()/unclaim() pairs
545	- all indexing in lpcsyn.cc uses imodel (used to be ignored here and there)
546	- timestamping some files (daemon automatically rereads changed files)
547	- fixed preposition handling in certain contexts (cz)
548	- ss_done, ss_init, ss_reinit, ss_catharsis somewhat stabilised (related fixes)
549
5502.2.1 from 2.2.0	29.7.98
551	- better lpcsyn source handling; repacking
552	- fixed minor memory leaks
553
5542.2.2 from 2.2.1	30.7.98
555	- changed r_if to take a boolean voice option name as a parameter
556	- colloquial and irony options changed to soft, -c and -i removed
557	- got the traditnl.dph vs. kadlec.dph file switching stuff right (cz)
558	- got rid of stdwarn, moved stdshriek & stdbg to struct configuration
559
560
5612.3.-1 from 2.2.2	13.9.98
562	- ss is renamed to Epos. All file names, related identifiers and such
563		have changed.
564	- ss client renamed to "say"
565	- some voice-specific prosodic adjustments to a diphone are now done
566		in synth::syndiphs() (and do not alter the diphone stream anymore)
567	- waveform.cc (we now represent the output signal in the .wav file format)
568	- it is possible to generate the .wav data before attaching to a device
569	- src/agent.cc, agent.h, ttscp.cc; the new TTSCP protocol and streaming
570	- more built-in TTSCP command help
571	- exception handling reworked (proper response codes and classification)
572	- near-complete English documentation in linuxdoc-SGML
573	- option -e (or --show_phones) lists the sounds generated line by line.
574
5752.3.0 from 2.3.-1	20.9.98
576	- install script and #include fixes
577	- doc/english/allowed.ini integrated into doc/english/options.sgml
578	- protocol.sgml renamed to ttscp.sgml
579	- TTSCP delh command
580	- primitive tcpsyn (remote synchronous synthesis)
581	- unit::effective can use multiply levels instead of add levels
582	- scheduler somewhat secured against starvation
583	- documentation esp. on rules reorganised and improved
584	- documentation automatically tweaked and version-stamped
585
5862.3.1 from 2.3.0	27.9.98
587	- more documentation improvements (spelling and formatting fixes)
588	- tcpsyn is now configurable using the "remote_server" option
589
5902.3.2 from 2.3.1	 7.10.98
591	- class unit is slabbed (allocated faster)
592	- individual options partly documented
593	- multiple src and autoconf fixes, better support for buggy compilers
594
5952.3.3 from 2.3.2	13.10.98
596	- ugly segfault in class ttscp constructor removed
597	- class context deletes its shdshriek and stddbg
598	- class navelcord (in src/navel.h) can be used to avoid memory leaks
599	  in case of exceptions
600	- documentation adjusted to sgml-tools 1.0.6,
601	  but the good old linuxdoc dtd (96) has been retained
602	- doc conversion to html and other formats somewhat debugged
603	- remaining individual options documented
604	- voice .ini files can be located in language dependent places
605
6062.3.4 from 2.3.3	19.10.98
607	- cfg->pseudo_root_dir limits the TTSCP file namespace
608	- ktd files placed more appropriately
609	- the LOG macro changed to  DEBUG(x,11,fprintf(stddbg,...);)
610	- struct cowabilium, cow_claim() introduced,
611	- changed struct configuration to a a derived class (bad move?)
612	- removed a cfg bug when issuing strm a second time in TTSCP
613	- updated some files under doc/., renamed HOWTO to WELCOME
614
6152.3.5 from 2.3.4	20.10.98
616	- dist/inst script fixes ("cp" to "cp -a"), other minor fixes
617	- don't bind to "localhost", but to the real Internet address
618	  as given by gethostname() and getaddrbyname() in src/client.cc
619
6202.3.6 from 2.3.5	26.10.98
621	- don't connect to "localhost" (say and tcpsyn)
622	- symlinks are copied by aux/makeinst
623
6242.3.7 from 2.3.6	 2.11.98
625	- "say -l" lists languages and voices for the current language
626	- the daemon now binds to all available interfaces
627	- severe bug fixes in src/waveform.cc and src/tcpsyn.cc
628	- pushing file descriptors with select() (writing to sockets &c)
629	  and other changes to output agents (and struct wavefm semantics)
630
6312.3.8 from 2.3.7	6.11.98
632	- portability fixes (partly ported to Visual C)
633	- waveform agent type (dummy agent for trivial audio icons, untested)
634
6352.3.9 from 2.3.8	15.11.98
636	- explicit agent type specifiers within streams
637	- missing SNDCTL_DSP_SETFMT bug fixed (affected direct 16bit speech)
638	- get_result() in say.cc now returns the error code; related fixes
639	- SO_REUSEADDR placed correctly, the persistence option removed
640
6412.3.10 from 2.3.9	23.11.98
642	- fixes: a_disconnector, waveform input
643	- Visual C portability adjustments and VC bug workarounds
644	- aux renamed to arch/unix, moved/deleted some files
645
6462.3.11 from 2.3.10	30.11.98
647	- numerous fixes, including a diphones input agent fix
648	- TTSCP greeting string includes Epos version number
649	- nonblocking soundcard writes ioctl()ified (OSS ignores O_NONBLOCK)
650	- the 'f' (aka "---forking") short option
651	- hacked up the global brk command
652
6532.3.12 from 2.3.11	6.12.98
654	- cfg/winepos.ini renamed to arch/win/epos.ini and other similar cleanup
655	- nonblocking sgets() can now cope with "no data on socket" situations
656	- stream::callbk is now scheduled inconditionally (not block()ed)
657	- async_close() forks off children to do fd closes on background
658	- memory leak in failing stream::stream() patched
659
660
6612.4.-2 from 2.3.12	28.12.98
662	- monosyll, polysyll contour (monosyll incomplete)
663	- lang and voice options on the cmd line successfully rejected
664	- control connections also use connection handles
665	- ctrl_conns and data_conns hash tables looked into and rewritten
666	- data command now limits the lifetime of that data connection
667	- intr command (good old brk) now breaks only one task
668	- TTSCP session headers
669	- setl command now sets a value for the current stream (only)
670	- setg command sets a value globally
671	- down command requires a completed server authentication state
672	- fixed a fence-post bug in sgets (when read() returns -1)
673	- fixed a bug in voice::operator new (used this_lang; was not parent)
674	- wavefm now doesn't unnecessarily explode the buffer when flush() busy
675	- verify.cc - a small test suite
676	- hash_table<...>::forall() added a user parameter for (*userfn)()
677	- hash_table<...>::get_random() allows user-controlled destruction
678	- server password stored to /var/run/epospwd
679	- czech.ini and palkova.ini merged to czech.ini with
680		naive.rul and prosody.rul conditionally included
681	- eposmh renamed to eposm, separate hash.o and hashm.o
682
6832.4.-1 from 2.4.-2	1.1.99
684	- tcpsyn fixed
685	- the --fallback_voice option (egcs 1.0.2 bugs may break it)
686	- #include &c changed to @include (rule file, ini files)
687
6882.4.0 from 2.4.-1	17.1.99
689	- handled missing params to TTSCP commands
690	- partly integrated ptdsyn by Martin Petriska + his support for Slovak
691	- fixed set to setl in xmit_option()
692	- reorganised /usr/lib/epos (lng, voice, inv)
693	- split the inventory packages off the main dist
694
6952.4.1 from 2.4.0	20.1.99
696	- preliminary qnx ipc proxy added
697
6982.4.2 from 2.4.1	25.1.99
699	- a trivial qnx ipc proxy client
700	- eliminated the 6xx TTSCP responses except for 600
701	- eliminated some unnecessary pragmas
702	- network unreachable condition detected
703	- doc/Files updated
704
7052.4.3 from 2.4.2	30.1.99
706	- split arch/dos off arch/win and related cleanup
707	- options.cc renamed to options.lst, comments added
708	- an unrelated options.cc split off the interf.cc file
709	- analogically, split interf.h to interf.h and options.h
710	- elements.{cc,h} renamed to unit.{cc,h}
711	- configuration cow scheme rewritten (was ill-conceived)
712	- streams no more have their own contexts, use a_ttscp->c
713
7142.4.4 from 2.4.3	10.2.99
715	- fixed wavefm::put_sample() (off-by-one error)
716	- fixed string values related memory leaks in the cowing code
717	- fixed hard data connection abort
718	- robust nonatomic appl bytes counts (untested, no client support)
719
7202.4.5 from 2.4.4	14.2.99
721	- fixed an unwanted dependency on epos-lpc (traditnl.dpt)
722	- prevented pwdfile hijacking in the "already running" situation
723	- send_appl reshaped to client_appl, now using the 123 TTSCP replies
724	- fixed the replies sent by oa_waveform
725	- input agent type changed from T_NONE to T_INPUT, T_ANY removed
726	- unit::gather returns NULL if buffer overflow and not paranoid
727
7282.4.6 from 2.4.5	17.2.99
729	- portability, QNX and NT adjustments, code rearrangements
730	- fixed a few client error handling related functions
731	- a queer scheme to supply cfg to client.cc without options.cc
732	- newline character in TTSCP changed from LF to CR LF
733		(no known compatibility issue)
734
7352.4.7 from 2.4.6	26.2.99
736	- QNX adjustments and other minor fixes
737	- waveform rewritten to handle the ioctl mess more transparently
738	- moved TTSCP command help strings out of the source
739	- banned async_close(-1)
740	- concentrated the TTSCP command syntax checking to PAR_SYNTAX
741	- introduced this_context to fix context switching upon shriek()
742		(very incomplete)
743	- /var/run/epos.pwd created only if listen_port == 8778
744	- new option "show_labels"
745
7462.4.8 from 2.4.7	 2.3.99
747	- fixed cow (failing to cow configuration->langs & lang->voices lists
748		and a pointer aliasing bug, cf. the next item)
749	- this_lang and this_voice variables changed to macros; referencing
750		them is now slower, while the context switch is faster
751	- NT adjustments, arch/dos/config.h.in
752
7532.4.9 from 2.4.8	10.3.99
754	- get_named_cfg & format_option unified, simplified, accelerated
755	- slab fragment size made slab-local
756	- fixed a 2.4.7 bug - long waveforms trunca being written to /dev/dsp
757	- additional ASCII characters permitted for Czech
758	- say can accept text through stdin
759	- pending data queues within streams
760
7612.4.10 from 2.4.9	15.3.99
762	- utterance chunking and joining
763	- some language dependent directory options now use the "lng" treename
764	- somewhat documented existing TTSCP modules in doc/english/ttscp.sgml
765	- some time sharing debugging
766	- slabbing langs and cfgs (very poorly)
767
7682.4.11 from 2.4.10	22.3.99
769	- fixed a reschedule bug
770	- sound ioctl adjustments to work on qnx
771	- added a proper cow() to voice_switch()
772	- language, voice made regular special typed options
773
7742.4.12 from 2.4.11	29.3.99
775	- QNX, NT and error-on-close fixes
776	- version stamps: /usr/lib/epos/version
777	- language and voice dependent options on the command line
778
7792.4.13 from 2.4.12	31.3.99
780	- NT fix (WSAStartup moved to a global constructor)
781	- data cmd: cannot refer to the present connection
782
7832.4.14 from 2.4.13	10.5.99
784	- say.cc fixes (strdup, pseudoconfiguration::paranoid)
785	- NT fix: async_close also attempts closesocket()
786
7872.4.15 from 2.4.14	21.6.99
788	- set of description layers made configurable
789	- option actions (pre-set and post-set)
790	- arrays of options indexed by description levels
791	  (not well documented nor robust)
792	- fixed a bug in enum2str() (trailing colon)
793	- fixed a bug in str2enum() (not found case w/o trailing colon)
794	- added more characters to mathsign.dic:  # `
795	- say now displays the transcription after the rules are applied
796
7972.4.16 from 2.4.15	8.7.99
798	- the configure script respects --prefix=  somewhat more
799	- INV_ prefixes in options.lst changed to VOICE_
800	- fixed a strip() bug in text.cc (multiple escapes on a line)
801	- Czech phone number prosody hack using \X
802	- #localsound output agent
803	- fixed a bug in agent::relax (wrong queue direction)
804	- tcpsyn deadlock avoided with a timeout between connect and TTSCP header
805	- it is possible to specify the language and/or the voice through the
806		"location" option for tcpsyn voices - see docs
807	- agents can now wait for other agents (agent::dep)
808	- {m,c,re}alloc everywhere checked against out-of-memory condition
809	- and other infrastructure fixes
810
8112.4.17 from 2.4.16	19.7.99
812	- changed "first" and "second" (channel identifiers for the --channel
813		option) to "left" and "right"
814	- four bytes of buffer space now guaranteed by flush() instead of two
815	- moved skip_waveform from attach(int) to flush()
816	- partly added diphone labels (except for flush() and become())
817	- using header.total_length for bookkeeping (RIFF chunks completely output)
818	- description layer valued options resurrected
819	- show command now prefixes the option value with a space
820	- --local_only option can provide reasonable privacy for trivial cfgs
821	- documentation formatting improved (sgml-tools, latex, and babel issues)
822	- obsolete "for (int tmp...)" scoping support in OPTIONARRAY initializers
823
8242.4.18 from 2.4.17	24.7.99
825	- minor compatibility fixes
826	- LPC voices: short pauses now actually follow sentences (using the silent
827		diphone 2); needs more work (extend to ktd, ptd, and adjust the length)
828	- Windows port automatically converts cfg and doc to CP1250 (hack)
829
8302.4.19 from 2.4.18	14.8.99
831	- changed a huge static buffer in a_print::run() to a small growable one
832	- fopen() calls removed or made to check against oom - except ptdsyn
833
8342.4.20 from 2.4.19	29.8.99
835	- added the omitted mode argument to open() calls with O_CREAT
836	- fixed some unused arguments and other compiler warnings
837	- server password file not necessarily created
838	- fopen() can return stdin, stdout no more (should rather fdup() them somehow)
839	- fixed a typo in traditnl.dph (wrong ?�� to correct ?0�)
840
8412.4.21 from 2.4.20	 1.9.99
842	- turned utterance chunking off by default and added the -u flag to say.cc
843	- turned relax_input on by default
844	- --spell soft option for czech
845	- ceased to treat a newline as a space
846	- various ugly hacks in the Czech rules
847
8482.4.22 from 2.4.21	 3.9.99
849	- ordinal numbers in genitive in Czech
850	- fixed relax_input + default_char and made them a default option
851
8522.4.23 from 2.4.22	 4.9.99
853	- ugly hacks in Czech rules made clean features, ordinal numbers improved
854
8552.4.24 from 2.4.23	10.9.99
856	- local_only made true by default (no remote TTSCP access to the server)
857	- TTSCP handle length is now configurable (handle_size)
858	- __STDC__ is no more defined to 0 in arch/win/config.h
859	- other Borland C++ Builder related fixes
860	- --debug_password option (turned off by default)
861	- updated cfg/ttscp/help/*
862
8632.4.25 from 2.4.24	12.9.99
864	- redesigned struct wavefm, esp. flush() to accomodate the first
865		attempt at labels (--show_labels).  Made all members of wavefm
866		public and worse ugliness.
867
8682.4.26 from 2.4.25	17.9.99
869	- short options properly documented; -d, -e disappeared (use long opts instead)
870	- fixed a *""=0 bug in parse_cfg_str() with implicit option values
871	- fixed a --language option bug (server command line)
872	- made Epos gracefully shutdown at SIGTERM
873	- temporary symbols available in rules extended to \X,\Y,\Z,\W,\V,\U.
874	- fixed disconnection bug at the end of appl with Windows Sokec
875	- fixed some unit deletion stuff &c in unit.cc and elsewhere
876
8772.4.27 from 2.4.26	19.9.99
878	- fixed a typo in unit.cc (2.4.26 wouldn't compile)
879	- made say connect to "localhost", not to gethostname()
880		(so that it can find the server even with local_only).
881	- minor tweax inspired by Visual C++ warnings
882		socky #defined to (un)signed) to correspond to the socket type
883	- fixed the unlabeled waveform format (total_bytes was negative)
884
8852.4.28 from 2.4.27	22.9.99
886	- moved naive prosody stuff to lng/czech
887	- agent::timeslice now catches command_failed, so that errors during
888		stream processing are correctly reported and survived
889	- a minor VC fix (missing "socky" qualifier)
890	- fixed the lpcfloat voices (incorrectly interpreted models)
891	- monolith fixed
892	- intr command fixed (could send multiple 40x replies)
893	- next attempt at labelled waveforms
894	- added some missing stuff to the documentation, chapter Options
895
8962.4.29 from 2.4.28	28.9.99
897	- replaced gather and subst buffers with growable buffers
898		(subst and regex rules may get broken under some circumstances)
899	- added a max_text_size sanity check (as an option)
900	- fixed a set_option bug (setl could fail, but set the option to 0)
901	- a small fix in lng/czech/prosody.rul - penults always off-falling
902	- a few minor fixes
903
9042.4.30 from 2.4.29	 3.10.99
905	- new autoconf test - HAVE_REG_EEND
906	- arch/unix/Makefile.dummy made even more dummy
907	- Makefile made urmake compatible
908	- code pedantified (except for kill(), strcasecmp(), gethostname(), strdup())
909	- fix for infinite "grow sb" loop in unit::subst()
910	- allowed.ini renamed to restr.ini, together with the respective option
911		and its location can be changed with --base_dir
912	- added a security section to the documentation
913	- commented out the mark_voice() debugging thing in waveform.cc
914
9152.4.31 from 2.4.30	 6.10.99
916	- waveform stuff survives no sound ioctls found without FORGET_SOUND_IOCTLS
917	- minor fix to say.cc to avoid fopen(NULL)
918	- oa_wavefm::run() modified to run until EAGAIN (not just end of ophase)
919
9202.4.32 from 2.4.31	11.10.99
921	- removed superfluous explicit hash_table<char, char> instantiation
922	- removed and fixed most FIXMEs (in src/*.cc)
923	- properly escaped line-initial hash chars standing for pauses
924		in lng/*/traditnl.dph (discarded as comments until now)
925
926
9272.5.-4 from 2.4.32	19.11.99
928	- unit markers (see marker.cc) - that's why prosody is broken
929	- say.cc fix: no TTSCP_USER variable set
930	- minor additions to main.dic
931	- changed labelled waveforms from regions to labels and partly fixed them
932	- fixed sbsize related bugs
933
9342.5.-3 from 2.5.-4	20.3.00
935	- finished new prosody modelling
936	- mbrola-compatible speech synthesizer input format (SSIF) introduced
937	- prosody_dir option removed (prosody is language-dependent anyway)
938	- &commat;s hacked out in the HTML documentation
939	- incorporated a 2.4.36 to 2.4.40 patch:
940		- endianness and Solaris related fixes
941		- mmsystem compatibility (Petr)
942		- added an lpc voice, "theimer"
943		- voices reconfigured: rvq renamed to r-kubec-vq, r-vichova added
944		- permanent voice fallbacks
945		- put lpcsyn.cc lpcsyn.h under GPL
946		- repacked inventories (relative to /usr/lib/epos/inv, added READMEs)
947		- mmsystem and Visual C++ scripting fixes (Petr)
948		- a few voices changed prosodic defaults
949		- Windows specific regex configuration fixes
950		- #define __STDC__ braindamage removed from rx.h
951	- incorporated a 2.4.32 to 2.4.36 patch except for already present items:
952		- initializing unit::gb and unit::sb statically and related fixes
953		- partly fixed labelled waveforms (added a field to "cue " chunk header)
954	 	- fixed unlabelled waveforms (added "adjustment" to class w_ophase)
955	- smoothing by phone, not by segment in czech.rul (completely broken anyway)
956
9572.5.-2 from 2.5.-3	27.3.00
958	- renamed oldsynth back to synth
959	- mbrsyn
960	- new Slovak stuff (Martin)
961	- a subtle gather() bug fixed
962	- eight voices bug fixed
963
9642.5.-1 from 2.5.-2	not distributed
965	- drop connections and reread configuration on SIGHUP
966	- some harmless read-only overruns fixed
967	- traditional memory leaks associated with configuration strings fixed
968	- compose_pathname treats NULL string as ""
969	- chdir / on daemon startup
970		- consequently, --base_dir ../cfg ... was broken.  Fixed in 2.5.0
971	- other fixes
972	- static options
973
9742.5.0 from 2.5.-1	5.9.01
975	- incorporated a 2.4.40 to 2.4.66 patch
976		- sound labels
977		- label offset fix
978		- pause and nearby diphones fixed in ptacek97.dph
979		- some fixed diphone counts fixed
980		- label fixes
981		- say -d option (show segments)
982		- const qualifier fixes
983		- AC_CONST and AC_INLINE removed from configure.in (suggested by Milan Zamazal)
984		- syslog support
985		- hackfile used only if syslog is not available
986		- added authpriv option
987		- fixed a unit::subst bug (M_EXACT)
988		- attempt to improve syll.dic to handle i-i junctures
989		- HAVE_SYSLOGed severity() and other NT fixes
990		- fixed a VC bug (const qualifiers in ttscp_cmd decl)
991		- fixed cfg->wav_hdr (maybe)
992		- ulaw encoding, downsampling by one half (Petr)
993		- faster waveform generation (tranformations if any moved to wavefm::translate)
994		- waveform buffer is no more char*, but unsigned short* and hdr.buffer_idx
995			MUST be translated (multiplied twice) in wavefm::translate()
996		- fixed ordinal numbers in Czech (also added the gen_ordinals option)
997		- fixed waveform buffer realloc bug in wavefm::attach(int)
998		- fixed labels; configured with label_phones, label_seg, label_sseg
999		- partly added sseg labels
1000		- added some option documentation and other doc updates
1001		- added voice::operator delete(void *, lang *) and more warning avoidance
1002		- changed output_rate option to out_sampling_rate
1003		- banned spurious messages in lpcsyn.cc
1004		- fixed	label_ssegs
1005		- chmod 644 lpcsyn
1006		- short option -u (no header, ulaw encoding, file name said.vox)
1007		- removed the -fhandle-exceptions option for gcc
1008		- fixed a sleep table bug in agent.cc
1009		- moved mmsystem code from agent.cc to waveform.cc and somewhat fixed it (untested!)
1010		- mmsystem interface fixes
1011		- client-side written files (said.wav, said.vox), see the -w -m -o options
1012		- --localsound, --writefs, --readfs options
1013		- terminology: segments are no more called diphones (in general), except for
1014			the TTSCP module name
1015		- various documentation updates
1016		- fixed a struct segment discrepancy between hacked and unhacked TTSCP
1017			(dependence on label_sseg)
1018		- fixed the unit::write_segs() pointer cache
1019		- terminology: fixed arch/win/epos.ini (play_segments option), say, mh, doc, etc.
1020		- a minor fix in wavefm::ioctl_attach, mmsystem code
1021		- made wavefm::attach (and also buffer_size handling) more logical
1022		- fixed waveform headers (ulaw format, alignment and other fields)
1023		- optimized away wavefm::samp_size_bytes
1024		- full_syslog option
1025		- a more effective, though untested ulaw convertor
1026			(#define OLD_9BIT_BASED_ULAW to override)
1027		- treat \r as WHITESPACE
1028		- total_length is now filled in in waveforms transmitted over TTSCP
1029		- label_sseg segfaults no more
1030		- mmsystem wave header structure is now global, not allocated
1031		- local_sound_device option
1032		- mmsystem fixed not to release a live buffer data
1033		- made the Bad option message less misleading
1034		- some mediaeval options (concerning waveform handling) removed
1035		- removed src/navel.h, src/riff.cc, src/label.cc
1036		- removed a minor off-by-one bug in rule.cc
1037		- fixed a LF->CRLF translation bug in say.cc (Windows only)
1038		- moved most stuff from epos.ini to fixed.ini (both UNIX and Windows)
1039		- adapted some option defaults and .ini file comments
1040		- optimized away use_segs pseudooption
1041		- line-final backslash now makes the line continue with the next physical line
1042		- retreat to the old ulaw code
1043		- odd chunk size bug fixed in wavefm::label()
1044		- nine langs/voices bug fixed
1045		- no waveform-initial cue point
1046		- touched the NT service code a little bit
1047		- wavefm.cc cleanup
1048		- wavefm code support for non-16-bit samples etc. fixed
1049		- minor fixes in wavefm code
1050		- autoconf now avoids an unnecessary perverse librx.so
1051		- made \n a word level character (for Czech)
1052		- fixed the "daemon_log file cannot be created" scenario behavior
1053		- declared the server shutdown flag volatile
1054		- changed all debugging level 4 messages to level 3
1055		- fixed parser aliasing for \r  (from space to newline)
1056		- some read-only off-by-one bugs efenced off
1057		- pre-set hooks allowed to return a new value, pre_init_f added
1058		- memory leak in cow_free fixed (not freeing voice->syn etc.)
1059		- wavefm::translate_data() fixed (zeroed data bug)
1060		- written the NT service code from scratch
1061		- removed some garbage and updated arch/unix/listtmp
1062		- added the Portability documentation to the docs
1063		- updated the WELCOME file
1064		- NT related fixes, made most files 8+3 file naming convention compliant
1065		- say is now able to start the service if privileged enough on NT
1066		- Epos now installs as an interactive process by default
1067		- monolith code fixed under windows
1068		- documentation adjustments
1069		- hash.cc split to hash.cc and hashd.cc, the latter includes the former
1070		- global is_monolith flag instead of a #define
1071		- only options accepted on Epos server command line
1072		- removed monolith-only hacks in synth.cc
1073		- preparing for a Windows CE port (kludges for missing APIs)
1074		- split service.h to service.h and globals.h
1075		- say.exe -k now can stop TTSCP service (NT only)
1076		- tweaked subst() behavior (temporarily hiding the final separator)
1077		- if paranoid, hashing rules don't postpone loading the dictionaries
1078		- removed a few duplicate dph files
1079		- new rules for Slovak
1080		- diacritics used for diphtongs in Slovak and that made optional
1081		- minor NT port fixes:
1082			- project files, HAVE_FCNTL_H, MB_SERVICE_NOTIFICATION
1083			- glibc regex code no more reports warnings
1084		- minor CE port adjustments
1085		- cfg->relax_input fixed
1086		- more CE port adjustments, stdlib.cpp introduced
1087		- side syll hack moved from source to the rules.  Major rule group
1088			permutation in lng/czech/trans.rul (syllabification,
1089			transcription, nonsyll prep adjoining, geminates groups)
1090		- (Cz) fixed the voicing assimilation rule for � after an
1091			unvoiced nonsyllabic preposition; fixed ain$ -> ajn etc.
1092		- fixed a unit::gather() bug
1093		- fixed a unit::insert looping bug
1094		- minor fixes to the Slovak rules (esp. disabled glottal stops)
1095		- on UNIX, the init_time option
1096		- a trivial agent profiler, see the profile option
1097		- minor NT fixes, such as call_abort() or project settings
1098		- fixed a select() bug
1099		- fixed gettimeofday() autodetection (makes the built-in profiler work)
1100		- (Sk) fixed soft option a_colons in slovak.rul
1101		- fixed intr semantics (if nothing to do, return 423 instead of 200)
1102		- made say more efficient wrt the TTSCP command flow
1103		- fixed (rather, documented) some Windows socket issues, esp. readfs
1104		- moved call_abort down rx.c
1105		- avoided a spurious template instantiation warning in Visual C
1106		- moved traditnl.dph from lng/slovak.prev to lng/slovak
1107
1108		- lng/slovak copied from 2.4.66, lng/slovak.prev copied from 2.5.-1
1109		- WELCOME copied from 2.4.66
1110		- changed also the capitalized DIPH* to SEG* (terminology change)
1111		- made max_line static and similar randomly found fixups
1112		- fixed --base_dir with relative pathnames
1113
1114		- .orig files still hold the 2.5.-1 contents
1115
11162.5.1 from 2.5.0	27.9.01
1117	- changed DEBUG() to DBG()
1118	- removed Czech documentation files
1119	- .orig files removed
1120	- src/function.cc, made *gress (and other) rules use much less memory
1121	- hackfile renamed to epos.err (still used only if no syslog)
1122	- added encoding.cc, i.e. support for multiple character encodings
1123	- URL spelling rules (unpronounceable consonant groups are spelled out)
1124	- handling server -D option in a less cleverish way
1125	- static option deallocation fixed
1126	- Makefile on config.h dependency removed
1127	- some error messages changed to the file:line format
1128	- rules go on parsing after errors
1129	- added an undocumented class of errors 88x
1130	- fixed an incomplete conditional rule parsing bug
1131	- max_errors, max_nest options
1132
11332.5.2 from 2.5.1	8.10.01
1134	- minor speedup of esctab related code, non-compressed functions added
1135	- lng/czech/numerals.rul fixed (1[234] mili.*)
1136	- minor documentation fix
1137	- minor g++ 3.0 fix  (friend class syntax)
1138	- fixed a segfault bug if no voices are configured
1139
11402.5.3 from 2.5.2	18.10.02
1141	- (Sk) voicing assimilation fix
1142
11432.5.4 from 2.5.3	 7.4.03
1144	- fixed a segfault bug if no soft options or voices for a language
1145	- TTSCP modules: syn, dump
1146	- say options: -s, -t
1147	- mbrsyn and projection code heavily debugged
1148	- new rule type: absolutize (temporary implementation)
1149	- (Cz) generate_segs, traditional_dph options
1150
11512.5.5 from 2.5.4	15.4.03
1152	- SAMPA translation
1153	- fixes related to the prosody (mostly to unit::t)
1154
11552.5.6 from 2.5.5	29.5.03
1156	- incorporated a 2.4.66 to 2.4.81 patch
1157		- added tdpsyn.cc, .h
1158		- incl. 2.4.66 to 2.4.67 patch (mostly related to tdpsyn and
1159			adjustments in Czech and Slovak language configuration)
1160		- tdpsyn rewritten
1161		- added tdpsyn to arch/win/configure.bat, arch/win/epos.dsp
1162		- tdpsyn now handles missing diphones based on paranoid the obvious way
1163		- added mappings/README
1164		- added r-violka and r-machac voices
1165		- (Sk) removed |'s before diphonization
1166		- (Sk) fixed the v>w rule
1167		- (Cz + Sk) fixed the capitalization just after a non-letter spelling bug
1168		- (Cz + Sk) (v z�tvorke) "v uvodzovk�ch" (punctuation rendering for short texts)
1169		- (Cz + Sk) fixes for URL spelling rules
1170		- tdpsyn.cc now uses memset and memcpy properly instead of initialization loops
1171		- added tcpsyn.max_frame; made the out_buffer size fit the segment inventory
1172		- faster waveform->sample(SAMPLE *, int) used by tdpsyn
1173		- (Cz + Sk) Roman numerals
1174		- say first transcribes, then speaks
1175		- (Sk) fixed voicing loss in voiced-final + personal pronoun
1176		- function.cc, .h, encoding.cc, .h added to arch/win project files
1177		- (Sk) fixed "tretiemu", ")]}", and many spellout forms
1178		- various minor code fixes
1179		- tdpsyn bug (OLA frames omitted) fixed
1180		- say now attempts to connect to a public TTSCP server if needed
1181		- (Cz + Sk) Roman numerals rules made more robust
1182		- a marginal URL spelling fix (word-initial l,r)
1183		- (Cz + Sk) workaround rule for noisy pause diphones
1184		- (Cz) ucircle spellout bug fixed
1185		- cosmetic header and source file fixes, libeposaif
1186		- joined Petr's diffs from 2.4.73:
1187			- linear predictive prosody modelling (tdpsyn)
1188			- TSR debugging tool support (Win only)
1189			- 1/3 and 1/4 downsampling band-pass filters
1190			- tdpsyn prosody modelling fix
1191		- fixed triphone files (betty.dph and violka.tdi)
1192		- fixed lpc prosody
1193		- added additive_cont option (needed with lpc prosody model)
1194		- gauge prototype
1195		- client.cc: sputs replacement callbacks
1196		- nonblock.cc - handles control connection congestion
1197		- split sleep_table to block_table and push_table
1198		- minor scheduler and client code fixes
1199		- added 2.4.77 fixes
1200		- some LP prosody fixes
1201		- fixed d.f parameter, it's really F0 now!
1202		- (Win32) fixed missing 2x socky @ client.h
1203		- (Win32) fixed missing nonblock.cpp @ configure.bat & epos.dsw
1204		- odd sized translated data bug fixed
1205		- max AVL tree depth for dictionary-oriented rules increased
1206		- added many cross-references, examples and etc. to rules.sgml
1207		- (Cz) "p�es" voicing assimilation behavior fixed
1208		- negated dictionaries (r_prep, r_postp, r_with), M_NEGATED
1209	- minor patch related fixes (spelling, spacing etc.)
1210
12112.5.7 from 2.5.6	2.6.03
1212	- incorporated a 2.4.81 to 2.4.Daniel patch (see applied-diff-81-to-Daniel)
1213		most changes by Daniel Sobe and Jakub Adamek
1214		- experimental German configuration (BOMP interface unfinished)
1215		- neural net prosody modeling
1216		- F0 smoothing
1217		- pros_factor option
1218		- F0 labeling
1219		- r_mysubst
1220		- (Win32) minor fixes
1221		- struct option -> epos_option
1222
12232.5.8 from 2.5.7	4.6.03
1224	- changed DBG's to D_PRINTs
1225
12262.5.9 from 2.5.8	6.6.03
1227	- removed listtmp, Makefile.dummy, default.ini, maketgz, distcfg,
1228		makedflt, makedflt.sed, addcflag, cstodos, makenicedate
1229		install.sh, rerunepos, makeinst, doc/czech, doc/slovak etc.
1230	- added automake support
1231	- renamed src/nnet/string.h to slowstring.h (also string.cc, types.h)
1232	- moved several files between doc and arch/unix
1233	- moved doc/english/* into doc
1234	- moved doc/Changes to Changes
1235	- moved VERSION to configure.in
1236	- cfg now installs to /usr/share/epos (instead of /usr/lib/epos)
1237	- fixed the mbrola_binary option to accept relative names
1238
12392.5.10 from 2.5.9	12.6.03
1240	- say now recognizes --help
1241	- slightly less obscure error messages for newcomer mistakes
1242
12432.5.11 from 2.5.10	19.6.03
1244	- fixed a connect bug if say is run with no name resolver
1245	- install-data-hook -> install-data-local
1246	- didn't forget to install cfg/root
1247	- installed configuration directories are now mode 755
1248	- .DELETE_ON_ERROR in Makefile.common
1249	- missing sgml2html doesn't interrupt a make any more
1250
12512.5.12 from 2.5.11	25.6.03
1252	- shriek now accepts varargs, thus eliminated most fmt()s
1253	- fmt() now uses scratch instead of error_fmt_scratch
1254	- some error messages improved
1255	- vrfy: some more tests
1256	- using vsnprintf instead of vsprintf if available
1257	- sending 401 reply at the end of the intr
1258	- oa_wavefm::break now issues a 122 and no 123 reply
1259	- moved vrfy into the new src/tests subdirectory and TESTS
1260	- vrfy now can spawn (and uses and kills) a temporary Epos
1261	- moved the compiler tests somewhat up the configure.in
1262	- fixed yylex() in neural_parse.yy not to use yytoknum
1263	- fixed the multiply defined CLEANFILES bug
1264
12652.5.13 from 2.5.12	1.7.03
1266	- fixed scratch overrun in say
1267	- fixed say command line behavior wrt mixed text, dashes and options
1268	- fixed marker::operator < to take the explicit parameter by reference
1269	- rewrote marker::merge()
1270	- rewrote unit::~unit() to conserve space; don't delete next anymore
1271
12722.5.14 from 2.5.13	20.7.03
1273	- removed some misleading comments from some charset mappings
1274	- added morpheme between syll and word in unit_levels
1275	- rewrote parser initialization - simpler, flexer, faster
1276	- perm_input@*, perm_working@* options
1277	- random data test doesn't generate premature hard zeroes
1278	- resets to normal color after an \e'd cfg opt value is printed
1279	- r_analyze rule type - a simple morphematic analyzer
1280	- hash_table::longest ignores items with replacees beginning in !META_
1281	- removed the older time domain synthesizers
1282	- capitalized documentation section titles and similar fixes
1283	- updated the doc for some options
1284	- updated option documentation tests
1285	- use_nnet_phone changed to a soft option and renamed to nnet_phone
1286	- added arch/unix/test.version to assist make distcheck
1287
12882.5.15 from 2.5.14	8.8.03
1289	- renamed INFINITY in unit.cc to avoid a conflict with C99
1290	- updated the --help and -H outputs for all three command lines
1291	- removed superfluous "use_" from the few affected boolean opts
1292	- fixed charset setting while cfg re-read
1293	- documented TTSCP modules dump and [p]
1294	- changed some 86x errors to 46x
1295
12962.5.16 from 2.5.15	12.8.03
1297	- new LPC inventories (silent diphone added)
1298	- cfg/inv now always includes kubec-vq, vichova-vq
1299	- vrfy doesn't kill the temporary server but uses "down"
1300	- config.guess, config.sub updated
1301	- option "downgradables" solves several parser limitations
1302	- adapted doc/intro.sgml to get the history closer to current reality
1303
13042.5.17 from 2.5.16	12.10.03
1305	- struct cue_point: the "chunk" member fixed from int[4] to char[4]
1306	- (Cz + Sk) abbrev.dic, abbrurl.dic -> spellout.dic, spellurl.dic
1307	- (Cz) soft option diphtongs (no diphtongs for mbr-cz1)
1308	- SAMPA alternates are named by the sampa_alts list
1309	- list_of_calls()
1310	- SAMPLE is now signed 16 bit, got rid of SIGNED_SAMPLE
1311	- unified t_samp to SAMPLE; replaced "long" and "short" ints by C99
1312	- (Cz) fixed n_segs in theimer.ini
1313	- removed nnet.cc
1314	- encode_to_sampa() renamed to decode_to_sampa() for consistency
1315
13162.5.18 from 2.5.17	19.10.03
1317	- removed defaults.h
1318	- hash tables lost independence on Epos
1319	- hash tables lost DEBUG_HASH, PROFILE_HASH, ANYWAY, write and update
1320	- hash tables use text.h to read a table from a text file
1321	- removed char escaping from literal & .dic hashes and string values
1322	- removed commenting out from .dic hashes
1323	- added char escaping to TTSCP setl and setg cmd values
1324	- switched the order of text file processing to:
1325		encoding, directives, escaping
1326	- renamed getline to get_line (and rewrote it as above)
1327	- fixed text::rewind() and some related D_PRINTS
1328	- changed some printf's to D_PRINT's
1329	- (Cz) partly fixed short.dic (several problems), see also trans.rul
1330	- added a documentation section on the overall architecture
1331
13322.5.19 from 2.5.18	 6.11.03
1333	- fixed hash table filename and line no. reporting
1334	- fixed unit::subst(): largest match now goes first
1335	- fixed unit::relabel(): largest match now goes first
1336	- fixed a cfg reload bug in encoding.cc
1337	- fixed a double free buf in ~lang
1338	- fixed memory leaks: text::superfile and config_release() etc.
1339	- fixed when a_input::run is scheduled, but read returns EAGAIN
1340	- slabified parser and sched_aq
1341	- fixed slab leak reporting
1342	- speed optimizations of critical spots (inlines, booltab->always)
1343	- (Cz) completely new and better main.dic, short.dic
1344		(suggested by Pavel Machek)
1345	- (Cz) optimizations (numerals) and fixes (infinite substs)
1346	- (Cz) several "near" optimizations and soft opts to skip some rules
1347	- (Cz) nonsyl.dic -> nonsyllprep.dic; introduced interj.dic
1348	- (Cz) unified the stress unit establishment rules to stress.rul
1349	- (Cz) joined the two stress grouping substs (relabels)
1350	- (Cz) stopped to "support" the naive prosody
1351	- gauge now sends items out in comma separated batches
1352	- gauge made always to send out options to skip inessential rules
1353	- gauge -t
1354	- new synchronous sgets(), strace friendly, faster, space hungry
1355	- O_LIST options (currently languages, voices and soft_options)
1356	- moved scope and dbg tag logic from block_rule::apply_current
1357		to rule::cook(), which fixes rules not directly in blocks
1358	- removed M_BEGIN, M_END, M_SEQ from unit::subst() and elsewhere
1359	- arch/unix/upload to support "make upload" to SourceForge
1360	- "make cfginst" (available from the src subdir)
1361	- exceptions are now properly deallocated (hopefully)
1362	- the ttscp command help files work again
1363	- changed some file owners, groups and modes (to non-root)
1364	- utterance chunking made aggresive - max_utterance, split_utterance
1365
13662.5.20 from 2.5.19	11.11.03
1367	- some configure.in tests fixed (reported by Mirek Trmac)
1368	- simplified options.lst (source code names = user names)
1369	- fixed the  with !"... ..."    word splitting bug
1370	- fixed two 0 disappearances in the rules
1371	- r_regress and r_progress now use ABSENT_CHAR instead of '0'
1372
13732.5.21 from 2.5.20	27.11.03
1374	- fastmatch optimization speeds up subst rules in VERY large scope units
1375	- gather now returns in gb and gblen
1376	- (Cz) related and other main.dic fixes
1377	- (Cz) fixes related to characters from mathsign.dic, dollars etc.
1378	- a_accept now has no context of its own, but has "listening"
1379	- ~configuration is now no duplicate for free_all_options()
1380	- fixed theimer's n_segs to 441
1381	- several fixes connected with the reinitialization
1382	- say -r now properly times out
1383	- rule::whole_tag buffer made static
1384	- removed arch/win/cpconv2.exe and made the conversion optional
1385	- fixed a mysterious order dependency bug in wavefm::flush()
1386		(reported by Larry Gilbert)
1387	- text preprocessor now by default strips leading and trailing whitespace
1388	- after a fatal bug, don't complain about slab's lost cells
1389	- parser::depth (to fix downgradable character disappearances)
1390	- an attempt at a THANKS file
1391
13922.5.22 from 2.5.21	10.1.04
1393	- (Cz) main.dic improvements
1394	- gauge -b
1395	- cfg/Makefile.am now only installs and distributes listed files
1396	- likewise for arch
1397	- removed arch/win/*.enc, *.conv and added README.CODEPAGE
1398	- make arch/unix/upload/upload a bit more atomic
1399	- fallback_mode option (see docs) (addresses default voice problems)
1400	- added WELCOME and several files in doc to EXTRA_DIST
1401	- init_time option fixed (now works for 2+ seconds)
1402	- TTSCP header documented not to be terminated by an empty line (Mirek)
1403	- (Cz, Sk) "female" soft option to indicate voice gender
1404	- removed pseudo root dir "root" from the distribution
1405
14062.5.23 from 2.5.22	16.2.04
1407	- Win32 portability fixes, getcwd replacement, arch/version.h
1408	- the derived HTML documentation is no longer distributed
1409	- split epos.h off common.h
1410	- reorganized the hash table code
1411	- eposm is now noinst and displays an obsolescence notice
1412	- improved WELCOME and cfg/inv/README
1413	- due to an automake upgrade: AM_LDFLAGS instead of LDFLAGS
1414	- due to an autoconf upgrade: got rid of acconfig.h, quoting
1415	- renamed configure.in to configure.ac
1416	- configuration::get__sd_in/out() sockified access functions
1417
14182.5.24 from 2.5.23	5.9.04
1419	- reorganized struct unit data items to make the struct smaller
1420	- some fixes and workarounds for g++ 3.4 (Andreas Jochens)
1421	- mmsystem fix - loop on an active buffer
1422
14232.5.25 from 2.5.24	25.2.05
1424	- fastmatch initialization fixed to be linear in dictionary size
1425	- better error handling if fastmatch regex doesn't compile
1426
14272.5.26 from 2.5.25	26.2.05
1428	- morphoanalyzer fix - used to be confused by buffer space past the input
1429	- DO_PRINTs not allowed by a  make distcheck
1430
14312.5.27 from 2.5.26	 9.3.05
1432	- better error reporting for MBROLA voices when fed by the traditional segment string
1433	- fixed literal zero vs. absent char handling in syll and seg rules and some D_PRINTs
1434
14352.5.28 from 2.5.27	 8.4.05
1436	- binaries renamed to eposd, say-epos, gauge-epos; gauge-epos made noinst
1437	- default installation prefix changed to /usr/local
1438	- arch/unix/difftgz produces version-to-version diffs of Epos dists
1439	- fix: survive when a remote TTSCP server returns 0 bytes
1440	- fix: r-machac and r-violka were not configured
1441	- error reporting improvements
1442	- r_fail (to report cfg errors from within rules)
1443	- fix: a dph file selection was not selected for remote voices
1444	- FAQ started
1445	- preload_voices feature drops unusable voices at startup
1446	- encode_string refactoring towards UTF-8
1447	- fix: a_seg used to terminate prematurely after 2048 segments
1448	- select_local_soundcard() to choose e.g. between OSS and portaudio at startup
1449	- portaudio support (by Adam Nohejl)
1450	- Mac OS X port (by Adam Nohejl)
1451	- LPC and TDP synthesizers support LE inventories on big-endians (by Adam Nohejl)
1452	- regex moved to libs (may break some ports)
1453	- included portaudio to support Mac, --enable-portaudio to configure
1454	- say-epos option -z to print the TTSCP exchange
1455	- gcc 3.4 fix - moved Min/Max templates into nnet/vector.h (suggested by Karl Chen)
1456	- all files made root-owned and world-writable
14572.5.29 from 2.5.28	26.4.05
1458	- Latin language (the 4 prominent continental pronunciation standards)
1459	- fastmatch_substs made optional (and disabled by default) to speed up startup
1460	- some fixes for g++ 4.0 and 64-bit pointers (Andreas Jochens)
1461	- syll rule can now do general multilevel splits
1462	- fix: recode substs with the end-of-string marker $
1463	- minor error reporting improvements
1464	- trivi fix in configure.ac when --enable-portaudio=yes
1465	- reinit fixes
1466	- say-epos -r fixes
1467	- vrfy.cc broken up into automake-driven individual tests
1468	- Vogon language (unit testing infrastructure)
1469	- FAQ: report bugs by writing the tests
1470	- say-epos option -x to turn off the synthesis (transcribe only)
14712.5.30 from 2.5.29	24.5.05
1472	- Win fix: #define FORGET_PORTAUDIO 1
1473	- doc fixes (wrt default install path, PortAudio, Mac OS X)
1474	- r_absol reshaped as a hashing_rule
1475	- average phone length databases based on two corpora
1476		(affects mbrsyn voices for better or for worse)
1477
14782.5.31 from 2.5.30	25.5.05
1479	- Mac OS X (big endian) fixes
1480
14812.5.32 from 2.5.31	30.5.05
1482	- SAMPA (including alternates) supported as a regular encoding
1483	- all natural text buffers are now allocated with extra space for decoding
1484	- more refactoring towards UTF-8 support, needs just the routines now
1485	- fix: previously did not properly decode option values in TTSCP show
1486	- fix: uninitialized SAMPA decoder tables
1487	- doc fixes
1488
14892.5.33 from 2.5.32	20.6.05
1490	- fixed several TTSCP show command related bugs: segfaults, leading colons, omitted spaces
1491	- fixed unassigned external variables: segfaults
1492	- fix: settings associated with a headerless ulaw used to be permanent
1493	- fixed the behavior after some data connection writing errors (used to deadlock)
1494	- reinit fix when being started from root (all bugs reported by Adam Nohejl)
1495
14962.5.34 from 2.5.33	30.6.05
1497	- fix: one more deadlock (on errors while detaching waveform)
1498	- fix: response to some pseudoempty inputs
1499	- fix: appl 0 is now forbidden
1500
15012.5.35 from 2.5.34	 2.7.05
1502	- adjusted n_segs and betty.dph for tdi-based voices to cover recent segment additions
1503		(in machac.tdi and violka.tdi - upgrade those to the GPL'd versions)
1504	- fix: response to some pseudoempty inputs on big-endians
1505
15062.5.36 from 2.5.35	9.8.05
1507	- fix: DESTDIR support (Jeremy Huddleston)
1508	- fix: removed the unused and non-portable hash to hostent in hashi.cc
1509
15102.5.37 from 2.5.36	24.3.06
1511	- gcc 4.1 fix: extra qualification (Martin MichlMayr)
1512