1Revision history for Hailo 2 30.75 2018-11-28 12:08:58 4 5 - In 0.73 we very aggressively put "use v5.28.0" without any 6 need. My bad. It's now "v5.10.0" again. Also in a fit of "let's 7 just use the latest" all the dependencies were pinned to 8 whatever was the latest on the author's machine in that release, 9 now they're all back to "0". 10 11 Some stuff may break due to older CPAN modules, but let's just 12 find that out as we go. 13 140.74 2018-11-28 00:26:12 15 16 - Fix missing test dependency on Pod::Section. 17 - Use MooseX::Types::Moose internally. 18 - Remove a bunch of missing Mouse things from docs / script code / 19 build system. 20 210.73 2018-11-27 13:53:39 22 23 - Fully use Moose instead of now deprecated Any::Moose. 24 250.72 2013-12-01 17:06:55 26 27 - Our tests have been broken on perl 5.19.* (soon to become 28 5.20.*) for a while because of the new warnings about given/when 29 being experimental, which would fail one of the tests where we 30 weren't expecting extra output when testing our command-line 31 invocation. 32 33 But the whole use of given/when and ~~ in the codebase was just 34 a stupid youthful indiscretion, those features of perl suck, 35 this release kills all uses of them with fire in favor of just 36 using if/elsif and =~, which is all we used them for anyway. 37 380.71 2013-11-29 00:40:38 39 40 - Super minor release, just docs and nuking an old developer 41 script that wasn't even in the CPAN tarball. 42 43 - Bump README.pod with new content from lib/Hailo.pm's POD. 44 45 - Remove unused script that used Class::MOP to close RT #91029 46 ("New Moose may break your code") 47 480.70 2011-09-18 19:15:17 49 50 - When using --train-fast, remove the "flushing cache" message when done 51 52 - Word tokenizer: 53 * Improve tokenization of email addresses 54 * Use backspace instead of escape as a magic character when 55 capitalizing text in multiple passes, since it's less likely to 56 appear in tokens. 57 * Preserve casing of words like "ATMs" 58 590.69 2011-05-07 04:02:38 60 61 - Scored engine: Prefer shorter replies, like MegaHAL/cobe do 62 63 - Word tokenizer: 64 * Improve matching/capitalization of filenames and domain names 65 * Match timestamps as single tokens 66 * Match IRC nicks (<foobar>, <@foobar>, etc) as single tokens 67 * Match IRC channel names (#foo, &bar, +baz) 68 * Match various prefixes and postfixes with numbers 69 * Match "#1" and "#1234" as single tokens 70 * Match </foo> as a single token 71 72 - Depend on MouseX::Getopt 0.33 to fix test failures 73 740.68 2011-05-03 13:16:05 75 76 - Speed up the learning of repetitive sentences by caching more 77 78 - Added Hailo::Engine::Scored, which generates multiple replies (limited 79 by time or number of iterations) and returns the best one. Based on 80 code from Peter Teichman's Cobe project. 81 82 - Fixed a bug which caused the tokenizer to be very slow at capitalizing 83 replies which contain things like "script/osm-to-tilenumbers.pl" 84 85 - Speed up learning quite a bit (up to 25%) by using more efficient SQL. 86 87 - Add --train-fast to speed up learning by up to an additional 45% on 88 large brains by using aggressive caching. This uses a lot of memory. 89 Almost 600MB with SQLite on a 64bit machine for a brain which 90 eventually takes 134MB on disk (trained from a 350k line IRC log). 91 92 - Word tokenizer: 93 * Preserve casing of Emacs key sequences like "C-u" 94 * Don't capitalize words after ellipses (e.g. "Wait... what?") 95 * When adding a full stop to paragraphs which end with a quoted word, 96 add it inside the quotes (e.g. "I heard him say 'hello there.'") 97 * Make it work correctly when the input has newlines 98 990.67 2011-04-27 23:33:08 100 101 - Word tokenizer: Improve matching of Perl class names 102 103 - Require MooseX::StrictConstructor 0.16 for Moose 2.0 compatibility 104 1050.66 2011-04-27 07:37:45 106 107 - Die when the user tries --stats without a brain 108 109 - Word tokenizer: stopped matching numbers separately in many cases. 110 "95GB", "3D", "800x600" are all single tokens now. This should reduce 111 the volume of nonsensical word-number pairs in the output. 112 1130.65 2011-04-26 19:28:27 114 115 - Expand "~" and such in the brain filename argument. 116 117 - Word tokenizer: 118 * Recognize "e.g." and other abbreviations as single tokens. 119 * Recognize '–' as a word-separating dash. 120 * Put a full stop after words separated by dots, like "sources.list". 121 * Fix capitalization problems caused by "..." 122 * Capitalize "foo!" and "foo." 123 * Preserve casing of words such as "POE-Component-IRC" 124 * Catch "Acme::POE::Tree" as one word, and preserve its casing 125 * Catch "rollin'" as one word when it makes sense 126 * Catch 'foo-" as one word when it makes sense, and capitalize at 127 start of a sentence 128 * Capitalize quoted words at the start of a line 129 130 - The --help option didn't work with Moose >=1.25 (RT #67548). Fixed. 131 1320.64 2010-12-10 11:09:08 133 134 - Say "X lines of Y" instead of "X of Y" when training with 135 hailo(1). 136 137 - Bump README.pod in the distro to 0.59~1 138 1390.63 2010-12-09 09:03:30 140 - Mark the failing tests in t/command/shell.t as TODO for now. 141 1420.62 2010-12-06 03:30:07 143 - Really fix t/command/shell.t this time. I had the arguments to 144 the test function in the wrong order. 145 1460.61 2010-12-03 06:47:22 147 148 - Use Class::Load instead of Class::MOP::load_class and eval'd require() 149 150 - Fix rare test failure in t/command/shell.t 151 1520.60 2010-11-09 01:35:49 153 154 - Match email addresses and don't capitalize them 155 156 - Don't insert additional spaces in some parsing edge-cases 157 1580.59 2010-10-23 21:20:22 159 160 - Word tokenizer: Match combining characters in words on Perl >=5.12 161 1620.58 2010-10-22 03:34:08 163 164 - Forgot to remove "use Text::Unidecode;" from Words.pm after dropping 165 that dependency in the previous release. 166 167 - Skip utf8-text.t on Perl <5.12 due to differences in Unicode matching. 168 1690.57 2010-10-21 01:25:09 170 171 - Fix typo in Schema.pm which messed up the type of the token.text 172 SQL column (only relevant to non-SQLite DBs) 173 174 - More robust matching of non-word immediately following URIs 175 1760.56 2010-10-18 05:15:10 177 178 - Add Test::Expect and Test::Synopsis to TestRequires 179 180 - Use YAML::XS in utf8-text.t for clarity, and make the test 181 optional. 182 1830.55 2010-10-16 17:58:00 184 185 - Scrap the "normal word" matching constraint from the previous release. 186 It was failing to match words like "4.1GB", causing an infinite loop. 187 Instead, we now assign different spacing attributes to components of 188 conjoined words of varying types (e.g. recognizing that "4.1GB" is a 189 normal word ("4.1") followed by a postfix ("GB"). 190 191 - Don't match '>' as part of the URI in "<http://google.com>". 192 1930.54 2010-10-16 10:10:19 194 195 - Fix the previously broken `save_on_exit' so that it does what 196 it's supposed to do. 197 198 The `save_on_exit' option in Hailo.pm never worked, and nor did 199 hailo's corresponding --autosave option. Fixed that by 200 correcting some method name confusion, and solved a BUG by 201 finally adding a test for this option. 202 2030.53 2010-10-15 21:29:02 204 205 - hailo command: Fix off-by-one error when reporting the number of lines 206 learned when training. 207 208 - Don't truncate the brain file after loading it with in_memory enabled. 209 210 - Word tokenizer improvements: 211 * Recognize "´" as an apostrophe when matching words. 212 * Recognize a compound word like "anti-scientology" as a single word. 213 * Put additional constraints on where a "normal word" can be matched. 214 This enables it to match things like "3D" and "800x600" as single 215 words. 216 * Fix capitalization of words after sentences which end with dashed 217 words like "anti-scientology". 218 * Convert chunks to ASCII before looking for a URI to work around a 219 limitation in Regexp::Common. 220 * Recognize ssh:// (and foo+ssh://) URIs. 221 2220.52 2010-07-18 22:40:02 223 224 - Hailo no longer passes references to itself to its slave 225 classes, so it's garbage collected at the right time. 226 227 This bug broke the hybrid disk <-> in_memory SQLite mode, it's 228 now fixed again. The test that was supposed to check whether the 229 hybrid in-memory backend worked did the opposite of what it was 230 supposed to do, and didn't work anyway due to how it was set up. 231 232 - Giving arguments to Hailo's save method (they're passed to the 233 Storage class) never worked due to a trivial error. Now it does. 234 2350.51 2010-07-18 15:49:41 236 237 - Bump dependencies for all modules to the latest CPAN 238 versions. This avoids the issues Moose had with I<Can't locate 239 object method "add_method" via package "Moose::Meta::Role">, and 240 various other problems that might be present in older modules. 241 242 - MooseX::Getopt renames its help attribute to help_flag in 243 0.30. That broke hailo --help, work around it by checking if the 244 help_flag attribute exists in 245 any_moose('X::Getopt::GLD')->meta->get_attribute_list. By 246 checking we'll also be compatible if Mouse ever switches to the 247 new system. 248 249 - Mouse now supports MouseX::StrictConstructor, so we can delete 250 code that only used it if we were running under Moose. 251 252 - Put bin/hailo in package hailo, because Moose will whine about 253 not exporting sugar to main. 254 2550.50 2010-05-30 12:44:25 256 257 - Hailo hadn't been installed with the hailo command-line script 258 since release 0.34. Now it's built with MakeMaker::Awesome 0.08 259 with fixes this error. 260 261 - Fix the script compilation test in t/01_compile.t. Test::Script 262 renamed its script_compiles function to script_compiles_ok. 263 2640.49 2010-05-29 19:20:26 265 266 - Term::Sk fixed RT #57902 and RT #57903 which I reported. hailo's 267 progress bar now looks better as a result. 268 2690.48 2010-05-29 15:16:18 270 271 - The hailo(1) command-line interface now has a much better 272 interface. It now supports SQLite-like command syntax, and has a 273 built-in help system. 274 275 - Replace fortune(1) in hailo's --examples output with bot-training(1) 276 2770.47 2010-05-29 13:08:51 278 279 - Optimize Hailo::Tokenizer::Words to use less subroutine calls in 280 critical code. Changed the time being spent in that file from 281 5.14s to 3.72s out of a total runtime of 35.6s when running 282 t/hailo/real_workload.t. 283 284 - The initial tokenizer class is now saved as metadata to the 285 database, and loaded into Hailo from existing brains. 286 287 This means that this now works as expected: 288 289 hailo --brain db.sqlite --tokenizer Chars --train file.trn 290 hailo --brain db.sqlite --reply foo 291 292 I.e. Hailo will note that it used the Chars tokenizer in the 293 database, and load the correct tokenizer in the future. However 294 this will cause Hailo to die: 295 296 hailo --brain db.sqlite --tokenizer Chars --train file.trn 297 hailo --brain db.sqlite --tokenizer Words --reply foo 298 299 It spots that you've explicitly said you want a tokenizer that's 300 incompatible with the one in the database for doing replies and 301 dies. This is what it did before if you did the exact same thing 302 with the --order switch. 303 304 - Rename tests file in t/ to drop the DBD- prefix. Tests like 305 Words-*.t are were also moved into 306 sub-directories. e.g. Words/*.t. 307 3080.46 2010-05-27 22:47:45 309 310 - The Regexp::Common pattern added in 0.44 slowed down Hailo by up 311 to 45% in pathological cases (tests doing lots of 312 tokenization), overall test suite slowdown was closer to 10%. 313 314 Now the pattern is only compiled once for the lifetime of the 315 process with /o. This trick has also been applied to a few other 316 patterns. 317 3180.45 2010-05-27 19:56:31 319 320 - The regular expression introduced in 0.44 to check if a word was 321 of MiXeD CaSe was pathological. Changed it to a simpler one that 322 works better. 323 324 - The --no-progress option to hailo to suppress the progress bar 325 now works again. It had been broken since 0.26 at least. 326 3270.44 2010-05-27 15:55:30 328 329 - Removed the backwards-compatible "Pg" and "mysql" aliases for 330 the storage backends and the "DBD::" prefix. This use has been 331 deprecated since 0.31. Simply use "PostgreSQL", "MySQL" or 332 "SQLite" instead. 333 334 - This release contains improvements for the default Words 335 tokenizer. It's recommended that users rebuild their Hailo 336 brains when upgrading. See UPGRADING in the Hailo manual. 337 338 - Add URI support to the Words tokenizer. It will now use 339 Regexp::Common's URI regex to tokenize URIs as-is. 340 341 This improves performance a lot on input that contains URIs, 342 previously Hailo would split them up nonsensically, which 343 would inflate the token table a lot with little gain. 344 345 - Preserve the capitalization of words that change case in the 346 middle of the word. Examples include GumbyBRAIN, WoW, HoRRiBlE 347 etc. Previously these and others that weren't 100% upper-case 348 would all be lower cased. 349 350 - Preserve the capitalization of words that are all upper-case 351 followed by a non-word character followed by lower-case. This 352 preserves words like KIA'd, FYIQ'ed and other things that are 353 likely to be partial acronyms. 354 355 - Twitter names. I.e. tokens matching @[A-Za-z0-9_]+ will be 356 tokenized as-is. This ensures that Hailo users like 357 Bot::Twatterhose don't corrupt their Twitter names. 358 359 - Eliminate some redundant use of the regex engine in the Words 360 tokenizer. 361 362 - Include --help in bin/hailo's POD. It's now easier to read it 363 standalone, and `man hailo' has the same info as `hailo --help`. 364 365 - The utils/hailo-benchmark script had been broken for some time 366 due to a trivial API change in Hailo::Test. Now it works again. 367 368 - Stop pointing to the GitHub issue tracker in the 369 documentation. We now use RT instead. 370 3710.43 2010-05-11 19:54:36 372 373 - Tests failed on 0.42 without Test::Synopsis due to invalid test plan. 374 375 - Don't test with both Mouse and Moose on Windows. Failed with 376 Strawberry Perl + dmake, see report 377 07242729-b19f-3f77-b713-d32bba55d77f. 378 379 - Skip t/storage/001_meta/switch-order.t on OpenBSD where it's 380 known to fail, see report 07172161-b19f-3f77-b713-d32bba55d77f. 381 3820.42 2010-05-10 21:26:45 383 384 - Hailo should now work on Windows. Dependency on two modules that 385 had Windows failures in their dependencies has been dropped. 386 387 - Remove Term::ProgressBar dependency, use Term::Sk 388 instead. Unlike Term::ProgressBar it doesn't depend on 389 Class::MethodMaker and Term::ReadKey. Those contributed a lot to 390 our failures on Windows. 391 392 - Don't hard depend on Test::Expect. It depends IO::Tty which does 393 not work under any version of Windows, except under Cygwin (it 394 calls fcntl(*fd, F_DUPFD, 3)). 395 396 - Remove Test::Synopsis dependency. It depends on 397 Filter::Util::Call which had some failures. Now only used if 398 it's installed on the system already. 399 400 - Remove MouseX/MooseX::Types dependency. We don't use any of the 401 fancy type features, so there's no point in using this. 402 4030.41 2010-04-23 00:24:24 404 405 - Don't (optionally) use Sys::Prctl on Perl 5.13.0 and above. It 406 was made redundant in perl core commit 7636ea95c5 by yours 407 truly. 408 409 - A script to benchmark Hailo on different locally installed 410 perls. 411 412 - Correct test count for TEST_EXHAUSTIVE. 413 414 - Update HALBot on the Web link to http://bifurcat.es 415 4160.40 2010-04-13 15:10:23 417 418 - Add --reply-random to the hailo command-line interface. Allows 419 command-line babbling at random. 420 421 - Improved formatting for --train on the command line. Now outputs 422 how many lines/s were trained, e.g. "Trained from 11587 lines in 423 36.97 seconds; 313.40/" 424 425 - Fixed a bug on Mac OS X and probably some other 426 systems. Previously the SQLite code would assume that a file 427 that was `-s $file' was an empty database. 428 429 On Mac OS X these files weren't 0 byte but 1 byte files. Route 430 around this entire issue by creating a new API (->initialized) 431 that checks if the schema has really been created by doing a 432 query on the info table. 433 434 - Solved bug in the t/storage/DBD-SQLite-memory/babble.t test. The 435 test was skipped due to intermittent failures. Failures were due 436 to a programming error in the tests. 437 438 - DBD-SQLite-file-exhaustive-all.t is now run on 439 TEST_EXHAUSTIVE_ALL=1. Previously this test was unreachable. 440 441 - Add example utility to spew random names in random-names. 442 4430.39 2010-04-09 13:21:22 444 445 - Set the homepage field in META.yml to http://hailo.org 446 447 - Add TODO tests for the Words tokenizer. There are some 448 sub-optimal capitalization behaviors we'd like to fix. 449 450 - Use Prereq phases in Dist::Zilla. Hailo will have proper 451 Runtime/Test/Recommends dependencies when META.yml 2.0 comes 452 out. 453 4540.38 2010-04-03 18:15:17 455 456 - Clean up the code in Hailo::Engine::Default. It's now easier to 457 read and doesn't have duplication. 458 459 - Depend on IPC::System::Simple. Used by autodie to run 460 utils/hailo-benchmark-lib-vs-system 461 462 - Link to http://hailo.org and the freshmeat and ohloh pages for 463 hailo. 464 4650.37 2010-03-31 14:28:46 466 467 - Very minor release. Switch to using 468 Dist::Zilla::Plugin::MakeMaker::Awesome for the build tools. 469 4700.36 2010-03-29 00:15:35 471 472 - Add a test to try to smoke out a test failure we've been having 473 for a while. See the commit message for 474 21f68bd79d2fc59505887311042d6d16c5cf79dd for a very long and 475 boring explanation. 476 4770.35 2010-03-27 21:27:33 478 479 - The error "You've manually supplied an order of" error message 480 was always incorrect. It contained variables that weren't being 481 interpolated. 482 483 - Move some of our test data into the new Bot::Training dist. 484 485 - Fix 'v-string in use/require non-portable' warnings from a osx 486 smoker by using 5.010 instead of 5.10.0. 487 4880.34 2010-03-20 23:26:27 489 490 - Reword the UPGRADING section in Hailo's POD to be less 491 confusing. 492 493 - Die if the user manually specified an order that isn't 494 equivalent to the existing database he's loading from. 495 496 - Hailo now uses CPAN's RT as its default bugtracker instead of 497 GitHub's issue tracker. RT sucks but at least we can get at our 498 issues using something that isn't a web interface if we use RT. 499 500 - Link to our new website at http://hailo.github.com and mention 501 the Hailo web interface at http://www.dhdo.org in the POD. 502 503 - Enforce arguments being HashRef[Str] (instead of just HashRef) 504 in Hailo::Role::Arguments. 505 506 - Code cleanup in Hailo.pm to remove duplication. 507 5080.33 2010-03-20 01:57:33 509 510 - Optimize Hailo::Engine::Default to use less method calls. On 511 t/hailo/real_workload.t (i.e. mass replies) this speeds up Hailo 512 by 8%: 513 514 s/iter System Hailo lib Hailo 515 System Hailo 74.8 -- -7% 516 lib Hailo 69.4 8% -- 517 518 Furthermore replace the use of ->fetchall_hashref in a tight 519 loop with ->fetchall_arrayref. This sped up mass replies by 520 almost 60% (added to the 8% above): 521 522 s/iter System Hailo lib Hailo 523 System Hailo 68.2 -- -36% 524 lib Hailo 43.6 57% -- 525 526 But aside from selective benchmarking this made Hailo around 5% 527 faster in the common case: 528 529 s/iter System Hailo lib Hailo 530 System Hailo 21.5 -- -6% 531 lib Hailo 20.3 6% -- 532 5330.32 2010-03-19 12:00:22 534 535 - t/storage/dbd-options.t wasn't updated to take into account the 536 renaming of modules done in 0.31. It would fail on machines that 537 didn't have an older version of Hailo installed when running 538 `make test'. 539 540 - t/hailo/non_standard_plugin.t whines with `Issuing rollback() 541 due to DESTROY without explicit disconnect()' on some systems 542 since it doesn't use the Hailo::Test framework. 543 544 Issuing rollbacks at the right time is an open issue with 545 Hailo. I haven't been able to make it do the right thing by 546 sprinkling around destructors in the main code, that'll cause 547 things to be destroyed prematurely (probably some silly race 548 condition). 549 550 - Re-add Data::Section dependency. We need it for the 551 Words-utf8-text.t test. 552 5530.31 2010-03-18 21:45:25 554 555 - Optimization and cleanup release. Hailo is now much much 556 snappier and eats less memory. Here's how long it takes to run 557 the test suite before/after 0.30: 558 559 s/iter 0.30 Hailo 0.31 Hailo 560 0.30 Hailo 20.2 -- -16% 561 0.31 Hailo 16.9 19% -- 562 563 - Split out Hailo::Storage::* into Hailo::Engine::* and 564 Hailo::Storage::*. This makes it possible to write pluggable 565 engines again (that ability was removed in 0.09). It's the 566 intent to write a XS version of the Default engine to make Hailo 567 even faster. 568 569 - In addition the storage backends have been moved 570 around. Hailo::Storage::DBD is now just Hailo::Storage and 571 DBD::Pg, DBD::mysql and DBD::SQLite are now directly under the 572 Hailo::Storage namespace as Hailo::Storage::PostgreSQL, 573 Hailo::Storage::MySQL and Hailo::Storage::SQLite. 574 575 For now "Pg" and "mysql" as short names for the storage backends 576 are supported for backwards compatability but this support may 577 be removed in a future release. 578 579 - Rather than use the ad-hoc Data::Section + Template::Toolkit way 580 of generating our SQL just use an ugly pure-perl-based class. 581 582 Hailo now uses ~7.2MB of memory when starting up & replying 583 rather than ~10MB as it did before. The startup time is also 584 reduced from around 250ms to 140ms. 585 586 See http://blogs.perl.org/users/aevar_arnfjor_bjarmason/2010/03/benchmarking-dbixclass-vs-plain-dbi-on-hailo.html 587 for some of the other things that I tried before settling 588 on this hack. 589 590 - Don't manually use SQLite's `SELECT last_insert_rowid()' or 591 PostgreSQL's `INSERT ... RETURNING' in the engine. Instead use 592 DBI's `last_insert_id()' which uses those two automatically. 593 594 - Ditch Module::Pluggable: Hailo now can only load one of its 595 hardcoded core modules as a plugin or alternatively a foreign 596 module if it's prefixed with + before the module name. See 597 Hailo's main documentation for more info. 598 599 - Fix incorrect SYNOPSIS examples in the documentation for the 600 PostgreSQL, SQLite and MySQL backends. 601 6020.30 2010-03-15 15:18:01 603 604 - Don't set EXLOCK on temporary files we create. This completely 605 broke Hailo tests on platforms like FreeBSD which aren't as 606 promiscuous as Linux about file locking. 607 608 - Use Dir::Self in hailo/Hailo::Command to work around the 0.29 609 bug in t/command/shell.t on some platforms like FreeBSD where 610 IPC3::Run calling a script that called FindBin didn't work 611 as expected. 612 613 - Add more testing including a really basic test for DBIx::Class 614 debugging (from the dbix-class branch) and making TAP output 615 more verbose. 616 617 - Run all the tests Hailo::Test runs internally for each engine 618 one-by-one using the DBD::SQLite memory driver. This makes sure 619 the internal tests don't depend on each other in odd ways. 620 6210.29 2010-03-13 10:32:43 622 623 - Remove Data::Random as a dependency. It fails the most tests of 624 all the dists we depend on and we don't really need it for 625 anything. 626 6270.28 2010-03-13 10:05:57 628 629 - Update README.pod which hadn't been bumped since 0.25 630 631 - Fix example in Hailo.pm's SYNOPSIS that didn't work and add an 632 example for a bare ->reply(). 633 634 - Fix some code perlcritic whined about. 635 6360.27 2010-03-13 09:41:46 637 638 - Stop depending on Term::ReadLine::Gnu and use Term::ReadLine 639 instead. I tested Term::ReadLine once and found that it was 640 really bad (no history, C-p, C-n etc.) but now with 641 PERL_RL='Perl o=0' everything's magically awesome in it. 642 643 Term::ReadLine::Gnu was the #1 cause of our test failures so 644 it's good not to depend on it. 645 646 Also only set PERL_RL if it isn't set already. 647 6480.26 2010-03-13 08:04:32 649 650 - Split the X::Getopt parts of Hailo into Hailo::Command. This way 651 the speed / memory penalty of loading all the command-line 652 related modules is only applicable if running the command-line 653 interface. using Hailo takes 1MB less memory now and loads a 654 total of 56 modules instead of 74. 655 656 - Due to the split it was possible to rename the `brain_resource' 657 attribute to `brain'. The former is still provided for backwards 658 compatibility. 659 660 - A lot of miscellaneous cleanups in the code made possible by 661 splitting the core of Hailo from the command line UI. 662 663 - DEMOLISH was broken. it would build storage objects during 664 global destruction if they didn't exist. 665 666 - Add --examples switch to be used as --help --examples, examples 667 are now not part of --help by default since they took up most of 668 the terminal & obscured the option help output. 669 670 - A lot has been changed in the test suite. Below is a partial 671 summary: 672 673 - Test the ->run method in Hailo::Command completely. Previously 674 only a subset of its functionality was tested. The only thing 675 that isn't tested completely is the invocation of 676 Hailo::UI::ReadLine via ->run. 677 678 - Completely test the ->train and ->learn methods and make 679 ->learn() die on unknown input like HashRefs. 680 681 - Test the --help output. 682 6830.25 2010-03-12 17:45:42 684 685 - Improved documentation of the Tokenizer role and the DBD class 686 687 - Added more tests for the ReadLine UI 688 689 - Always run the Test::Script::Run tests 690 6910.24 2010-03-12 01:38:56 692 693 - Repository metadata was wrong due to RT#55136 in 694 Dist::Zilla::Plugin::Repository 695 696 - Add some very exhaustive tests for the storage engine. This 697 brings our test coverage up to 94.1% up from 92.5%. The tests 698 aren't run by default to to the time they take. 699 700 - Capitalize the first word of /^but...no/ 701 7020.23 2010-03-11 20:08:27 703 704 - Increase test coverage, coverage is now up to 92.5% 705 706 - Random reply tests were disabled for MySQL for no 707 reason. They're now enabled. 708 709 - Rewording the Hailo UPGRADE section 710 711 - Re-arrange the Storage::DBD* code to be more Moosy and use roles 712 as they should be used 713 714 - Remove dead test code in Hailo::Test that was used for flat hash 715 backends who couldn't generate random replies 716 717 - Test the ->ready() storage method on all backends as part of 718 Hailo::Test 719 720 - Test Hailo::stats() on all backends as part of Hailo::Test 721 722 - Test the bin/hailo script directly if Test::Script::Run is 723 available. 724 7250.22 2010-03-10 08:46:54 726 727 - A Bug in Dist::Zilla ruined 0.21. The unpacked tarball contained 728 home/avar/g/hailo/Hailo-0.21 instead just Hailo-0.21 at the top 729 level. 730 7310.21 2010-03-09 18:25:46 732 - Word tokenizer: Various improvements to capitalization 733 - Use Sys::Prctl to set legacy process name under Linux 734 - Added documentation about upgrading Hailo 735 - Hailo now uses Dist::Zilla instead of Module::Install to build 736 releases 737 7380.20 Sun Feb 28 00:29:32 GMT 2010 739 740 - Use Mouse instead of Moose by default but depend on both of 741 them. 742 743 This saves about 8MB of resident memory bringing Hailo's memory 744 usage with SQLite from 28MB to 20MB. Startup time is also 745 reduced with the test suite running around 46% faster. 746 747 - Run tests with Moose and Mouse during `make test` 748 749 - Drop MouseX::Role::Strict / MooseX::Role::Strict. Spotted when 750 switching to Moose but mainly we just didn't care about using 751 it. 752 753 - Word tokenizer: Improve punctuation when words are split with '/' 754 7550.19 Sat Feb 27 04:23:03 GMT 2010 756 - Move File::Slurp from 'requires' to 'test_requires' 757 758 - Make the default pragma logic a bit simpler 759 760 - MySQL backend: Don't make host a required storage_args argument, 761 MySQL will use localhost by default. 762 763 - MySQL backend: Document collation settings that have to be right 764 for Hailo not to blow up. 765 766 - Fix some capitalization/punctuation issues of words with dashes/quotes 767 768 - A new hailo-benchmark-replies utility and documentation in 769 Hailo.pm about its results. 770 7710.18 Fri Feb 26 05:02:17 GMT 2010 772 773 - Don't keep the brain in memory by default anymore, but enable some 774 safety-sacrificing performance optimizations instead 775 776 - DBD::SQLite backend: It's now possible to set any PRAGMA SQLite 777 supports at the start of the connection by supplying C<pragma_*> 778 parameters in in C<storage_args>. See 779 Hailo::Storage::DBD::SQLite documentation for more info. 780 781 - Issue #28: Implement a ready() method for backends. This 782 un-breaks the command-line interface with non-SQLite backends. 783 784 - Word tokenizer: Fix capitalization of the first word in some cases 785 786 - Add more exhaustive tests for the Word tokenizer. 787 788 - Un-break t/storage/DBD-mysql.t test 789 790 - Never test PostgreSQL / MySQL unless explicitly told to do so. 791 7920.17 Tue Feb 23 04:06:50 GMT 2010 793 - Remove all storage engines that weren't DBD::*. I.e. the Perl 794 backend and the flat Perl::Flat & CHI::* backends. 795 796 These backends were added to experiment with alternate backends, 797 but between them they had no redeeming quality aside from 798 increasing our number of backends & tests. The downside is that 799 we constantly had to deal with errors in these backends that 800 weren't present in our primary DBD::* targets. 801 802 - Remove Log::Log4perl. We weren't using it for anything except 803 printing one log line. Maybe we'll add it in the future with 804 proper support. See Issue #15. 805 806 - Hailo now uses less memory by lazy-loading various modules that 807 it previously loaded even if they were redundant. 808 809 - Issue #12: --not-a-valid-option now prints the same help output 810 --help would. MooseX::Getopt::Basic is evil and hard to override 811 so this is done with some hackery. 812 813 - Renamed Hailo::Storage::Mixin::DBD to Hailo::Storage::DBD, since 814 mixin is really a misnomer for this base class. 815 816 - Improved documentation including a new SYNOPSIS with examples. 817 818 - Error on training with an undef argument. 819 820 - t/storage/dbd-switch-order.t didn't clean up the tempfile it was 821 using. 822 823 - More capitalization improvements. 824 8250.16 Mon Feb 22 17:08:46 GMT 2010 826 - Don't seed a reply with a token which is too rare 827 - Make the Word tokenizer split "example.com" into 3 tokens, while still 828 keeping "3.14" as one token. Also accept ',' as a decimal point. 829 - Various improvements to capitalization in the Word tokenizer 830 - Don't run the ReadLine UI if --stats is supplied 831 - Allow keeping the entire SQLite database in memory while running 832 - Make that the default behavior to reduce IO 833 - Declare undeclared File::Slurp dependency 834 - Declare undeclared Test::Script dependency 835 - Fixed utf8 problems with ReadLine UI 836 - Optimize the SQL schema bit, which shaves about 10% off the size of 837 the DB and cuts more than half of the time needed to generate a reply 838 8390.15 Thu Feb 18 23:55:19 GMT 2010 840 - Allow specifying SQLite's cache size with --storage-args 841 - Reduce likelhood of returning a reply which is identical to the input 842 - Instead of depending on version "0" of most modules (i.e. any 843 version) depend on the latest CPAN version. We know this works; 844 but we have no idea if the older modules work. 845 - Changed to word tokenizer so that it doesn't return whitespace tokens, 846 instead returning a flag which dictatesthe whitespace policy of the 847 token in question. Changed the default Markov order to 2 to compensate. 848 - Fixed a bug with the DBD::* backends not retrieving the Markov order 849 from an existing database 850 - Removed Text::Trim dependency due to it not being acceptable for Debian 851 - Learn from the input when using the ReadLine UI 852 - Removed Test::Exit hard dependency for tests: Not in Debian yet 853 - Added a --stats option to print some statistics about the brain 854 8550.14 Sat Feb 13 17:07:30 GMT 2010 856 - Fixed a bug in the test suite preventing optional backends from 857 being tested 858 - All tests now use Hailo::Test, consequently backends now go 859 through much more thorough testing. Lots of other test related 860 since from 0.13. 861 - utils/hailo-benchmark: Rewritten to use Hailo::Test, the 862 benchmark is now more representive of actual Hailo usage. 863 - Hailo->learn() can now take an arrayref 864 8650.13 Sat Feb 13 09:19:52 GMT 2010 866 - Add missing .trn files to the test suite 867 - Fix number of tests in t/storage/all.t 868 8690.12 Sat Feb 13 08:55:25 GMT 2010 870 - If asked for a reply before we've learned anything, return nothing 871 instead of spewing warnings 872 - Issue #19: Ability to ->train() from filehandle as well as from 873 a file 874 - Re-enable t/bug/tokens-repeat.t test disabled in 875 cc189bd7a2dc56561c71868f061307ee5068f904 876 - When replying to some input, pay more attention to rare tokens 877 - Hailo::Storage::Mixin::Hash would inevitably die due to not importing uniq() 878 - Allow Hailo->train() to take an arrayref, filename, or filehandle argument 879 8800.11 Fri Feb 12 09:44:13 GMT 2010 881 - Corrected outdated documentation in some places 882 - Fixed a problem with the SQLite backend not reading some information 883 from an existing brain if reply() is called first 884 - Fix --reply option, its argument was being ignored 885 8860.10 Fri Feb 12 02:31:34 GMT 2010 887 - Normalized the SQL schema some more. This breaks compatability with old 888 brains of course, but training/learning is quite a bit faster now. 889 - Removed Hailo::Engine and moved most of its logic into the storage 890 backends 891 - Fixed module loader picking Perl::Flat when Perl was requested 892 - Always return a reply, even when input tokens are unknown or missing 893 8940.09 Thu Feb 11 02:36:49 GMT 2010 895 - Disable SQLite's journal while training. Speeds up long imports. 896 - Add Perl::Flat backend which keeps things in a simple key-value 897 hash where key and value are both Str. It can be subclassed to 898 store data in e.g. BerkeleyDB, Cache or other key-value 899 backends. 900 - Add CHI backend with File, Memory, BerkeleyDB etc. backends 901 - Use MooseX::Role::Strict instead of Moose::Role 902 - Use Log::Log4perl for logging 903 - SQLite broke if using a :memory: brain if a :memory: file existed 904 - Use Module::Pluggable for finding plugins 905 9060.08 Wed Feb 10 00:06:20 GMT 2010 907 - 0.07 broke the PostgreSQL and MySQL backend. Fixed them. 908 - Made it less likely that non-SQLite backends will be broken in 909 the future by moving the DB-specific SQL out of Pg.pm and 910 mysql.pm into macros in SQL.pm 911 - Use of $. in Hailo.pm broke file-based backends such as Cache.pm 912 - Make MySQL docs copy-pasteable 913 - Add a benchmark script as utils/hailo-benchmark 914 9150.07 Tue Feb 9 15:23:44 GMT 2010 916 - Note: The storage backends for this release have been changed in such 917 a way that it is incompatible with brains created by older releases 918 - Add missing dependencies on Test::Script/MX::Getopt::Dashes 919 - The Words tokenizer now compresses whitespace when tokenizing as 920 well as whitespace-trimming the output it produces 921 - Make start/end expressions only start/end sentences most of the time 922 instead of all the time 923 - Issue #13: `hailo -b brain' will launch an interactive ReadLine 924 terminal 925 - Don't exit() on print_version=> in run(), just return() 926 - Add $VERSION to all .pm files 927 - Use namespace::clean everywhere 928 9290.06 Sat Jan 30 19:21:28 GMT 2010 930 - Construct SQL's dbd_options with lazy_build, not default. This 931 makes it easy to add additional options in the individual 932 storage engines. 933 - Remove some dead code in Hailo::Storage::Perl 934 - Explicitly disconnect sqlite's dbh / sth handles. This should 935 fix some cpantesters FAILs we're getting which print "database 936 is locked" errors. 937 9380.05 Sat Jan 30 13:55:18 GMT 2010 939 - Shuffle key tokens and don't reuse them. Should make for more random 940 replies. 941 - Check for definedness of $self->brain in Hailo::Storage::* 942 - Use autodie to catch open/close errors 943 - Hailo->learn() was broken when print_progress was false 944 - Add tests for Hailo invocation 945 - Use MooseX::StrictConstructor 946 9470.04 Fri Jan 29 17:48:49 GMT 2010 948 - You know that bug we talked about being fixed in 0.03? It was 949 still there now it's actually fixed. 950 - Use Class::MOP::load_class() instead of eval { require $str } to load plugins 951 - Depend on Perl 5.10 952 - Added MySQL storage backend, don't use it. 953 9540.03 Fri Jan 29 14:37:17 GMT 2010 955 - Fixed a fatal error in Hailo::Engine::Default that would 956 inevitable occur on any large brain. When Hailo was given 957 repeating input with such as [ qw(badger ! badger !) ] where 958 the probability of all the given token following each other was 959 100% (i.e. there's nothing to break the loop) it would start 960 generating infinitely long replies. 961 962 This was fixed by adding a guard clause in Hailo::Engine::Default 963 which breaks the loop if we're up to C<$order * 10> and the 964 number of unique tokens in the reply is less than the model 965 C<$order>. 966 9670.02 Fri Jan 29 03:54:32 GMT 2010 968 - Fix typo in NAME in Hailo::Tokenizer::Words which caused the POD 969 not to be displayed on search.cpan.org 970 - Present options in --help output in reverse sort order 971 - Add facility to pass arguments to storage/engine/tokenizer from 972 the command line or via Hailo->new(). Make Hailo::Storage::Pg 973 use this facility for its database connection arguments. 974 - Fix spelling error in Hailo's POD 975 - --reply on the command line didn't work 976 9770.01 Fri Jan 29 00:39:54 GMT 2010 978 - First CPAN release 979