0.16 Mon Feb 22 17:08:46 GMT 2010 - Don't seed a reply with a token which is too rare - Make the Word tokenizer split "example.com" into 3 tokens, while still keeping "3.14" as one token. Also accept ',' as a decimal point. - Various improvements to capitalization in the Word tokenizer - Don't run the ReadLine UI if --stats is supplied - Allow keeping the entire SQLite database in memory while running - Make that the default behavior to reduce IO - Declare undeclared File::Slurp dependency - Declare undeclared Test::Script dependency - Fixed utf8 problems with ReadLine UI - Optimize the SQL schema bit, which shaves about 10% off the size of the DB and cuts more than half of the time needed to generate a reply 0.15 Thu Feb 18 23:55:19 GMT 2010 - Allow specifying SQLite's cache size with --storage-args - Reduce likelhood of returning a reply which is identical to the input - Instead of depending on version "0" of most modules (i.e. any version) depend on the latest CPAN version. We know this works; but we have no idea if the older modules work. - Changed to word tokenizer so that it doesn't return whitespace tokens, instead returning a flag which dictatesthe whitespace policy of the token in question. Changed the default Markov order to 2 to compensate. - Fixed a bug with the DBD::* backends not retrieving the Markov order from an existing database - Removed Text::Trim dependency due to it not being acceptable for Debian - Learn from the input when using the ReadLine UI - Removed Test::Exit hard dependency for tests: Not in Debian yet - Added a --stats option to print some statistics about the brain 0.14 Sat Feb 13 17:07:30 GMT 2010 - Fixed a bug in the test suite preventing optional backends from being tested - All tests now use Hailo::Test, consequently backends now go through much more thorough testing. Lots of other test related since from 0.13. - utils/hailo-benchmark: Rewritten to use Hailo::Test, the benchmark is now more representive of actual Hailo usage. - Hailo->learn() can now take an arrayref 0.13 Sat Feb 13 09:19:52 GMT 2010 - Add missing .trn files to the test suite - Fix number of tests in t/storage/all.t 0.12 Sat Feb 13 08:55:25 GMT 2010 - If asked for a reply before we've learned anything, return nothing instead of spewing warnings - Issue #19: Ability to ->train() from filehandle as well as from a file - Re-enable t/bug/tokens-repeat.t test disabled in cc189bd7a2dc56561c71868f061307ee5068f904 - When replying to some input, pay more attention to rare tokens - Hailo::Storage::Mixin::Hash would inevitably die due to not importing uniq() - Allow Hailo->train() to take an arrayref, filename, or filehandle argument 0.11 Fri Feb 12 09:44:13 GMT 2010 - Corrected outdated documentation in some places - Fixed a problem with the SQLite backend not reading some information from an existing brain if reply() is called first - Fix --reply option, its argument was being ignored 0.10 Fri Feb 12 02:31:34 GMT 2010 - Normalized the SQL schema some more. This breaks compatability with old brains of course, but training/learning is quite a bit faster now. - Removed Hailo::Engine and moved most of its logic into the storage backends - Fixed module loader picking Perl::Flat when Perl was requested - Always return a reply, even when input tokens are unknown or missing 0.09 Thu Feb 11 02:36:49 GMT 2010 - Disable SQLite's journal while training. Speeds up long imports. - Add Perl::Flat backend which keeps things in a simple key-value hash where key and value are both Str. It can be subclassed to store data in e.g. BerkeleyDB, Cache or other key-value backends. - Add CHI backend with File, Memory, BerkeleyDB etc. backends - Use MooseX::Role::Strict instead of Moose::Role - Use Log::Log4perl for logging - SQLite broke if using a :memory: brain if a :memory: file existed - Use Module::Pluggable for finding plugins 0.08 Wed Feb 10 00:06:20 GMT 2010 - 0.07 broke the PostgreSQL and MySQL backend. Fixed them. - Made it less likely that non-SQLite backends will be broken in the future by moving the DB-specific SQL out of Pg.pm and mysql.pm into macros in SQL.pm - Use of $. in Hailo.pm broke file-based backends such as Cache.pm - Make MySQL docs copy-pasteable - Add a benchmark script as utils/hailo-benchmark 0.07 Tue Feb 9 15:23:44 GMT 2010 - Note: The storage backends for this release have been changed in such a way that it is incompatible with brains created by older releases - Add missing dependencies on Test::Script/MX::Getopt::Dashes - The Words tokenizer now compresses whitespace when tokenizing as well as whitespace-trimming the output it produces - Make start/end expressions only start/end sentences most of the time instead of all the time - Issue #13: `hailo -b brain' will launch an interactive ReadLine terminal - Don't exit() on print_version=> in run(), just return() - Add $VERSION to all .pm files - Use namespace::clean everywhere 0.06 Sat Jan 30 19:21:28 GMT 2010 - Construct SQL's dbd_options with lazy_build, not default. This makes it easy to add additional options in the individual storage engines. - Remove some dead code in Hailo::Storage::Perl - Explicitly disconnect sqlite's dbh / sth handles. This should fix some cpantesters FAILs we're getting which print "database is locked" errors. 0.05 Sat Jan 30 13:55:18 GMT 2010 - Shuffle key tokens and don't reuse them. Should make for more random replies. - Check for definedness of $self->brain in Hailo::Storage::* - Use autodie to catch open/close errors - Hailo->learn() was broken when print_progress was false - Add tests for Hailo invocation - Use MooseX::StrictConstructor 0.04 Fri Jan 29 17:48:49 GMT 2010 - You know that bug we talked about being fixed in 0.03? It was still there now it's actually fixed. - Use Class::MOP::load_class() instead of eval { require $str } to load plugins - Depend on Perl 5.10 - Added MySQL storage backend, don't use it. 0.03 Fri Jan 29 14:37:17 GMT 2010 - Fixed a fatal error in Hailo::Engine::Default that would inevitable occur on any large brain. When Hailo was given repeating input with such as [ qw(badger ! badger !) ] where the probability of all the given token following each other was 100% (i.e. there's nothing to break the loop) it would start generating infinitely long replies. This was fixed by adding a guard clause in Hailo::Engine::Default which breaks the loop if we're up to C<$order * 10> and the number of unique tokens in the reply is less than the model C<$order>. 0.02 Fri Jan 29 03:54:32 GMT 2010 - Fix typo in NAME in Hailo::Tokenizer::Words which caused the POD not to be displayed on search.cpan.org - Present options in --help output in reverse sort order - Add facility to pass arguments to storage/engine/tokenizer from the command line or via Hailo->new(). Make Hailo::Storage::Pg use this facility for its database connection arguments. - Fix spelling error in Hailo's POD - --reply on the command line didn't work 0.01 Fri Jan 29 00:39:54 GMT 2010 - First CPAN release