Imported Upstream version 0.2.12
[platform/upstream/libdatrie.git] / ChangeLog
index 50fb04f..2d87b42 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,593 @@
+2018-06-19  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       * configure.ac:
+         - Bump library revision to reflect code changes.
+
+       * NEWS:
+       === Version 0.2.12 ===
+
+2018-06-19  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Use HTTPS in URL
+
+       * README:
+         - Update document URL to HTTPS
+
+2018-06-14  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Cast (wchar_t *) to fix warnings in tests
+
+       "%ls" printf() format requires (wchar_t *) [aka int *] arg.
+       So, let's cast (AlphaChar *) [aka unsigned int *] to satisfy it.
+
+       * tests/test_walk.c:
+       * tests/test_iterator.c:
+       * tests/test_store-retrieve.c:
+       * tests/test_file.c:
+       * tests/test_nonalpha.c:
+       * tests/test_null_trie.c:
+         - Add <wchar.h> include, for wchar_t type
+         - Cast "%ls" args from (AlphaChar *) to (wchar_t *)
+
+2018-06-06  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Avoid non-ANSI C snprintf()
+
+       * tools/trietool.c (+full_path, prepare_trie, close_trie):
+         - 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-04  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Fix sscanf() string format
+
+       * tools/trietool.c (prepare_trie):
+         - Define b, e as unsigned int, as required by "%x" format.
+           Fixing warning from '-Wformat=' gcc option.
+
+2018-06-04  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Fix compiler warnings in tests
+
+       * tests/test_byte_alpha.c (main):
+       * tests/test_file.c (main):
+       * tests/test_iterator.c (main):
+       * tests/test_nonalpha.c (main):
+       * tests/test_null_trie.c (main):
+       * tests/test_store-retrieve.c (main):
+       * tests/test_term_state.c (main):
+       * tests/test_walk.c (main):
+         - Declare main function with 'main (void)'.
+           Fixing warning from '-Wstrict-prototypes' gcc option.
+       * tests/test_walk.c (main):
+         - Split long string, which required C90 compilers.
+           Fixing warning from '-Woverlength-strings' gcc option.
+
+2018-06-04  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Duplicate TrieChar string in more portable manner
+
+       * datrie/tail.c (tail_set_suffix, +tc_strdup, +tc_strlen):
+         - Replace cast strdup() with crafted implementation,
+           allowing TrieChar to be of larger size than char.
+           Fixing warning from '-Wint-to-pointer-cast' gcc option.
+
+2018-06-04  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Split long string
+
+       * tools/trietool.c (usage):
+         - Split help message which was too long and required C90 compiler.
+           Caught by '-Woverlength-strings' gcc option.
+
+2018-06-04  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Remove unused byte, word, dword typedefs
+
+       These are likely to conflict with other uses.
+
+       * datrie/typedefs.h (-byte, -word, -dword):
+         - Remove the unused typedefs
+
+       Thanks Peter Moulder for the patch.
+
+2018-06-04  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Rename TRUE/FALSE in Bool enum to avoid clash
+
+       Some other header file may have already define TRUE/FALSE.
+
+       * datrie/typedefs.h (Bool):
+         - Rename FALSE, TRUE to DA_FALSE, DA_TRUE respectively,
+           and define FALSE, TRUE macros only if they haven't been defined.
+
+       Thanks Peter Moulder for the patch.
+
+2018-06-04  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Declare argument-less functions with "(void)"
+
+       "f()" declaration form is K&R style, specifying that no information
+       about the number or types of parameters is supplied. This caused
+       warnings on '-Wstrict-prototypes' gcc option.
+
+       * datrie/alpha-map.h, datrie/alpha-map.c (alpha_map_new):
+       * datrie/darray.h, datrie/darray.c (da_new, symbols_new):
+       * datrie/tail.h, datrie/tail.c (tail_new):
+       * tests/utils.h, tests/utils.c (en_alpha_map_new, en_trie_new):
+         - Use "(void)" form in declaration
+         - Also use "(void)" form in definition, for consistency
+
+       Thanks Peter Moulder for the initial patch.
+
+2018-05-24  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Remove duplicate include
+
+       * tools/trietool.c:
+         - Remove duplicate include <config.h>
+
+2018-04-23  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Add missing include in test
+
+       * tests/test_byte_alpha.c:
+         - Add missing include for utils.h
+
+2018-04-23  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       * configure.ac:
+         - Bump library revision to reflect code changes.
+
+       * NEWS:
+       === Version 0.2.11 ===
+
+2018-04-21  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Fix reported segfault on full-range alpha map
+
+       * tests/Makefile.am, +tests/test_byte_alpha.c:
+         - Add test case
+       * datrie/alpha-map.c (alpha_map_recalc_work_area()):
+         - Redeclare trie_last as TrieIndex, to prevent overflow.
+
+       Thanks Xiao Wang for the report, and @nevermatch for the analysis.
+
+       Closes: #6
+       https://github.com/tlwg/libdatrie/issues/6
+
+2018-03-29  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Fix trie_state_get_data() at a prefix key
+
+       When getting data from a state which terminates a key that is
+       a prefix of another key, a terminator should be tried, so it
+       jumps from DA to TAIL, where we can get the data.
+
+       * tests/Makefile.am, +tests/test_term_state.c:
+         - Add a test case with {'ab', 'abc'} dictionary, which fails previous
+           code when retrieving data for key 'ab'.
+       * datrie/trie.c (trie_state_get_data()):
+         - Instead of simply checking for leaf state, which only caught a state
+           in TAIL, also try walking with a terminator when still in DA.
+         - Replace 'leaf state' with 'terminal state' in documentation,
+           for more clarity.
+         - Also return error on null state pointer.
+
+       Thanks Filip Pytloun from the pytries project for the initial patch.
+
+2017-09-06  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Revise description about search time complexity
+
+       * README:
+         - Clarify that search time is O(m), where m is the key length,
+           instead of O(1), while still claim that it's independent of
+           database size.
+
+       This closes #4.
+       https://github.com/tlwg/libdatrie/issues/4
+
+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-09-21  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Fix iconv() return value checking.
+
+       * tools/trietool.c (conv_to_alpha):
+         - Check iconv() return value against (size_t) -1, rather than
+           for its negativity, as size_t can be unsigned.
+
+       Thanks Daniel Macks for the report on Issue #3.
+       https://github.com/tlwg/libdatrie/issues/3
+
+2016-09-21  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.
+
+2015-10-20  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       * configure.ac:
+         - Bump library revision to reflect code changes.
+
+       * NEWS, configure.ac:
+       === Version 0.2.10 ===
+
+2015-10-13  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Optimize AlphaMap mapping.
+
+       alpha_map_char_to_trie() is called everywhere before trie state
+       transition. It's an important bottleneck.
+
+       We won't change the persistent AlphaMap structure, but will add
+       pre-calculated lookup tables for use at run-time.
+
+       * datrie/alpha-map.c (struct _AlphaMap):
+         - Add members for alpha-to-trie and trie-to-alpha lookup tables.
+       * datrie/alpha-map.c (alpha_map_new, alpha_map_free):
+         - Initialize & free the tables properly.
+       * datrie/alpha-map.c (alpha_map_add_range -> alpha_map_add_range_only
+         + alpha_map_recalc_work_area):
+         - Split alpha_map_add_range() API into two parts: adding the range
+           as usual and recalculate the lookup tables.
+       * datrie/alpha-map.c (alpha_map_clone, alpha_map_fread_bin):
+         - Call alpha_map_add_range_only() repeatedly before calling
+           alpha_map_recalc_work_area() once.
+       * datrie/alpha-map.c (alpha_map_char_to_trie, alpha_map_trie_to_char):
+         - Look up the pre-calculated tables instead of calculating on
+           every call.
+
+       This appears to save time by 14.6% for total alpha_char_to_trie()
+       calls and even lower its bottleneck rank by 1 rank on a libthai
+       test case. It reduces 0.2% run time of the total libthai test case.
+
+       Note that the time saved would be even more in case of multiple
+       uncontinuous alphabet ranges, at the expense of more memory used.
+
+2015-08-18  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Fix doxygen version checking.
+
+       * configure.ac:
+         - Correctly compare doxygen versions. Simple expr comparison
+           didn't work with version 1.8.10.
+
+       Thanks Petr Gajdos <pgajdos@suse.cz> for the patch.
+
+2015-06-24  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       * datrie/tail.c (tail_set_suffix):
+         - Catch strdup() failure.
+
+2015-06-24  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       * configure.ac: Post-release version suffix added.
+
+2015-05-03  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       * NEWS, configure.ac:
+       === Version 0.2.9 ===
+
+2015-05-03  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Use relative paths for symlinks.
+
+       * tools/Makefile.am, man/Makefile.am:
+         - Use relative paths for symlinks to avoid confusion in
+           installation with DESTDIR.
+
+2015-05-03  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Also install symlink for old trietool.
+
+       * man/Makefile.am:
+         - Add hooks to install/uninstall symlink for old man page.
+
+2015-05-02  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       * configure.ac:
+         - Bump library revision to reflect code changes.
+
+2015-04-29  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Bump doxygen required version.
+
+       * configure.ac:
+         - Bump doxygen required version to 1.8.8, according to recent
+           Doxyfile update.
+
+2015-04-21  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Fix infinite loop on empty trie iteration.
+
+       * tests/Makefile.am, +tests/test_null_trie.c:
+         - Add test case for empty trie iteration.
+
+       * datrie/darray.c (da_first_separate):
+         - Fix error condition after loop ending.
+
+       Thanks Sergei Lebedev <sergei.a.lebedev@gmail.com> for the report
+       via personal mail.
+
+       Original report: https://github.com/kmike/datrie/issues/17
+
+2015-04-12  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Document about alphabet size.
+
+       * datrie/trie.h:
+         - Add to doc comment a description on the alphabet size limit
+           and the mapped raw codes.
+
+       Thanks edgehogapp for the suggestion.
+       https://groups.google.com/forum/#!topic/thai-linux-foss-devel/U-O__IfviQ0
+
+2015-04-11  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Clarify Symbols' struct & methods.
+
+       * datrie/darray.c (struct _Symbols):
+         - Use TRIE_CHAR_MAX + 1 instead of hard-coded value for symbols[]
+           array size.
+
+       Thanks edgehogapp for the suggestion.
+       https://groups.google.com/forum/#!topic/thai-linux-foss-devel/U-O__IfviQ0
+
+       * datrie/darray.h, datrie/darray.c (symbols_new, symbols_add):
+         - Hide symbols_new() and symbols_add() for internal use.
+
+2015-03-06  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Update Doxyfile.
+
+       * doc/Doxyfile.in:
+         - Updated for doxygen 1.8.8 with 'doxygen -u'.
+
+2015-03-02  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Catch realloc failure.
+
+       * datrie/tail.c (tail_alloc_block):
+         - Check realloc() result on t->tails reallocation and return
+           failure code if failed.
+       * datrie/tail.c (tail_add_suffix):
+         - Check return value from tail_alloc_block() and return failure
+           code if failed.
+         - Update documentation.
+
+2015-03-02  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Catch realloc failure.
+
+       * datrie/darray.c (da_extend_pool):
+         - Check realloc() result on d->cells reallocation and handle
+           failure properly.
+
+2015-02-27  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Catch malloc failure.
+
+       * datrie/tail.c (tail_fread):
+         - Check malloc() result on suffix string and exit properly.
+
+2015-02-26  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       More micro-optimization with LIKELY/UNLIKELY.
+
+       * datrie/alpha-map.c (alpha_map_char_to_trie, alpha_map_trie_to_char):
+         - Use UNLIKELY() when checking for NUL character.
+
+2015-02-10  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Fix 'make distcheck' failure.
+
+       * doc/Makefile.am:
+         - Remove doxygen db file on clean.
+
+2015-02-10  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       More update of my e-mail address.
+
+       * man/trietool.1:
+         - Update my e-mail address.
+
+2015-02-10  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Rename trietool-0.2 utility to trietool.
+
+       * configure.ac:
+         - Check for ln -s
+       * tools/Makefile.am:
+         - Rename bin target from trietool-0.2 to trietool.
+         - Add hooks to install/uninstall symlink with old name.
+       * man/Makefile.am, man/trietool-0.2.1 -> man/trietool.1:
+         - Rename & update manpage accordingly.
+
+2015-02-06  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Micro-optimize with likely/unlikely hints.
+
+       * datrie/trie-private.h:
+         - Add LIKELY() and UNLIKELY() macros based on compiler extension.
+       * datrie/alpha-map.c
+         (alpha_map_new, alpha_map_clone, alpha_map_fread_bin,
+          alpha_map_add_range, alpha_map_char_to_trie_str,
+          alpha_map_trie_to_char_str):
+       * datrie/darray.c
+         (symbols_new, da_new, da_fread, da_get_base, da_get_check,
+          da_set_base, da_set_check, da_insert_branch, da_find_free_base,
+          da_extend_pool):
+       * datrie/dstring.c (dstring_new, dstring_ensure_space):
+       * datrie/tail.c
+         (tail_new, tail_fread, tail_get_suffix, tail_set_suffix,
+          tail_get_data, tail_set_data, tail_walk_str, tail_walk_char):
+       * datrie/trie.c
+         (trie_new, trie_fread, trie_enumerate, trie_state_new,
+          trie_state_walk, trie_state_is_walkable, trie_iterator_new):
+         - Use LIKELY() and UNLIKELY() where it is known to be so, mostly
+           for one-time initialization and failure handling.
+       * datrie/alpha-map.c, datrie/tail.c, datrie/tail.c:
+         - These are the files that need to include trie-private.h
+           because of this.
+
+       Callgrind says it does help speed up a little bit.
+
+2015-02-05  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Disable timestamp in Doxygen-generated doc.
+
+       * doc/Doxyfile.in:
+         - Set HTML_TIMESTAMP to NO to make the document reproducible.
+           (reported by Debian Reproducible)
+
+2015-02-01  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       * configure.ac: [Belated] post-release version suffix added.
+
+2015-02-01  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Update my e-mail address everywhere.
+
+       * AUTHORS, configure.ac, datrie/*.[ch], tests/*.[ch],
+         tools/trietool.c:
+         - Replace all mentionings of my e-mail address with the gmail one.
+
+2015-02-01  Theppitak Karoonboonyanan  <theppitak@gmail.com>
+
+       Fix binary file opening on Windows.
+
+       * datrie/trie.c (trie_new_from_file, trie_save):
+         - Add "b" to fopen() modes, so the binary file is opened properly
+           on Windows.
+
+         Thanks phongphan.p for the report and initial patch.
+
+2014-01-10  Theppitak Karoonboonyanan  <thep@linux.thai.net>
+
+       * configure.ac:
+         - Bump library revision to reflect code changes.
+
+       * NEWS, configure.ac:
+       === Version 0.2.8 ===
+
+2014-01-09  Theppitak Karoonboonyanan  <thep@linux.thai.net>
+
+       Improve documentation.
+
+       * datrie/triedefs.h:
+         - Refine descriptions of data types.
+       * datrie/trie.c (trie_iterator_new):
+         - Fix typo on trie_root() mentioning.
+       * datrie/trie.c (trie_store, trie_store_if_absent):
+         - Adjust wording.
+       * datrie/alpha-map.h, datrie/trie.h:
+         - Add detailed description of AlphaMap and Trie types.
+
+2014-01-08  Theppitak Karoonboonyanan  <thep@linux.thai.net>
+
+       Clarify message in test_nonalpha.
+
+       * tests/test_nonalpha.c (main):
+         - Clarify message on false key duplication.
+
+2014-01-08  Theppitak Karoonboonyanan  <thep@linux.thai.net>
+
+       Add test on keys with non-alphabet input chars.
+
+       * tests/Makefile.am, +tests/test_nonalpha.c:
+         - Add test to ensure that operations on keys with non-alphabet
+           input chars fail.
+
+2014-01-08  Theppitak Karoonboonyanan  <thep@linux.thai.net>
+
+       Fail trie operations on non-alphabet inputs.
+
+       alpha_map_char_to_trie() tried to return TRIE_CHAR_MAX to indicate
+       out-of-range error. But this value is indeed valid in trie operations.
+       Doing so could allow false key duplication when different non-alphabet
+       chars and TRIE_CHAR_MAX itself were all mapped to TRIE_CHAR_MAX.
+       So, let's fail all trie operations on non-alphabet input chars.
+
+       * datrie/alpha-map-private.h, datrie/alpha-map.c
+         (alpha_map_char_to_trie):
+         - Make alpha_map_char_to_trie return TrieIndex type, using
+           TRIE_INDEX_MAX to indicate out-of-range error.
+           This allows TRIE_CHAR_MAX to be returned as a valid output.
+       * datrie/alpha-map.c (alpha_map_char_to_trie_str):
+         - Fail if alpha_map_char_to_trie() returns error code.
+       * datrie/trie.c (trie_retrieve, trie_store_conditionally, trie_delete,
+         trie_state_walk, trie_state_is_walkable):
+         - Check return value from alpha_map_char_to_trie() and return
+           failure status on error.
+         - Also cast TrieIndex return values to TrieChar on function calls.
+
+       Thanks Naoki Youshinaga for the suggestion.
+
+2014-01-07  Theppitak Karoonboonyanan  <thep@linux.thai.net>
+
+       Check for NULL result from AlphaMap string funcs.
+
+       * datrie/trie.c (trie_store_conditionally):
+         - Return failure on NULL alpha_map_char_to_trie_str().
+
+2014-01-07  Theppitak Karoonboonyanan  <thep@linux.thai.net>
+
+       Return NULL on allocation errors in AlphaMap funcs.
+
+       * datrie/alpha-map.c
+         (alpha_map_char_to_trie_str, alpha_map_trie_to_char_str):
+         - Return NULL on malloc() error.
+
+2014-01-03  Theppitak Karoonboonyanan  <thep@linux.thai.net>
+
+       Fix edge case with TRIE_CHAR_MAX as TrieChar.
+
+       The trie input char with value TRIE_CHAR_MAX (255), was always
+       skipped by double-array algorithms. Let's include it.
+
+       * datrie/darray.c (da_has_children, da_output_symbols,
+         da_relocate_base, da_first_separate, da_next_separate):
+         - Include the last char in trie char iterations.
+
+       * datrie/darray.c (da_first_separate, da_next_separate):
+         - Declare characters as TrieIndex type instead of TrieChar,
+           to prevent infinite loop due to unsigned char overflow.
+
+       Thanks Naoki Youshinaga for the report, test case, and analysis.
+
+2013-10-25  Theppitak Karoonboonyanan  <thep@linux.thai.net>
+
+       Fix comiler warnings in tests.
+
+       * tests/test_walk.c (main):
+         - Remove unused var i;
+         - Remove extra printf() args.
+       * tests/test_iterator.c:
+         - Add missing #include for free().
+       * tests/test_walk.c (walk_dict), tests/utils.c (dict_src):
+         - Cast string literals to (AlphaChar *) to fix signedness
+           differences.
+
+2013-10-25  Theppitak Karoonboonyanan  <thep@linux.thai.net>
+
+       * configure.ac: Post-release version suffix added.
+
 2013-10-22  Theppitak Karoonboonyanan  <thep@linux.thai.net>
 
        * NEWS, configure.ac: