Revision history for Lucy

0.4.0  2014-08-21

  Bugfixes:

    * [LUCY-199] - Highlighting/excerpt on URLs
    * [LUCY-211] - MSVC 6 support
    * [LUCY-234] - Brittle object struct ABI
    * [LUCY-240] - Build Broken on clang
    * [LUCY-254] - Creation of Charmonizer temp files sometimes fails on
                   Windows
    * [LUCY-261] - Include paths for benchmark scripts
    * [LUCY-263] - MemoryPool's Release_All() should free
    * [LUCY-265] - Index lockfiles left behind

  New features:

    * [LUCY-250] - Add delete_by_doc_id to Lucy::Index::Indexer

  Tasks:

    * [LUCY-201] - Port CFC tests to C
    * [LUCY-212] - The "language" parameter to PolyAnalyzer#new is deprecated
    * [LUCY-214] - Port terminfo tests to C
    * [LUCY-222] - Port span tests to C
    * [LUCY-246] - Migrate Apache Lucy to Git
    * [LUCY-257] - Separate Clownfish from Lucy


0.3.3  2013-07-22

  Bugfixes:

    * [LUCY-239] - Simplify JSON Parser Y File
    * [LUCY-243] - Trap remove errno and warn
    * [LUCY-245] - Charmonizer fails to detect syntax for 64-bit integer
      literals
    * [LUCY-259] - Compensate for Perl export flakiness of to_utf8_lower

0.3.2  2012-07-05

  Bugfixes:

    * [LUCY-238] - Improve reliability of loading from JSON


0.3.1  2012-05-04

  Bugfixes:

    * [LUCY-213] - Explicit version number for each Perl module
    * [LUCY-216] - t/152-inversion.t failure
    * [LUCY-235] - Don't ship dev-only tests with CPAN tarball

  Tasks:

    * [LUCY-218] - Adapt codebase for TLP status


0.3.0  2012-01-15

  New features:

    * [LUCY-173] - Bundle Lemon parser generator
    * [LUCY-189] - Bundle utf8proc
    * [LUCY-191] - Unicode normalization
      The new analyzer Lucy::Analysis::Normalizer provides Unicode
      normalization, case folding and stripping of accents.
    * [LUCY-196] - UAX #29 tokenizer
      The new analyzer Lucy::Analysis::StandardTokenizer tokenizes according
      to the UAX #29 word break rules.
    * [LUCY-203] - Implement EasyAnalyzer
      EasyAnalyzer is simple analysis chain using the StandardTokenizer, the
      Normalizer, and the SnowballStemmer.

  Bugfixes:

    * [LUCY-175] - Missing stdarg.h breaks build
    * [LUCY-176] - More INCREF/DECREF symbol collisions under Windows
    * [LUCY-178] - Discriminate between stdio and POSIX in large file support
                   probing.
    * [LUCY-180] - ORQuery, ANDQuery, RequiredOptionalQuery optimizations
                   affect scoring
    * [LUCY-181] - Perl Documentation fix - Remove links to classes within
                   docs, that are not exposed to Perl
    * [LUCY-182] - highlighter bug when searching for duplicate terms [wordX
                   wordX]
    * [LUCY-183] - Eliminate spurious "extra" query normalization
    * [LUCY-185] - Improve error handling when required params not supplied
    * [LUCY-186] - Terminate connection from SearchClient properly
    * [LUCY-187] - Adapt to GC changes in Perl 5.15
    * [LUCY-188] - Highlighter should accept weighted Queries (Compilers)
    * [LUCY-193] - Occasional schema file name collision under 'truncate'
    * [LUCY-195] - Revisit pthreads linking on OpenBSD.
    * [LUCY-206] - Work around broken export in Perl 5.15.6

  Improvements:

    * [LUCY-142] - Port Clownfish compiler to C
    * [LUCY-143] - Convert Clownfish::Parser to Lemon
    * [LUCY-179] - Tighten UTF-8 validity checks.
    * [LUCY-197] - Clean whitespace for 0.3.0
    * [LUCY-204] - Process ClusterSearcher RPCs in parallel
    * [LUCY-205] - Parallel processing for SearchServer
      This introduces an incompatible API change: The port argument has moved
      from the constructor to the serve method and the password argument has
      been removed.

  Tasks:

    * [LUCY-133] - Eliminate JSON::XS dependency
    * [LUCY-134] - Eliminate Parse::RecDescent dependency
    * [LUCY-137] - Dependency licensing in grant code


0.2.2  2011-10-19

  Bugfixes:

    * [LUCY-175] - Missing stdarg.h breaks build
    * [LUCY-176] - More INCREF/DECREF symbol collisions under Windows
    * [LUCY-180] - ORQuery, ANDQuery, RequiredOptionalQuery optimizations
                   affect scoring
    * [LUCY-181] - Perl Documentation fix - Remove links to classes within
                   docs, that are not exposed to Perl
    * [LUCY-182] - highlighter bug when searching for duplicate terms [wordX
                   wordX]
    * [LUCY-183] - Eliminate spurious "extra" query normalization


0.2.1  2011-08-14

  Bugfixes:

    * [LUCY-174] - Filepath naming glitch breaks CPAN build process


0.2.0  2011-07-24

  Bugfixes:

    * [LUCY-152] - Bad prototype for MAKE_MESS when no variadic macros
                   available
    * [LUCY-153] - XSLoader version string mismatch
    * [LUCY-154] - Double-quote all #error directives
    * [LUCY-155] - TestFSFileHandle's Close() test on Windows fails to clean
                   up
    * [LUCY-157] - Add -pthread linker flag on OpenBSD
    * [LUCY-158] - Disable LockFreeRegistry test by default
    * [LUCY-160] - Always disable symlink tests on Windows
    * [LUCY-161] - Always use CreateHardLink() on Windows
    * [LUCY-162] - Use shell to redirect Charmonizer stderr on Windows
    * [LUCY-164] - Skip forking tests under Cygwin
    * [LUCY-165] - Line-ending-agnostic parsing of sample docs
    * [LUCY-166] - Prefer POSIX over windows.h for process ID
    * [LUCY-167] - INCREF/DECREF symbol collisions under Windows in
                   FSDirHandle.c
    * [LUCY-168] - Directory handling under Cygwin
    * [LUCY-172] - Clownfish should slurp files in text mode

  Improvements:

    * [LUCY-156] - Address GCC warnings for Charmonizer code
    * [LUCY-163] - Target Windows XP
    * [LUCY-169] - Improve cleanup after MSVC
    * [LUCY-170] - Charmonizer test compiles should use obj rather than exe
                   when possible
    * [LUCY-171] - Turn off stupid MSVC warnings

0.1.0  2011-05-20

  Initial release, adapted from a software grant for the KinoSearch codebase.

