1.1tp3(Slatter) Released
2007.09.16 - RebeccaAIML 1.1tp3 (Slatter) Released.
This is a bug fix version with improved internationalization support.
See the userGuide for instructions
on upgrading. The bug fixes are
- Fixed a bug where escaped XML elements such as < > were
not operating correctly. This effected reversed aiml.
- Enhanced empty conditionals where they will now correctly
allow you to use an empty string for a condition and it will
return true if the predicate does not exist.
- Fixed a nasty bug where if you have multiple star's and multiple
users it would return an empty false positive string.
For international support, it has been improved upon within the
core engine and with the various programming languages that RebeccaAIML
supports. The fixes are
- Dialects will work with the eclipse plugin now. The fix was within
the core engine, so you only need to update RebeccaAIML and you won't
need to update your eclipse plugin
- The command line rs-admin tool now supports recieving dialects as
well as correctly processing and outputing dialects.
- Lastly, upper casing, lower casing, and formal'izing dialects will
work correctly
1.1tp2(Slatter) Released
2007.09.03 - RebeccaAIML 1.1tp2 (Slatter) Released.
Hot on the heels of the first tech preview, this tech preview brings
3rd party upgrades and two bug fixes. See the userGuide for
instructions on upgrading.
The 3rd party upgrades are
- Xerces 2.8.0
- Berkeley DB 4.6.19
- ICE 3.2.1
The two bugs fixed are
- Fixed a bug with the networking C++ api where
addDirectoryUnlessAlreadyAdded was calling the wrong
order of arguments
- Fixed a bug where the directory containing the
embedded database would not create its self if it was
on version of Windows XP which was not English based.
1.1tp1(Slatter) Released
2007.08.27 - RebeccaAIML 1.1tp1 (Slatter) Released.
This is a tech preview release to the upcomming (Slatter) series.
The Edmondson series has come to an end as well as some old mentalities
about AIML development as we know it.
This first tech preview release is only available underneath Windows.
However, I promise before the full release of 1.1, a Linux version
will be available.
Also, starting with this release RebeccaAIML will be
available with a dual licensing scheme. If you are developing
commercial applications based off of RebeccaAIML you will need
to purchase a commercial license. However, if you are
releasing your code underneath the GPL version 3 you can
use RebeccaAIML underneath that license.
Now that is out of the way, what does this new version 1.1tp1
offer everyone?
Well, just check out the userGuide for 1.1tp1
which describes each feature in great length with plenty of great
screen shots. Briefly though,
- A windows installer
- An Eclipse plugin for using Eclipse as an AIML editor
- An embedded database engine for all AIML processing
- Support for a multitude of programming languages such as
C++, C#, Java, and Python
- Excellent, fully documented, and easy to use
APIs for various programming languages
- Support for safe and concurrent multi-process access to AIML
- Support for safe and concurrent multi-threading access to AIML
- Includes command line tools to access and manipulate the AIML
embedded database
- Support for multiple users, multiple bots the users
can have, and multiple end users accessing the users' bots
- Scalability. RebeccaAIML can support an infinite number of users,
bots, and, end users as long as you have hard drive space for
more.
- Near zero start times. Regardless of your number of users,
bots, end users, RebeccAIML will restart in ~ 1 second.
- A configurable amount of memory. Utilizing the embedded database
tools you can configure how much memory RebeccaAIML will use for
caching as well as fine tune her from a small machine to a large
rack server.
- Server and client model included. RebeccaAIML starts as a service
and runs as a server in the background waiting for queries
0.9871 (Edmondson) Released
2006.09.07 - RebeccaAIML 0.9871 (Edmondson) Released.
I now include the executable, regression, in both the Windows
and Linux prebuilt packages. This is for downloaders to be
able to verify the quality of Rebecca for the version they
download.
If you are not interested in the regression test suite then
you do not have to worry about updating to this version. Other
than including the regression suite, this version is identical to
0.987.
I also added the regression test suite to the autoconf build system
where it builds it by default. This is for those who port RebeccaAIML
to another platform to be able to run regression tests to ensure the
quality of the port. Use
./configure --help
to see all the autoconf
options available.
Updated the code for the regression testing. It now uses header and
footer html files in resources/testing instead of having the html
hard coded. Fixed the html page breaks. I also improved it to be
dll boundary safe by having it use
Tag::instanceOf()
instead of dynamically casting through
dynamic_cast<>()
I also added an Arguments class to regression to enable a smooth
transition over to autoconf
0.987 (Edmondson) Released
2006.09.01 - RebeccaAIML 0.987 (Edmondson) Released.
Condition and Li were not handling empty string cases
correctly. See the latest
regression tests
in the documentation for the exact case (It's SETUP AND
TEST CONDITION PREDICATE test case at the bottom).
Li::getPredicateName() and Li::getAimlPattern()
are now const methods. This change will break abi compatiblity with anyone
using the framework but not api compatibility with the framework.
Those using the framework will have to recompile and relink
against this new version.
Added these methods to the framework on the class Li:
bool Li::isDefaultListItem()
It returns true if the Li is a default list item or not.
bool Li::isValueOnlyListItem()
It returns true if the Li is a value only list item.
bool Li::isNameAndValueListItem()
It returns true if the Li is a name and value list.
Added these methods to the framework on the class Condition:
bool Condition::isBlockCondition()
Returns true if this Condition is a block condition
otherwise it will return false.
bool Condition::isSinglePredicateCondition()
Returns true if this Condition is a single predicate
condition otherwise it will return false.
bool Condition::isMutliPredicateCondition()
Returns true if this Condition is a multi-predicate
condition otherwise it will return false.
Updated documentation for
GraphBuilder::callSystemCommand()
Removed the documentation about the bug aboug xsd not being validated.
I really should have removed this a long time ago, but it's
removed now.
See the doxygen See the documentation
for more details of these new methods and updates.
0.9861 (Edmondson) Released
2006.08.06 - RebeccaAIML 0.9861 (Edmondson) Released
Whenever topic was being set it was not calling srai's correctly.
This was due to a bad logging call.
0.986 (Edmondson) Released
2006.07.26 - RebeccaAIML 0.986 (Edmondson) Released
Fixed bug with
PlainWordImpl::trimToOneSpace()
where I was not checking if the size of a string was greater
than zero before using it.
Fixed a bug with srai where the star indexes were not being
calculated right during srai.
Fixed a bug where rebecca would not let go of her internal
AIML file and string caching system.
Upgraded the qtgui and tested it underneath QT 4.1.4
Added the Callback method
Callbacks::learnTagFileNotFound()
for when the AIML XML learn tag cannot find a file it will
call this callback. This will allow the programmer to handle
file not founds for AIML XML programmatically.
Added a new method
GraphBuilder::callSystemCommand()
which acts the same as calling the AIML XML tag "System" by sending the
command to the operating system and returning the output of
the command.
0.985 (Edmondson) Released
2006.05.07 - RebeccaAIML 0.985 (Edmondson) Released
Added autoconf support for Unix'es and Linux. Now
you can compile using
configure; make; make install
See the doc/linuxINSTALL.txt in the distribution for
information on how to utilize this.
Added an Arguments class to each sample. The purpose
of this is two fold. One is to show how you could
parse arguments when utilizing RebeccaAIML api and the
second is to make the installers of the samples
easier to write in the future.
The Arguments class now gives a few switches with each sample.
See the source code of each sample for the list of available switches.
However, you can type
console.exe -help
or
consoleAIMLHtmlConverter.exe -help
to get a list of the switches too.
Tweaked the source files to work with gcc 4.1.0
Added RPM support to the build. In the download section you should now
be able to download RPM's for Rebecca for several flavors of Fedora Core.
0.984 (Edmondson) Released
2006.04.10 - RebeccaAIML 0.984 (Edmondson) Released
Feature enhancement and bug fix release.
Added the feature of being able to add AIML strings to
Rebecca on the fly through the method
GraphBuilder.addString("aiml string")
You can add a whole category programatically as easily as:
builder.addString
(
"<category>"
"<pattern>test aiml string</pattern>"
"<template>it simply works!</template>"
"</category>"
);
Added the learn tag per AIML 1.0.1 specification.
Fixed the gender, person, and person2 tag implementations
to pass all of the regression tests.
Fixed the addFile and addDirectory to be tolerant of adding
files which are native to the file system. Before you could
at best portably use relative strings. Now you can use just
about any file system string for
GraphBuilder.addFile()
and
GraphBuilder.addDirectory()
As a result of this I was able to simply part of the qtGUI core to using
whichever native absolute paths that came from Windows or Unix.
See the documentation of these methods
for more details.
Charlix released
2006.04.04 - Charlix released
Charles Chevallier has released Charlix, a desktop assistant which has been tested
with RebeccaAIML. It is now added to the links
and users sections.
Check it out here
0.983 (Edmondson) Released
2006.04.04 - RebeccaAIML 0.983 (Edmondson) Released
Bug fix release.
I fixed a bug reported by Charles Chevallier where
when srai is called the input AIML tags behaved
incorrectly. To fix this bug I had to alter the signature
of
GraphBuilderFramework.checkedInfiniteLoopGetResponse()
It now has a new boolean argument variable
"keepPreviousUserInput". You set this to false if you
do not want the previous user input stored internally.
Usually you only want to set this to false when you call
this from implementations of the Srai AIML tag.
I fixed a bug reported by Charles Chaevallier where
when punctuation is at the begining of a Rebecca
Response it would cause her to crash.
I fixed a one-off error where I incorrectly indexed
some of the internal data structures and this would
cause a crash.
Made the stack operational thanks to a missing predicate
found by Ryan Neill.
Put in more bot properties (the most common ones), thanks
to Ryan Neill for pointing this out to me.
0.982 (Edmondson) Released
2006.03.19 - RebeccaAIML 0.982 (Edmondson) Released
I fixed a bug under Linux for the
GraphBuilder::addCustomTagLibrary
method. It would load the string given as soname.so when it
should have loaded it as libsoname.so.
I also fixed a bug reported by Charles Chevallier where
Rebecca was not erasing commas before storing strings into
her internal "that" variable. I added a regression test
case for it so the bug will not reappear.
I also fixed the "System" AIML tag to be able to return
the string now under both Windows and Linux. Now the
regression test for the "System" tag works!
0.981 (Edmondson) Released
2006.03.04 - RebeccaAIML 0.981 (Edmondson) Released
Added a new cross platform simple QT GUI to the samples
section to showcase how you would program a GUI with
the RebeccaAIML engine. You should be able to see
the screen shot at the top of the web page now.
Fixed a bug where when you call new and delete on
AIMLFacade or StringPimpl it would crash under Windows
if you were mixing and matching Debug and Release. Now,
new and delete are dll boundary safe.
Forgot to put .98 in VERSION .98 for the
GraphBuilderAIML::getVersion()
So, all resulting programs built using .98 will report
they are version .972 when they encounter the AIML XML Tag
"version". Fixed that in this version, it will say .981 when
the "version" tag is encountered.
0.98 (Edmondson) Released
2006.02.14 - RebeccaAIML 0.98 (Edmondson) Released
I opened up the RebeccaAIML framework in which you can
inherit from AIML XML Tag classes to add or modify the
current working set. You will need Boost C++ library
to use the framework. With the release of the framework
you can now add your own custom AIML XML Tag dll or shared
object in which you can change the functionality of the
engine. The framework is fully documented and I provide
a sample which overrides all the AIML XML Tags to provide
a html converter. It converts AIML XML files into html pages
with links. The html pages provide a way to "cruise"
through the AIML brain and see how the brain would look like
in memory.
You can see a sample of how the converter works by first
looking at this basic AIML file
aiml file
and the resulting html files from the converter,
html convertered
0.972 (Edmondson) Released
2005.11.27 - RebeccaAIML 0.972 (Edmondson) Released
Copy constructor of StringPimpl was not setting its
private implementation handle to 0 and when it was
called it would try to delete and in turn crash
RebeccaAIML.
I also changed the default precompiled windows
binary to be multithreaded dll instead of just
multithreaded.
0.971 (Edmondson) Released
2005.11.20 - RebeccaAIML 0.971 (Edmondson) Released
Enabled true multi-lined that's. Now Rebecca can pass
another regression test involving multi-lined that's. See
documentation for the regression test results.
Also now the "That" index's involving previous input's and
previous sentences works correctly.
0.97 (Edmondson) Released
2005.11.06 - RebeccaAIML 0.97 (Edmondson) Released
A new regression testing system has been put into place.
The regression test suite is that of ProgramD's. However,
in the future I will add more test cases which should work
for both the test regression suite here and for ProgramD's.
How that is accomplished is through the use of xml to define
the test cases. This is all from the work of Joel on ProgramD.
From the regression testing, I have found bugs and made more
fixes to this release. I also have found a few bugs which I will
fix in an upcomming release.
This release fixes yet another bug with the condition
tag. The condition tag before only accepted AIML tags
for the result of a succesful condition. Now regular text
can be added as well to the condition tag as it should be. I also
fixed up white space problems with this release as well as made
the exceptions of FileNotFound and DirectoryNotFound more verbose.
RebeccaAIML 0.96 (Edmondson) Released
2005.10.20 - RebeccaAIML 0.96 (Edmondson) Released
This release fixes a bug in which the AIML tag "Condition"
did not work at all. Also this release fixes the AIML.xsd.
Therefore, I have enabled Schema validation in this release.
With schema validation enabled, bad AIML tags will be reported
to their respective callbacks and the XML parser automatically
handles not adding bad AIML to the graph builder. Thus your
callbacks will alert you to bad AIML tags, and your graph builder
should still remain bullet proof. See the
documentation for
more details on XML callbacks through the class CallBacks.
0.951 (Edmondson) Released
2005.10.18 - RebeccAIML 0.951 (Edmondson) Released
A minor bug fix version.
Fixed the "muliti-lined that" bug. This bug was minor
but an annoyance. Whenver a "that" has more than one line
the last line should be choosen as the that.
0.95 (Edmondson) Released
2005.10.12 - RebeccaAIML 0.95 (Edmondson) Released
Initial release. All AIML tags are implemented except
for the "learn" Tag and the java script.
There is currently a bug with the AIML.xsd that does
not allow the AIML tag "Set" to validate correctly. So
for the time being I have removed the AIML.xsd validation
but will put it back as soon as that is fixed.