2021-12-21  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	* NEWS:
	=== Version 0.1.29 ===

2021-12-21  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-city.txt:
	* data/tdict-collection.txt:
	* data/tdict-common.txt:
	* data/tdict-ict.txt:
	* data/tdict-proper.txt:
	* data/tdict-science.txt:
	* data/tdict-slang.txt:
	  - Add words.

2021-09-18  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Handle possible malloc failures.

	* src/thbrk/brk-maximal.c (brk_maximal_do_impl, brk_recover_try):
	  - Handle cases where brk_pool_node_new() possibly returns NULL.
	    In both places, fail gracefully by behaving as if the dict state
	    were single there.

	Partially addresses Issue #15.

2021-09-18  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Fix typo in TIS-620 character name.

	* include/thai/tis.h:
	  - Fix typo TIS_[S]YMBOL_BAHT, with backward compatibility macro.

2021-08-31  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update Doxyfile for doxygen 1.9.1.

	* doc/Doxyfile.in:
	  - Apply 'doxygen -u'.
	  - Fix invalid PAPER_TYPE 'a4wide' to 'a4'.
	* configure.ac:
	  - Bump doxygen required version.

2021-08-31  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Apply 'autoupdate' for autoconf 2.71

	* configure.ac:
	  - Quote m4 strings in AC_INIT() parameters.
	  - Replace obsolete AC_PROG_LIBTOOL with LT_INIT. With this,
	    drop AC_LIBTOOL_WIN32_DLL, as we haven't really declared
	    dllexport anywhere yet.
	  - Replace obsolete AC_LIBTOOL_LINKER_OPTION() with
	    _LT_LINKER_OPTION(). Also quote an m4 string.
	  - Replace obsolete AC_HELP_STRING() with AS_HELP_STRING().
	  - Replace parameterized AC_OUTPUT() with AC_CONFIG_FILES()
	    and parameter-less AC_OUTPUT.
	  - Update AC_PREREQ() from 2.59 to 2.71.

2021-08-19  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-common.txt, data/tdict-spell.txt:
	  - Move "องคชาติ" from common to spell.

2021-08-19  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-common.txt:
	* data/tdict-district.txt:
	* data/tdict-geo.txt:
	* data/tdict-history.txt:
	* data/tdict-lang-ethnic.txt:
	* data/tdict-proper.txt:
	* data/tdict-science.txt:
	* data/tdict-slang.txt:
	* data/tdict-spell.txt:
	  - Add words.

2021-03-22  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Prohibit break between Thai/Alpha and Percent

	LB24 of UAX#14 prohibits break between AL and PO,
	and between PO and AL, without example. But cases like
	"ten%" can be found in the internet, and similar usage
	like "สิบ%" sounds sensible in Thai.

	* tests/test_thbrk.c (TestSamples):
	  - Add test case
	* src/thbrk/brk-ctype.c (_break_table):
	  - (THAI, NUM_NBB): _A -> _I
	  - (ALPHA, NUM_NBB): _A -> _I

2021-03-19  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Prohibit break between Currency and Alpha

	LB24 of UAX#14 prohibits break between PR and AL,
	and between AL and PR, without example. But some cases
	can be found from Wikipedia:
	  - Brazilian real (usually written as R$)
	  - Nicaraguan córdoba (usually written as C$)
	  - Other uses: Micro$oft, George Luca$, etc.
	https://en.wikipedia.org/wiki/Dollar_sign

	Similar usage is not clear for Thai.

	* tests/test_thbrk.c (TestSamples):
	  - Add test case, with "C++" to catch side-effect of PR and PR
	* src/thbrk/brk-ctype.c (_break_table):
	  - (ALPHA, NUM_CUR): _A -> _I
	  - (NUM_CUR, ALPHA): _A -> _I
	  - (NUM_CUR, NUM_CUR): _A -> _I

2021-03-15  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Prohibit break on the other side of parentesis

	LB30 of UAX#14 prohibits break in "(s)he" and "person(s)".
	The rule for Thai is more complicated. So, we only cover
	Latin for now.

	* tests/test_thbrk.c (TestSamples):
	  - Add test case
	* src/thbrk/brk-ctype.c (_break_table):
	  - (ALPHA, NBA): _A -> _I
	  - (CLOSE, ALPHA): _A -> _I

2021-03-09  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Prohibit break between Thai/Alpha and number

	LB23 of UAX#14 prohibits break between AL and NU, and between
	NU and AL. This makes sense for Latin. For Thai, prohibiting
	break between AL and NU makes sense for codes like "กข43"
	as a rice strain, but "40บาท" should still be broken.

	* tests/test_thbrk.c (TestSamples):
	  - Add test case
	* src/thbrk/brk-ctype.c (_break_table):
	  - (ALPHA, NUM): _A -> _I
	  - (NUM, ALPHA): _A -> _I
	  - (THAI, NUM): _A -> _I

2021-03-05  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Handle Latin acronyms

	LB29 of UAX#14 prohibits break between IS and AL for acronyms
	such as "e.g.", but this causes side-effects on other IS
	punctuations like comma, colon, semicolon as well. This leads
	to an error in case of ",ก" in Unicode LineBreakTest.txt
	as tested by Pango, which I think it makes perfect sense
	to allow break. So, I'm not trying to fix it, but try to
	extend acronym handling to cover Latin instead.

	* tests/test_thbrk.c (TestSamples):
	  - Add test case
	* src/thbrk/thbrk.c (th_brk_find_breaks):
	  - Rename 'thai_chunk' variable to 'chunk'.
	  - Move brk_op() lookup to after chunk handling.
	  - Adjust acronym handling to cover BRK_CLASS_ALPHA acronyms.
	  - Reset chunk pointers every time break class changes,
	    not just when entering Thai chunk.

2021-03-01  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Prohibit some breaks around number sign

	UAX#14 prohibits break within "#ก", which makes sense for
	hashtags, but its classification as AL would affect cases
	like "hello|สวัสดี". So, re-classify it as QUOTE instead.

	* tests/test_thbrk.c (TestSamples):
	  - Add test cases
	* src/thbrk/brk-ctype.c (_char_class):
	  - Change class of '#' from BRK_CLASS_ALPHA to BRK_CLASS_QUOTE.

	Partially addresses issue #6.

2021-02-22  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Prohibit break between right parenthesis and currency

	It's common to write "12๎๎฿" instead of "฿12". So, line break
	between right parenthesis and currency, such as in "(12)฿",
	should be prohibited similarly to the left-side form.

	* tests/test_thbrk.c (TestSamples):
	  - Add test cases
	* src/thbrk/brk-ctype.h (brk_class_t):
	  - Add BRK_CLASS_CLOSE to separate ')', ']', '}' from BRK_CLASS_NBB.
	* src/thbrk/brk-ctype.c (_char_class):
	  - Change class of ')', ']', '}' from BRK_CLASS_NBB to
	    BRK_CLASS_CLOSE.
	* src/thbrk/brk-ctype.c (_break_table):
	  - Insert row and column for CLOSE, with contents copied from NBB.
	  - Change (CLOSE, NUM_CUR): _A -> _P

2021-02-19  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Prohibit break between currency and left parenthesis

	In UAX#14, although LB18 (break after spaces) makes prohibited breaks
	between PR and {NU,OP} in LB25 equivalent to indirect breaks,
	the description of PR Property insists that it must be prohibited
	"even if a space character intervenes", with "$ (100.00)"
	as an example with no break opportunity. [1] So, we take them as
	prohibited breaks.

	[1] https://www.unicode.org/reports/tr14/#PR

	* tests/test_thbrk.c (TestSamples):
	  - Add test case as interpreted from UAX#14
	* src/thbrk/brk-ctype.c (_break_table):
	  - (NUM_CUR, NBA): _A -> _P

2021-02-18  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Prohitbit 2 break cases before percent

	In UAX#14, although LB18 (break after spaces) makes prohibited breaks
	between {NU,CL,CP} and PO in LB25 equivalent to indirect breaks,
	the description of PO Property insists that it must be prohibited
	"even if one or more space characters intervene", with "(12.00) %"
	as an example with no break opportunity. [1] So, we take them as
	prohibited breaks.

	[1] https://www.unicode.org/reports/tr14/#PO

	* tests/test_thbrk.c (TestSamples):
	  - Add test case as interpreted from UAX#14
	* src/thbrk/brk-ctype.c (_break_table):
	  - (NUM, NUM_NBB): _I -> _P
	  - (NBB, NUM_NBB): _A -> _P

2021-02-14  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Rewrite thbrk test for extensibility.

	* tests/test_thbrk.c:
	  - Rewrite to read and test from sample list.
	  - Encode samples in UTF-8 and convert them as required.

2021-02-14  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Simplify thbrk test.

	* tests/test_thbrk.c:
	  - Remove interactive mode.
	  - Continue testing, rather than exit, on failures.

2021-02-05  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Provide our own version of INSTALL instruction.

	* INSTALL:
	  - Explain simple installation steps and build requirements.
	* .gitignore:
	  - Remove INSTALL ignoring.

	This is to address a frequently found issue when
	'autoconf-archive' is missing, like in issue #9.

2021-01-28  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Another protection against invalid array access.

	In addition to commit 8e7ab6967f862a409352f7e8985fd4b445d37f4d.

	* src/thbrk/thbrk.c (th_brk_find_breaks):
	  - Protect against accessing pos[-1] which may be caused by
	    a failure in brk_maximal_do().

	Thanks Ratchanan Srirattanamet for the report via personal mail.

2020-08-16  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/Makefile.am, +data/tdict-currency.txt:
	  - Add new category.

	* data/tdict-city.txt:
	* data/tdict-common.txt:
	* data/tdict-district.txt:
	* data/tdict-proper.txt:
	* data/tdict-science.txt:
	* data/tdict-slang.txt:
	* data/tdict-spell.txt:
	  - Add words.

	* data/tdict-science.txt:
	  - Fix typo "อัลลอยด์" -> "อัลลอย".

2020-03-23  Ross Burton <ross.burton@intel.com>

	configure.ac: remove duplicate AC_CONFIG_MACRO_DIR

	Autoconf 2.70 will fatally error out if AC_CONFIG_MACRO_DIR is called
	more than once:

	| configure.ac:25: error: AC_CONFIG_MACRO_DIR can only be used once

	* configure.ac:
	  - Remove duplicate AC_CONFIG_MACRO_DIR

2020-01-14  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-city.txt:
	* data/tdict-common.txt:
	* data/tdict-district.txt:
	* data/tdict-geo.txt:
	* data/tdict-history.txt:
	* data/tdict-ict.txt:
	* data/tdict-lang-ethnic.txt:
	* data/tdict-proper.txt:
	* data/tdict-science.txt:
	* data/tdict-slang.txt:
	* data/tdict-spell.txt:
	  - Add words.

	* data/tdict-proper.txt, data/tdict-city.txt:
	  - Move "ลิเวอร์พูล" from proper to city.
	* data/tdict-proper.txt, data/tdict-history.txt:
	  - Move "เมจิ" from proper to history.

	* data/tdict-common.txt:
	  - Correct some sorting order.

2019-12-20  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Use GitHub issue tracker as bug report address.

	* configure.ac:
	  - Replace bug report e-mail address with GitHub issue tracker URL.

2018-12-17  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Split compound in dictionary.

	* data/tdict-std.txt:
	  - Split "ชิงช้าชาลี" into a new entry "ชาลี", as is the case in recent version
	    of Royal Institute dictionary.

2018-08-01  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	* NEWS:
	=== Version 0.1.28 ===

2018-08-01  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update README.

	* README:
	  - Use HTTPS in project URL.

2018-08-01  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update library versioning.

	* configure.ac:
	  - Bump library revision to reflect code change.

2018-08-01  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-city.txt:
	* data/tdict-common.txt:
	* data/tdict-proper.txt:
	* data/tdict-science.txt:
	* data/tdict-spell.txt:
	  - Add words.

2018-06-21  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Fix warning on comma at the end of enum list

	* src/thbrk/brk-ctype.h (brk_op_t):
	  - Remove comma at the end of enum list (-Wpedantic)

2018-06-14  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Adjust pointer declaration style

	* src/thbrk/brk-common.c (brk_load_default_dict):
	  - Adjust pointer declaration style for 'dict_trie'

2018-06-14  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Avoid non-ANSI C snprintf()

	* src/thbrk/brk-common.c (+full_path, brk_load_default_dict):
	  - Instead of preparing full path name with snprintf(), which is
	    non-ANSI, and still risks path name trimming, do it with
	    size-calculated malloc().
	  - free() it as needed.

2018-06-12  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-common.txt:
	* data/tdict-district.txt:
	* data/tdict-ict.txt:
	* data/tdict-proper.txt:
	* data/tdict-spell.txt:
	  - Add words suggested by @nuttee15 in issue #2
	    https://github.com/tlwg/libthai/issues/2#issuecomment-396442354
	    https://github.com/tlwg/libthai/issues/2#issuecomment-396456551
	    Thank you very much!

2018-06-12  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Add 2 words from new RI dictionary.

	* data/tdict-std.txt:
	  - Add 'กายินทรีย์' and 'กาเยนทรีย์' from new RI dict.

2018-06-12  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-city.txt:
	* data/tdict-common.txt:
	* data/tdict-district.txt:
	* data/tdict-geo.txt:
	* data/tdict-history.txt:
	* data/tdict-ict.txt:
	* data/tdict-lang-ethnic.txt:
	* data/tdict-proper.txt:
	* data/tdict-science.txt:
	* data/tdict-slang.txt:
	* data/tdict-spell.txt:
	  - Add words.

2018-05-31  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Add missing includes in header files.

	* include/thai/thwbrk.h:
	* include/thai/thwcoll.h:
	* include/thai/thwinp.h:
	* include/thai/thwrend.h:
	  - Add missing #include <thai/thwchar.h>

2018-01-08  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Move some entries in tdict-common to proper files.

	* data/Makefile.am, +data/tdict-slang.txt:
	  - Add file for keeping slangs.

	* data/tdict-common.txt:
	* data/tdict-ict.txt:
	* data/tdict-lang-ethnic.txt:
	* data/tdict-proper.txt:
	* data/tdict-science.txt:
	* data/tdict-slang.txt:
	* data/tdict-spell.txt:
	  - Move entries in tdict-common to more proper files.

2018-01-08  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-common.txt:
	* data/tdict-country.txt:
	* data/tdict-district.txt:
	* data/tdict-ict.txt:
	* data/tdict-lang-ethnic.txt:
	* data/tdict-proper.txt:
	* data/tdict-science.txt:
	* data/tdict-spell.txt:
	  - Add words.

	* data/tdict-history.txt:
	  - Replace "ลาลูแบร์" with just "ลูแบร์".

2017-10-25  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	* NEWS:
	=== Version 0.1.27 ===

2017-10-25  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-city.txt:
	* data/tdict-common.txt:
	* data/tdict-district.txt:
	* data/tdict-geo.txt:
	* data/tdict-history.txt:
	* data/tdict-ict.txt:
	* data/tdict-lang-ethnic.txt:
	* data/tdict-proper.txt:
	* data/tdict-science.txt:
	* data/tdict-spell.txt:
	  - Add words.

	* data/tdict-proper.txt:
	  - Correct order for some entries.

2017-08-07  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Strip prefix for C source files in doc

	* doc/Doxyfile.in:
	  - Append "@top_srcdir@/src" and "@top_srcdir@/tests"
	    to STRIP_FROM_PATH, so that references to source directories
	    in the generated document do not capture full build path.

	Defect caught by Debian Reproducible

2017-06-29  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Remove duplicated dict entry.

	* data/tdict-common.txt:
	  - Remove 'ดัมพ์' which is already in tdict-std.
	* data/tdict-common.txt:
	* data/tdict-spell.txt:
	  - Move 'ดั๊มพ์' from tdict-common to tdict-spell.

2017-06-29  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-city.txt:
	* data/tdict-common.txt:
	* data/tdict-district.txt:
	* data/tdict-geo.txt:
	* data/tdict-ict.txt:
	* data/tdict-lang-ethnic.txt:
	* data/tdict-proper.txt:
	* data/tdict-science.txt:
	* data/tdict-spell.txt:
	  - Add words.

2016-12-14  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	* NEWS:
	=== Version 0.1.26 ===

2016-12-14  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Include git-version-gen in tarball

	* Makefile.am:
	  - Add build-aux/git-version-gen to EXTRA_DIST.

2016-12-14  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Move word.

	* data/tdict-common.txt, data/tdict-ict.txt:
	  - Move 'แอดมิน' from tdict-common to tdict-ict.

2016-12-14  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-city.txt:
	* data/tdict-common.txt:
	* data/tdict-geo.txt:
	* data/tdict-ict.txt:
	* data/tdict-proper.txt:
	* data/tdict-science.txt:
	* data/tdict-spell.txt:
	  - Add words.

2016-07-09  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Move some uncommon compound names out of tdict-std dictionary.

	* data/tdict-std.txt, data/tdict-std-compound.txt:
	  - Move 'กระดองหาย', 'กระดาดขาว', 'นางรำ', 'นางหงส์'
	    to tdict-std-compound.

2016-07-08  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Move compounds out of tdict-std dictionary.

	* data/tdict-std.txt:
	  - Remove long compound 'ตะลึงพรึงเพริด'.
	  - Keep only 'สะพรึง' instead of 'สะพรึงกลัว'.
	* data/tdict-std.txt, data/tdict-std-compound.txt:
	  - Move compounds 'ตะลุ่มนก', 'ตากวาง', 'ตานนกกด' to tdict-std-compound.

2016-07-08  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Match git tag with version pattern.

	* build-aux/git-version-gen:
	  - Apply --match pattern to git-describe to prevent confusion
	    with other tags.
	  - Drop unused LF var.

2016-07-07  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Use versioning based on Git snapshot.

	* Makefile.am:
	  - Add dist-hook to generate VERSION file on tarball generation.
	* +build-aux/git-version-gen:
	  - Add script to generate version based on 'git describe'
	    if in git tree, or using VERSION file if in release tarball.
	* configure.ac:
	  - Call git-version-gen to get package version.

2016-06-28  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	* configure.ac, NEWS:
	=== Version 0.1.25 ===

2016-06-28  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-common.txt:
	* data/tdict-district.txt:
	* data/tdict-ict.txt:
	* data/tdict-proper.txt:
	* data/tdict-science.txt:
	* data/tdict-spell.txt:
	- Add words.

2016-06-27  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Document about multi-thread use.

	* src/thbrk/thbrk.c (th_brk_new):
	  - Add documentation about deleting after use, and about
	    creating/destroying word breaker instance in critical sections.

2016-06-26  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Use 'wc' prefix instead of suffix for wide-char word break APIs.

	To be consistent with other modules, wide-char APIs should be
	prefixed, not suffixed with 'wc'.

	* include/thai/thwbrk.h:
	* src/libthai.c:
	* src/libthai.def:
	* src/libthai.map:
	* src/thwbrk/thwbrk.c:
	* tests/test_thwbrk.c:
	  - Rename th_brk_find_breaks_wc() -> th_brk_wc_find_breaks().
	  - Rename th_brk_insert_breaks_wc() -> th_brk_wc_insert_breaks().

2016-06-25  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Rename the new APIs to be more meaningful.

	The methods for ThBrk I proposed to Mark Brown in our discussion
	were too confusing. Before they get public, let's pick more
	meaningful names instead:
	  - th_brk_brk()       -> th_brk_find_breaks()
	  - th_brk_brk_line()  -> th_brk_insert_breaks()
	  - th_brk_wbrk()      -> th_brk_find_breaks_wc()
	  - th_brk_wbrk_line() -> th_brk_insert_breaks_wc()

	* include/thai/thbrk.h:
	* include/thai/thwbrk.h:
	* src/libthai.c:
	* src/libthai.def:
	* src/libthai.map:
	* src/thbrk/thbrk.c:
	* src/thwbrk/thwbrk.c:
	* tests/test_thbrk.c:
	* tests/test_thwbrk.c:
	  - Rename functions as listed above.
	  - Rename the 'n' argument in the functions to indicate
	    whose size it describes.

2016-06-24  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Add function deprecation warnings.

	* include/thai/thailib.h:
	  - Add TH_DEPRECATED and TH_DEPRECATED_FOR() macros,
	    taken from GLib.
	* include/thai/thbrk.h (th_brk, th_brk_line):
	* include/thai/thwbrk.h (th_wbrk, th_wbrk_line):
	  - Apply TH_DEPRECATED_FOR() to deprecated functions,
	    with suggestions for alternatives.

2016-06-24  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update tests to test new APIs.

	* tests/test_thbrk.c (main), tests/test_thwbk.c (main):
	  - Create, use, and free ThBrk instance with the new APIs
	    instead of the deprecated ones.

2016-06-23  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update documentation for API deprecation.

	* src/thbrk/thbrk.c, src/thwbrk/thwbrk.c:
	  - Add info for deprecated functions.
	  - Add availability info for new functions.

	* src/thinp/thinp.c:
	  - Add availability info for th_validate_leveled().

	* src/libthai.c:
	  - Add missing link to th_validate_leveled().

2016-06-23  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update library versioning.

	* configure.ac:
	  - Bump library versions to reflect the added API.

2016-06-22  Mark Brown  <mark@mercurylang.org>

	Implement a new thread-safe interface for word break.

	To achieve more thread-safety without depending on mutex mechanisms,
	a new set of APIs is added so that the client can create
	a shared instance of word break engine by him/herself
	under appropriate mutex. Then, the word break functions
	can be safely called in parallel using the shared engine.


	* include/thai/thbrk.h:
	* include/thai/thwbrk.h:
	* src/libthai.c:
	* src/libthai.def:
	* src/libthai.map:
	  - Add new exported APIs:
	    th_brk_new(), th_brk_delete(),
	    th_brk_brk(), th_brk_brk_line(),
	    th_brk_wbrk(), th_brk_wbrk_line().

	* src/thbrk/brk-common.h, src/thbrk/brk-common.c
	  (-brk_on_unload, -brk_get_dict, +brk_load_default_dict):
	  - Remove old shared dict management. It's to be as part of
	    ThBrk implementation in ThBrk layer instead.
	  - The logic for finding and loading dictionary at
	    default paths is still retained here.

	* src/thbrk/thbrk.c (th_brk_new, th_brk_delete):
	  - Implement ThBrk (de)allocation, with dictionary loading
	    at specified path or at default paths if not specified.

	* src/thbrk/brk-maximal.h, src/thbrk/brk-maximal.c
	  (struct _BrkEnv, brk_env_new):
	  - Add ThBrk engine as a member of BrkEnv.
	* src/thbrk/brk-maximal.c (brk_root_pool):
	  - Access dict trie from ThBrk in BrkEnv instead of getting
	    shared dict directly.

	* src/thbrk/thbrk.c
	    (th_brk -> th_brk_brk, th_brk_line -> th_brk_brk_line):
	* src/thwbrk/thwbrk.c
	    (th_wbrk -> th_brk_wbrk, th_wbrk_line -> th_brk_wbrk_line):
	  - Modify old functions to new ones by adding ThBrk* parameter.

	* src/thbrk/Makefile.am, +src/thbrk/thbrk-priv.h,
	  src/thbrk/thbrk.c (brk_get_shared_brk, brk_free_shared_brk):
	  - Add functions for managing the shared engine to preserve
	    old behavior.
	* src/libthai.c (_libthai_on_unload):
	  - Call brk_free_shared_brk() on unload.
	* src/thbrk/thbrk.c (th_brk, th_brk_line):
	* src/thwbrk/thwbrk.c (th_wbrk, th_wbrk_line):
	  - Provide old APIs as wrappers to the new APIs,
	    for backward compatibility.

	Merging pull request #1.

2016-05-02  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-common.txt:
	* data/tdict-spell.txt: Add words.

2016-03-28  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Do not test word breaking if dict is disabled.

	* tests/Makefile.am:
	  - Only add test-thbrk.sh and test-thwbrk.sh to TESTS
	    when dictionary is enabled.

2016-03-03  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Get rid of unused variable.

	* src/thrend/thrend.c (tis620_0_shape_table_):
	  - Comment out unused variable reported by GCC 6.

2016-01-28  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Make source more readable.

	* src/thbrk/brk-common.c (brk_get_dict):
	  - Break assignment and comparison chain on reading
	    LIBTHAI_DICTDIR environment.

2016-01-20  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Fix compilation error with GCC 6

	* include/thai/thctype.h (_th_bitmsk):
	  - Use unsigned int instead of unsigned short for bitmask base,
	    as GCC 6 takes ~0 as -1 for unsigned short,
	    and causes compilation error for scim-thai.

	Thanks Martin Michlmayr for the report via Debian #811690
	http://bugs.debian.org/811690

2016-01-20  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	* configure.ac: Post-release version suffix added.

2015-11-22  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	* configure.ac:
	  - Bump library revision to reflect code changes.

	* configure.ac, NEWS:
	=== Version 0.1.24 ===

2015-11-22  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-city.txt:
	* data/tdict-common.txt:
	* data/tdict-proper.txt:
	* data/tdict-science.txt: Add words.

2015-11-22  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Fix infinite loop introduced by recent optimization.

	* src/thbrk/brk-maximal.c (brk_recover_try):
	  - Update 'pool' correctly when deleting matched BrkPool node.
	    brk_pool_delete_node() cannot be started at pool_tail indeed.

	Thanks Zack Weinberg for the report via Debian #805703
	http://bugs.debian.org/805703

2015-11-22  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	* configure.ac: Post-release version suffix added.

2015-10-22  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	* configure.ac:
	  - Bump library revision to reflect code changes.

	* configure.ac, NEWS:
	=== Version 0.1.23 ===

2015-10-21  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Update word break dictionary.

	* data/tdict-city.txt:
	* data/tdict-common.txt:
	* data/tdict-country.txt:
	* data/tdict-ict.txt:
	* data/tdict-lang-ethnic.txt:
	* data/tdict-proper.txt:
	* data/tdict-science.txt:
	* data/tdict-spell.txt: Add words.

2015-10-16  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Share BrkEnv longer.

	The code before the threadsafe commit used to initialize the
	free list earlier in th_brk() and then called brk_maximal_do()
	multiple times. This allowed the free list to be shared among
	all such calls. The threadsafe commit did it deep in
	brk_maximal_do_impl(), limiting the share within the single
	brk_maximal_do() call only. We should widen the use to be
	the same as previously done.

	* src/thbrk/brk-maximal.h (+brk_env_new, +brk_env_free):
	  - Re-add initialization/quit functions in terms of BrkEnv.
	  - Add BrkEnv* arg to brk_maximal_do().
	* src/thbrk/brk-maximal.c (brk_env_init -> brk_env_new,
	  brk_env_destroy -> brk_env_free):
	  - Turn the init/destroy functions into new/free version.
	* src/thbrk/brk-maximal.c (brk_maximal_do, brk_maximal_do_impl):
	  - Add the BrkEnv* arg and use it instead of the locally created
	    one.
	* src/thbrk/thbrk.c (th_brk):
	  - Create BrkEnv object at start and free it at end.
	  - Add the env arg to brk_maximal_do() calls.

	This appears to save more 2.4% of the total runtime and makes
	it on par with the code before the threadsafe commit again.

2015-10-14  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Call brk_pool_match() linearly.

	* src/thbrk/brk-maximal.c (brk_maximal_do_impl, brk_recover_try):
	  - Start next brk_pool_match() on node next to previously matched
	    one, instead of the pool head, making the match O(n) instead of
	    O(n^2).
	  - [brk_maximal_do_impl] Also prevent using the deleted node to
	    start the next round.
	  - [brk_recover_try] Also start brk_pool_delete_node() on the
	    pool tail, making it also linear. This is not possible for
	    brk_maximal_do_impl, as the node to be deleted is not fixed.

	This appears to save time by 8.85% on brk_pool_match() calls,
	lowering its bottleneck rank by 2 positions, and saves time by
	0.0388% of total run time.

2015-10-14  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Declare variable inside block.

	* src/thbrk/brk-maximal.c (brk_maximal_do_impl, brk_recover_try):
	  - Move "BrkPool *match" declaration into the block it's used.

2015-10-12  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Declare const arg for brk_pool_match().

	* src/thbrk/brk-maximal.c (brk_pool_match):
	  - Add const-ness to the read-only 'node' arg.

2015-10-11  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Minor optimization on brk_pool_match().

	Callgrind reports brk_pool_match() among top bottlenecks.
	So, try to optimize it as we can.

	* src/thbrk/brk-maximal.c (brk_pool_match):
	  - Instead of sharing the loop for two different cases,
	    check the case once and run loop for each case separately,
	    to minimize branching down to a single time.
	  - Evaluate the unchanged 'node->shot.brk_pos[node_cur_pos - 1]'
	    expression only once, instead of on every round.

	This appears to save time by 9.3% for total brk_pool_match() calls,
	and by 0.067% of total run time.

2015-10-11  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Fix 'make check' error on long path names.

	* tests/thsort.c (main):
	  - Increase file name buffers from 64 to 512, to afford long path
	    names in command-line arguments.

2015-10-10  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Replace static global free-list with local one.

	The static global free-list in brk-maximal.c makes it not
	thread-safe.

	* src/thbrk/brk-maximal.c:
	  - Add type BrkEnv to keep break pool free list, with
	    brk_env_init() and brk_env_destroy() methods.
	  - (brk_pool_node_new, brk_pool_node_free, brk_pool_free,
	     brk_pool_delete, brk_root_pool, brk_recover_try,
	     brk_recover):
	    Add (BrkEnv *) arg to relevant functions and use it properly.
	  - (brk_maximal_do):
	    Create and destroy BrkEnv instance for use locally.
	    Pass it to the required function calls.
	  - (brk_pool_delete -> brk_pool_delete_node):
	    Rename function to avoid confusion with brk_pool_free().

	* src/thbrk/brk-maximal.c:
	* src/thbrk/brk-maximal.h:
	* src/thbrk/thbrk.c:
	  - Get rid of now-unnecessary brk_maximal_init() and
	    brk_maximal_quit().

	Thanks Behdad Esfahbod for the report.

2015-09-07  Theppitak Karoonboonyanan  <theppitak@gmail.com>

	Fix doxygen version checking.

