0.2.12:
- More C90 (ANSI C) compliance.
- Prevent some compiling conflicts with other sources.
- Fix miscellaneous compiler warnings.
- Prevent trimming on extremely long dictionary path names.
0.2.11:
- Detect iconv() error more correctly in trietool.
- Clarify package description that search time is O(m), where m is
key length, not O(1), while still claiming that it's independent
of database size.
- Fix trie_state_get_data() on a prefix key.
- Fix reported segfault on full-range alpha map.
0.2.10:
- Correctly check doxygen version on configure.
- Optimization on AlphaMap mapping.
(contributing to 0.2% less run time for LibThai word breaking)
0.2.9:
- Fix binary file opening on Windows
- Fix infinite loop on empty trie iteration.
- Micro-optimization with LIKELY/UNLIKELY hints.
(contributing to 4.76% faster dictionary loading, 1.95% faster
word breaking for LibThai)
- Improved error handling
- 'trietool-0.2' utility is renamed to just 'trietool'
- Improved documentation
- No timestamp on Doxygen-generated doc
The actual fix as been done by "pkglint -F */*/buildlink3.mk", and was
reviewed manually.
There are some .include lines that still are indented with zero spaces
although the surrounding .if is indented. This is existing practice.
MASTER_SITES= site1 \
site2
style continuation lines to be simple repeated
MASTER_SITES+= site1
MASTER_SITES+= site2
lines. As previewed on tech-pkg. With thanks to rillig for fixing pkglint
accordingly.
Issues found with existing distfiles:
distfiles/eclipse-sourceBuild-srcIncluded-3.0.1.zip
distfiles/fortran-utils-1.1.tar.gz
distfiles/ivykis-0.39.tar.gz
distfiles/enum-1.11.tar.gz
distfiles/pvs-3.2-libraries.tgz
distfiles/pvs-3.2-linux.tgz
distfiles/pvs-3.2-solaris.tgz
distfiles/pvs-3.2-system.tgz
No changes made to these distinfo files.
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
0.2.8 (2014-01-10)
=====
- Fix compiler warnings in test suites.
- Fix edge-case error on alphabet set of size 255.
(Thanks Naoki Youshinaga for the report, test case, and analysis.)
- Fail trie operations on non-alphabet inputs, rather than silently allowing
them to sneak in as false keys.
(Thanks Naoki Youshinaga for the suggestion.)
- Improved documentation.
0.2.7.1 (2013-10-22)
=======
- Bump library versioning to reflect API addition.
(Change missing in previous release)
0.2.7 (2013-10-21)
=====
- Fix portability issue with non-GCC compilers.
[Thanks Gabi Daver for the report and fix (via Mikhail Korobov).]
- Fix compiler warnings.
- New utility API for comparing AlphaChar strings.
- Add test suites.
- Update doxygen doc generation.
0.2.6 (2013-01-23)
=====
- New API trie_state_walkable_chars() for breadth-first traversal.
- New class TrieIterator for callback-free enumeration.
- Improved performance on key enumeration.
- Improved AlphaMap range merging.
- Bug fixes.
[Many thanks to Mikhail Korobov for improvements in this version.]
Passing LIBS=-liconv will be result in unwanted libiconv linkage for libdatrie
(it is just required for trietool-0.2),
then it cause build failure of depending packages due to missing libiconv.
Passing sufficient iconv library to configure script with right way,
and it also fix build failure on other platforms for the case GNU iconv
from pkgsrc is preferred rather than builtin iconv.
0.2.4 (2010-06-30)
=====
- Close file on saving trie. [Bug report from Xu Jiandong]
- Add trie_store_if_absent() API which fails on adding duplicated key.
This is useful for preventing race condition in multi-thread applications.
[Suggestion from Dan Searle]
- Add trie_fread() and trie_fwrite() APIs for reading/writing trie data in
an open file, allowing trie to be embeded as part of a bigger file.
[Suggestion from NIIBE Yutaka]
0.2.2 (2009-04-29)
=====
- Support building with linkers without symbol versioning supports,
including Mac, Cygwin, MinGW.
- Support other iconv implementations than that's in glibc, for Mac and MinGW.
0.2.1 (2009-04-05)
=====
- Fix errors in documentation
- Symbol versioning to ease upgrade across SONAME
- Minor cleanups
0.2.0 (2009-03-24)
=====
- New APIs for performance: trie_state_copy(), trie_state_is_single()
- Clean-ups
0.1.99.2 (2008-12-15)
========
- More robust handling of alphabet ranges
- Allow co-existence with libdatrie0
0.1.99.1 (2008-12-12)
========
- Breaking ABI with libdatrie0
- More capacity with 32-bit node index
- Adjusted API for non-file trie usage
- All data in one file, no more *.br and *.tl split
- Drop SBTrie wrapper; all features are merged into Trie
- Domain characters are now Unicode
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.
datrie is an implementation of double-array structure for representing trie, as
proposed by Junichi Aoe.
Trie is a kind of digital search tree, an efficient indexing method with O(1)
time complexity for searching. Comparably as efficient as hashing, trie also
provides flexibility on incremental matching and key spelling manipulation.
This makes it ideal for lexical analyzers, as well as spelling dictionaries.