- Completely rewrote the LearnHandler class (which handles all AIML parsing)
to be much less forgiving of incorrect AIML. Currently, any AIML errors
outside of "template" elements should be caught and reported at load-time.
AIML errors inside templates are still not detected until run-time.
- Added support for atomic 'person' and 'person2' tags (they implicitly use
'star' as their contents if none are provided).
- Oops; Kernel.respond() was DEFINITELY not thread-safe. Now it is, provided
you're using Python's standard 'threading' module. If not, you'll have to
provide your own mutual-exclusion system to ensure that only one thread
is calling Kernel.respond() at a time.
- Recursive tags ('srai' and 'sr') no longer add their intermediate results
to the input and output history.
- EXPERIMENTAL FEATURE: persistent sessions. If enabled using
Kernel.persistentSessions(True), session data will be written to disk
after every response. This lets session data be preserved when the
Kernel is destroyed, at the expense of a small performance hit (all
that extra disk I/O). The semantics of this feature may change in future
releases!
- Added support for the "id" tag (it returns the session ID).
- Added support for the "topic", "topicstar" and "thatstar" tags.
- Commented up the test.py file.
- Added a summary to the end of the Kernel.py self-test (since there are now
too many tests to fit on screen).
- Added support for multi-sentence input. The user's input is split into
individual sentences, each of which is treated as a completely separate
piece of input. I'm *pretty* sure this is the Right Way(tm).