OAA2 Distribution history ------------------------- This is a summary of the most significant changes. Many small improvements and bug fixes are not listed. A possibly more up-to-date or more complete version of this file may be found here: http://www.ai.sri.com/oaa/distribution/v2.3/2.3.2/documentation.html#release -------------------------------------------------------------- Version 2.3.2 build 02: Changes from 2.3.2 build 01 -------------------------------------------------------------- New build of WebL.jar; fixes several issues with serialization -------------------------------------------------------------- Version 2.3.2 build 01: Changes from 2.3.2A release -------------------------------------------------------------- Note: For an existing agent that works with a 2.3.1 library, no code changes are needed to work with 2.3.2. Also, as with previous versions, the 2.3.2 facilitator can be used with agents based on (and running with) earlier versions of the libraries. Please see README_RUNTIME.txt for additional notes related to version compatibility. Java library ------------ oaaDisconnect now calls shutdown() or shutdownNow() on the ThreadPoolExecutor. Fixed IclStr float parsing bug. -------------------------------------------------------------- Version 2.3.2A: Changes from 2.3.1 release -------------------------------------------------------------- Note: 2.3.2A was an "internal" beta release in Feb. 2007, announced only within SRI. Open source ----------- Although OAA 2.3.1 was already "de facto" open source, the Web site and license blocks in the source files did not reflect that. This has been corrected, so that OAA is now fully and unambiguously open source, under the GNU Lesser General Public License. Communications -------------- Added support for using 'localhost' as the facilitator's hostname. An agent now has the ability to disconnect from a facilitator and later reconnect with the same identity. Client agents now exchange regular pings with the facilitator, to ensure that a dead connection is detected promptly. The pings are initiated by the agent that initiated the connection (normally the client agent). If an unintended disconnect is detected, the agent library will attempt to reconnect. This also works for direct-connect connections between client agents. Goal IDs (generated by agent library code) start from a random integer, rather than from 1. This fixes an issue, in 2.3.1 and before, where (in certain unusual situations) the replies to two solve requests could be intermixed by the facilitator. Message bloat - By default, now, the goal is not repeated in the messages (ev_solved messages) that reply to a solve request; a variable appears in that position. If needed for a legacy agent, the former behavior can be reinstated using the commandline/env. var./setup file parameter return_goal_with_solutions. Addressing & naming ------------------- The scheme by which agents are named, and come to know each others' names, is now more robust. In v. 2.3.1 and before, this led to facilitator failures, accompanied by the message "Unable to convert address to comm channel" in several different situations. This also yields greater flexibility and robustness in the way the facilitator hostname may be specified in setup files (i.e. as 'localhost', symbolic hostname, or numeric IP address). Java library: threading ----------------------- - lib/LibOaa uses a thread pool to process potentially blocking code; this pool is unbounded, but pauses for 100 ms when new tasks are added and there are > 10 unfinished threads (because this might indicate a possible non-terminating recursive-call situation). Java library: ICL ----------------- - icl/IclStr quoting changes - stores an unquoted value always and lazily determines the minimally quoted value - performs checking on the string to see if it needs to be quoted - this also removes quotes if they are deemed unnecessary - adds toMinimallyQuotedString(), toForcedQuotedString() and toUnquotedString() - toIdentifyingString() returns the unquoted string (although this should not be relied upon) - toString() returns the minimally quoted string - icl/IclStruct stores the functor as an IclStr internally - adds getFunctorAsTerm() which returns the IclStr representation of the functor and cannot be modified - hashcode changes to take into account children - uses IclStr.toMinimallyQuotedString() for getFunctor() - icl/IclTermCache adds getWithException(String s) to rethrow any parse exceptions that may occur - icl/IclTerm adds unifiesWith(IclTerm):boolean and unifyWith(IclTerm):IclTerm to check if a term unifies with another and to return the unification of a term with another (these are just convenience functions) - icl/IclTerm.replaceUnifying(IclTerm,IclTerm) returns int instead of void to indicate the number of elements replaced - icl/IclTerm.fromReader(Reader):List to generate a list of terms parsed from the given Reader (deprecated since it doesn't handle comments entirely correctly and may change in the future, but used by com/LibComUtils so must be public) - icl/Iclutils deprecate quoting functions - icl/IclUtils.generateSimpleUnifyingTerm(IclTerm):IclTerm returns an IclTerm that unifies with the given one - icl/ToString uses ToFunctor to get functor from Struct - icl/ToString uses IclStr.toMinimallyQuotedString to get String from IclStr - icl/ToWireString uses ToFunctor to get functor from Struct - icl/ToWireString uses IclStr.toMinimallyQuotedString to get String from IclStr - icl/IclDb uses ConcurrentHashMap instead of Hashtable; this should fix concurrent modifications to the database - icl/IclDb some minor refactorings of duplicate code Java library: miscellaneous --------------------------- - com/LibComUtils oaaResolveVariable parses setup.pl file a bit better (allowing for embedded newlines and end of line comments) - guiutils/OaaConnectDialog allows pressing enter to be equivalent to pressing OK button in the host or port field - simplefac/InterruptibleBuffer does early check for connectedness - simplefac term receiver subclasses use daemon thread - lib/LibOaa adds client side timeouts for direct connections that specify a time_limit param - lib/LibOaa add notion of inline callbacks, which are called within the OAA thread, and cannot do recursive oaaSolve calls (see oaaRegisterInlineCallback(String callbackId, OAAEventListener inlineListener):void - lib/LibOaa user callbacks (unless inline) get called in a separate thread from the OAA processing thread - lib/LibOaa reconnection work - add lib/Version to handle versioning manipulations - lib/LibOaa removes CAwaitedEventsVector and uses AwaitedEventContainer - lib/LibOaa removes pending events, since these cannot exist anymore - lib/LibOaa goal id generator starts from random number - lib/LibOaa can specify whether to run in a daemon thread - lib/LibOaa constructor no longer starts its thread in the constructor; use start() - lib/LibOaa move app_init callback call to oaaSetupCommunication since reconnecting allows oaaHandshake to get called multiple times for the same connection - lib/LibOaa resets the countdown latch - lib/LibOaa move important bits of continue_looping into run(), since continue_looping is no longer necessary after moving blocking code into a thread pool - lib/LibOaa allow delayed solutions to be returned from a callback in the thread pool - lib/LibOaa check for valid IclList of solutions in oaaReturnDelayedSolutions - lib/LibOaa implement cached solutions for normal code path - lib/LibOaa implement cached solutions for delayed solutions - lib/LibOaa throw exception in post_and_poll_until_event when hit within the OAA thread C library: miscellaneous ------------------------ - Add com_RemoveInfo - Add some const correctness to icl manipulations - Add non private quoting functions - Add icl_append_const_dyn_arry for adding to a const dynamic array - Add icl_RemoveUnifyingFromList - Add com_GetMatchingInfos to find info lists that have a matching entry - Add timer checking in libcom_tcp, so that periodic tasks can be run (besides user tasks) - Fix various memory leaks and memory corruptions - com/LibComUtils oaaResolveVariable parses setup.pl file a bit better (allowing for embedded newlines and end of line comments) - lib/LibOaa adds client side timeouts for direct connections that specify a time_limit param Debug agent ----------- GUI improvements Can press Enter when finished typing goal / question dialog for entering host/port - press in host/port dialog Shortcut key bindings have been provided for exiting (Alt-X), for focusing the ICL Request field (Alt-I), and for some menu items. StartIt agent ------------- Incorporated Java code donated by Mary Ellen Foster (thanks!), which provides Native Java ssh support. This relies on jsch.jar, which is now included in the release. (See src/licenses/LicenseInfo.txt for more info.) Monitor agent ------------- Fixed it so non-truncated line of log file can be viewed by double-clicking. -------------------------------------------------------------- Version 2.3.1: Changes from 2.3.1 prerelease -------------------------------------------------------------- Java library ------------ Added validity checking to args for IclStruct and IclVar. IclStruct will automatically quote functors; IclVar will throw an IllegalArgumentException for an inappropriate variable name string. Various bug fixes in the Java "wrapper" code. C library --------- Various bug fixes. StartIt ------- Further fixes related to "localhost" specification - now an agent should connect to a managed fac at "localhost" if the agent is local, or getHostName() if it's remote. -------------------------------------------------------------- Version 2.3.1 (prerelease): Changes from 2.3.0 -------------------------------------------------------------- Facilitator ----------- Works better with 'localhost' as the specified hostname. In particular, when all agents are on a single platform, connections are robust against changes in connectivity (e.g., switching from wired to wireless connection). Prioritization meta-agents are called now even when the list of solver agents is of length one. The following predicates are now recognized as ICL built-ins: var(_), nonvar(_), ground(_). Fix to message queuing problem, which would sometimes cause a socket to be reused with a new agent before the disconnect of the old agent was properly recorded. C library --------- oaalib.lib is now included in the OAA distribution, in the lib/win32 directory. Java library ------------ Now includes "wrapper" code to simplify some aspects of agent building. Documentation will be available here: http://www.ai.sri.com/~oaa/distribution/v2.3/doc/agents/ LibOaa.java: bug fix related to with how it loads classloader resources in multi-classloader environments like J2EE app servers. Improvements to ICL parsing routines. LibComTcpServerThread.java: Bug fix having to do with timing of handshaking messages. StartIt ------- Fixed to be more flexible in passing facilitator hostname to agents (so 'localhost' in particular can be passed). -------------------------------------------------------------- Version 2.3.0: Changes from 2.3.0 (Beta) -------------------------------------------------------------- C library --------- Now ready for use with OSX on the Macintosh. Java library ------------ Various bug fixes and cleanup of the API, primarily related to ICL parsing. New agent --------- The OaaTest agent is a utility for the automatic or semi-automatic scripted testing of particular agents or combinations of agents. Please visit here for more info: http://www.ai.sri.com/oaa/distribution/v2.3/doc/agents/oaatest/ Dotnetproxy agent ----------------- The dotnetproxyagent is now fully reentrant. This means .NET can call java, the java method can call back to another .NET method, the .NET method can call back to another Java method, etc. For every csharp thread, the proxy spawns a java thread which executes calls async. The calls are queued so it is gauranteed that each csharp thread will execute methods serially. Also, callbacks received in csharp are executed async. Also included are nunit tests which test data marshaling, and a test which performs reentrant calls multiple times. Also included are various bug fixes in data marshalling, as well as support for 2D arrays in csharp. Also, some of the csharp class names had to be changed in order to not conflict with java class names. Note that the proxy is backwards compatible with OAA2.3.0B. Also, reentrant capability can be turned off by the csharp application. Monitor agent ------------- Now can save OaaTest agent scripts, based on log files. (See above regarding this new agent.) Bug fix: eliminate crashes due to receipt of messages containing icldataq terms. Bug fix: wasn't pretty-printing events in log window (ev_solve displayed as oaa_Solve, etc). StartIt agent ------------- Bug fix: for crashing due to certain environment variables (a description of this problem and the solution was sent to oaa-users). -------------------------------------------------------------- Version 2.3.0 (Beta): Changes from 2.3.0 (Alpha) -------------------------------------------------------------- Windows build of C library and agents is now included, but C library isn't yet usable on the Macintosh. (It'll be ready to go in the full release.) Facilitator: bug fix to the new optional-solvable-type-declarations capability. New online documentation for StartIt, the dotnet library, and optional typing of solvables. Various additions, improvements, and clarifications in the other online documentation and distributed README files. Java library code: several (relatively) minor bug fixes. StartIt: several (relatively) minor bug fixes; several improvements to config files. Invocation scripts modified to work on the Macintosh. -------------------------------------------------------------- Version 2.3.0 (Alpha): Changes from 2.2.1 -------------------------------------------------------------- New libraries ------------- We now support the construction of agents written in .NET. This is done by means of a .NET assembly wrapper written in C# that communicates with a proxy agent written in Java, which in turn connects and registers with a facilitator. New platform ------------ Macintosh OSX support is now included, except for the C library. Binary and library files are in subdirectories called "mac-os-x". We expect the C library to be completed in the Beta release. Start-It -------- Start-It, the "control panel" agent, has been completely rewritten. It has many new significant features, is more robust, and can be used with ssh (whereas before it could only be used with rsh). All components -------------- There is an entirely new directory organization, which allows to avoid duplicate copies of libraries in the src and run-time hierarchies, and should be easier to work with for many different purposes. "Internal version" numbers are now in sync with "external version" numbers. (This would only be of interest to developers.) Facilitator ----------- New: optional argument typing specifications can now be associated with solvables, and, when present, will be considered in the facilitator's delegation decisions. Java library ------------ Bug fix in IclUtils.termParamValue(...) and IclUtils.intParamValue(...). ICL: bug fix in public boolean equals(AST t). ICL: bug fix for parsing negative numbers. C library --------- FLTK code now included with source distribution, and runtime distribution binaries have been brought up to date with the most recent FLTK code. Documentation (work in progress; not available with Alpha release) ------------- Developer's Guide: new material on icldataq and optional typing. Examples now given in several languages. Clarify the permissible forms of solutions. -------------------------------------------------------------- Version 2.2.1 -------------------------------------------------------------- Facilitator ----------- When shutting down, now closes all connections more gracefully. This should help to ensure that the facilitator's listen port gets released more promptly by the operating system. New build works with RedHat 8.0. Fixed the facilitator's backward compatibility module, so that it properly supports the use of agents built using OAA 1 libraries (such as the Perl and Lisp libraries). All libraries: ICL term parsing routines now support the infix use of the following operators: :- ; = : :: + - * / Prolog library -------------- Sicstus-generated executables no longer distributed for Solaris 5.6. Fix to ordering of incoming messages (related to version of samsort function used with Sicstus). Java library ------------ Added the old constructor (from v. 2.1.0) back to IclStruct for backwards compatibility. This constructor takes a Vector as input. Also for backwards compatibility, iclFunctor() once again returns an empty string instead of NULL. Previously, the local solve parameters and actual solve parameters were placed in the solve parameters list passed to the OAAEventListener interface, causing that list to contain two sublists. Now the two sublists are "flattened" into a single list. A new class, ToList, makes it possible to convert an IclTerm object into an IclList object, without having to use an explicit cast. This is a convenience for use with WebL. Improvements to ICL Term interface: Added generic IclTermTraverser abstract class for traversing an IclTerm's children. Added a class to generate a manually constructed IclTerm from a String. Added isAtomic() and isComposite() methods to IclTerm. Changed composite terms to take a List instead of ArrayList in constructor. Changed IclTerm.iterator() and IclTerm.listIterator() to always return a valid iterator. log4j and concurrent (the open-source Java packages) have been "unbundled" from oaa2.jar. That is, it now is built and loaded as a separate jar file. src removed; jar file distributed. antlr (the open-source Java package) has been "unbundled" from oaa2.jar, and renamed to antlr-oaa.jar. The renaming reflects the fact that the OAA source distribution includes modifications to several of the antlr source files. xerces - removed altogether Java Agents ----------- Corrected version number and/or copyright date that are displayed by certain agents, for the Help/About menu command. Fixed the Help command in StartIt. Cleaned up calls to deprecated functions. Updated weather agent script (yahooweather.webl) to accommodate recent HTML changes on the Yahoo site. -------------------------------------------------------------- Version 2.2.0 -------------------------------------------------------------- ---------------------------------- NEW AGENT INCLUDED IN DISTRIBUTION ---------------------------------- Alarm agent: Implements time triggers for all agents connected to the same facilitator. See http://www.ai.sri.com/~oaa/distribution/distribv2/doc/agents/alarm Note: the "Attain" natural language agents, which were included in release 2.1.0, are not included with release 2.2.0. They are still available, however, here: http://www.ai.sri.com/~oaa/contributions/ -------------------- GENERAL IMPROVEMENTS -------------------- Except as noted, the general improvements described below apply to the facilitator and all language libraries (Java, C, Prolog). Application agent code that works with version 2.1.0 should still work with 2.2.0 libraries. In using the Java and C libraries, you may see some deprecation warnings, and it is recommended that the appropriate changes be made. ------------------ New "direct connect" capabilities for oaa_Solve requests To support more efficient exchange of large messages and rapidfire messages between agents, the prolog library now supports a nearly transparent means of enabling direct exchange of messages associated with oaa_Solve requests. That is, oaa_Solve requests and their responses can now be routed directly between the requester and provider, rather than going through the facilitator. At present this is only supported for the case of a single provider. When direct_connect(true) is included in the Params of the requester's call to oaa_Solve, library code contacts the facilitator to determine what providers are available. If there is only one provider, and if that provider is listening on a socket, the requester opens a connection and communicates directly with the provider. If a provider address is already known to the requester, and is specified in the Params list, along with direct_connect(true), the facilitator is not contacted at all. These "peer to peer" connections are kept open so that a series of direct_connect requests to the same provider can be dispatched rapidly. When passing goals that contain large data, the bandwidth employed in contacting the facilitator can be minimized by specifying a "goal template", which contains variables in the positions that would normally contain data. ------------------ More efficient encoding of messages between agents ICL terms can now be encoded in a more compact form when transmitted between agents (across sockets), allowing for quick parsing by the message recipient. In 2.2.0, this form of encoding will only be used when "direct connect" is used between agents implemented using Java and/or C. In future releases, this encoding will be adopted for all communications, including those going through the facilitator. ------------------ Binary data now supported in ICL expressions In the past, ICL, like Prolog, has offered only a single primitive string type, called an "atom". This has been limiting in two respects. First, both Quintus and Sicstus Prolog implementations limit the length of an atom to 64K. Second, in translating to and from languages, such as lisp, which distinguish between symbols and strings, we have not been able to maintain this distinction in ICL expressions. To address these limitations, ICL now includes a double-quoted string type, which has no length limit. In addition to using double quotes, it is also necessary to enclose the string in an 'icldataq' functor, like this: icldataq(".....") (We'd have preferred not to require the functor, but it's unavoidable at present, given the way Prolog works, and the vendor libraries upon which the facilitator depends.) Within the double quotes, any sequence of bytes is allowed, including null characters. (Double quote characters are escaped by doubling them.) ------------------ Optimization of large data messages Additional support for exchange of large data sets is provided by allowing application agent code to write the data directly onto the stream, when a request or response message is transmitted. This is accomplished by using the parameter icl_goal_writer/2 with oaa_Solve (in the requester), and using icl_solution_writer/2 as the return value of the do_event callback procedure (in the provider). This can be used with or without the use of direct_connect. ------------------ New parameter for oaa_Solve: provider_limit(N). This instructs the facilitator to select at most N providers (solvers) to handle the given goal. This is especially useful with direct_connect. ------------------ New library procedures (in all libraries), further minimizing the amount of code needed in agent wrappers: oaa_SetupCommunication oaa_Connect ------------------ Documentation: The Developer's Guide now includes examples in Java and C (as well as Prolog) ------------------------------- IMPROVEMENTS TO THE FACILITATOR ------------------------------- Optimization of incoming message queue code minimizes time spent in maintaining the queue; allows for faster throughput of messages. New command line argument (-output_file filename) telling the facilitator to write all output and error messages to the given file. (Under Unix, this is no different than using ">& filename" on the command line.) New code makes it more meaningful and more robust to call oaa_Solve in the facilitator (for instance, as part of a trigger action, or as part of the body of a "rule"). Consequently, the use of "rules" with data solvables, declared on the facilitator, is now more fully supported. This results in a significant expansion of how the facilitator can be used by other agents, as described here: http://to_be_provided Com library: Several changes made to bulletproof against too many connections coming in. Facilitator now accepts parameter "max_connections". Refinement of on_port_exception options (specification of behavior desired when the facilitator is unable to access a particular port). -------------------------------- IMPROVEMENTS TO THE JAVA LIBRARY -------------------------------- New ICL parsing code, based on the public domain package "antlr". Considerably faster and more robust than earlier versions. Inclusion of 2 open source packages: antlr (See www.antlr.org/) log4j (See http://jakarta.apache.org/log4j/) More efficient management of incoming messages and outgoing messages, resulting in considerable improvements in speed and memory requirements. Bug fix. This bug caused deadlock when an agent waited on several synchronous responses, and the responses came back in the "wrong" order. A wide variety of minor bug fixes and optimizations. ----------------------------- IMPROVEMENTS TO THE C LIBRARY ----------------------------- New ICL parsing code, based on the public domain package "pccts". Considerably faster and more robust than earlier versions. Bug fix. Under Linux, a setup file line longer than 512 bytes could cause a segmentation fault. The possibility of seg fault has been eliminated. However, note that under this fix, setup file lines longer than 1024 will be ignored. Bug fix. This bug caused deadlock when an agent waited on several synchronous responses, and the responses came back in the "wrong" order. Various memory leaks and memory corruption bugs corrected. Improved portability. A wide variety of minor bug fixes and optimizations. Documentation: New source code documentation, generated by Doxygen. ---------------------------------- IMPROVEMENTS TO THE PROLOG LIBRARY ---------------------------------- New functionality in com module: on_connect_exception options. A variety of behaviors can now be specified for situations in which an agent attempts to connect to a facilitator, and the connection can't be opened. New library procedure (for convenience): 2 argument version of oaa_Declare Minor reorganization of library files. Various minor bug fixes. -------------------------------------------------------------- Version 2.1.0 : September 2001 -------------------------------------------------------------- NEW AGENTS (oaa_shell, eliza, attain): OAA_SHELL: A utility and debugging tool for sending requests and queries to a facilitator, from the (Unix or DOS) command line. See http://www.ai.sri.com/~oaa/sri-private/distribv2/doc/agents/oaa_shell ELIZA: an OAA-wrapped version of Viren Patel's Prolog implementation of the classic AI program, which simulates the conversational capabilities of a psychotherapist. See http://www.ai.sri.com/~oaa/sri-private/distribv2/doc/agents/eliza ATTAIN: a set of Natural Language Understanding agents, based on SRI's Gemini system. Note: source code is not provided; just binaries. For this release, binaries are only provided for Sun/Solaris. ATTAIN is a package of natural language OAA agents which provides translation of English sentences into ICL messages that other agents can use. Thus, this package plays a similar role to that of the DCG-NL agent, but uses SRI's industrial strength Gemini parser. ATTAIN produces a more expressive ICL representation than that produced by DCG-NL, and brings several other advantages as well. For example, one practical advantage of ATTAIN is that the inflected forms of regular nouns and verbs (e.g. singular/plural, past tense), come for free with Gemini, whereas they have to be entered manually in the DCG nl agent. See http://www.ai.sri.com/~oaa/sri-private/distribv2/doc/agents/attain Note: none of these new agents is included in the StartIt config file; they are to be invoked from the command line, as described on their documentation pages. Also, the new natural language agent (ATTAIN) is not set up for use with the demo information agents (weather and employee DB). In future releases, we hope to have these new agents integrated more fully into the distribution. -------------------- Improvements to the prolog library : Refined and extended the way in which data callbacks (callbacks with ID app_on_data_change) and data triggers are tested for firing. In particular, data callbacks are now provided for solvables with and without bookkeeping (previously only with). In cases where multiple data elements are removed by one command, data triggers are now fired individually for every element removed or replaced. Increased flexibility in dealing with port availability. When a client agent isn't able to connect to a specified port, a number of options are provided (for example, continue trying every X seconds; try the next highest port). These options can be specified interactively, or in the setup file. These options are consistent with existing options for the facilitator. It's no longer necessary to specify parent_dialect on the commandline of prolog agents (see release notes for 2.0.10). (Sictus only) Added several missing predicates (in spcompat.pl); such as subtract/3 and intersect/2 and intersection/3. More selective in sending ev_agent_disconnected notification to other agents, when an agent disconnects. Now the notification is only sent if there's reason to believe the other agents need to know. COMM trace messages are more informative: They now include the agent's name, not just its address. Data synchronization (when an agent declares a data solvable, all existing facts for that solvable are downloaded from the facilitator when the agent starts up) is now optional, and can be specified using synchronize(true|false) in the parameter list for the data solvable. The default is false. More restrictive about propagating context params - only if reply(true). ------------------ Improvements to the facilitator: Now warns, but doesn't exit, when the specified host isn't the same as the execution machine. More careful attention to number of connections. A new parameter, max_connections, can be used to limit how many connections are accepted at any one time. This parameter can be set using the facilitator's commandline, environment variable, or set up file. The default value is 58, so as to avoid an infinite loop that comes up in Quintus under Solaris. Better exception handling (in Quintus) for the situation where too many connections are open. Minor improvement to the backwards compatibility module, so that OAA1 agents "turn green" in the StartIt GUI, and "can_solve" requests from OAA1 agents work properly. Also, corrected a problem with backwards translation of params in ev_solve events. ------------------ Improvements to the Java library : Bug fix: IclAppend now appends to the end of the list, rather than the beginning. Significant optimizations for speed. Callback id's now conform to those used in the Prolog library (app_do_event, app_idle, etc.) Backwards compatility is provided for the old id's (oaa_AppDoEvent, etc.) ------------------ Improvements to the C library : Callback id's now conform to those used in the Prolog library (app_do_event, app_idle, etc.) Backwards compatility is provided for the old id's (oaa_AppDoEvent, etc.) A variety of optimizations, bug fixes, and robusticizing of the code. This includes a number of code changes contributed by Pete Tinker, and described on the oaa-users mailing list. ------------------- Improvements to the DCG-NL agent : Bug fix: downloading vocabulary from the facilitator at startup, and checking the facilitatorfor additional vocabulary as needed (neither was working properly before the fix). Improvements to the monitor agent : Bug fix: Required semicolon is now inserted between preline and appline. Improvements to startit : Now works under Windows 2000 (code fix contributed by Matt Ginzton). ----------------------------------------------------------------- Version 2.0.12 : August 2, 2000 ----------------------------------------------------------------- Improvements to the facilitator and Prolog library : Bug fix: Prolog agents, including the facilitator, are currently unable to declare data solvables that overload compiled predicates. Previously, an attempt to do so would lead to an unhandled exception, and no warning message. Now, although the restriction still holds, the exception is handled and a warning message is printed. Improvements to the employee database (which impact natural language recognition) : Last or first name only, in addition to both names together, can now be used in queries. Proper translation of the word "phone" in a query. Improvements to the C library : Bug fix: Serious memory leak corrected. (This affected the C debug agent, as well as any new agents using the C library.) Version 2.0.11 : July 20 2000 ----------------------------- Improvements to the facilitator and Prolog library : We now include Sicstus-generated runtimes for the facilitator and natural language agents, both for Solaris and for Linux running on Intel x86 hardware. See README_PROLOG for notes about using Sicstus. Bug fix: oaa_priority_compare made equivalent in Quintus and Sicstus code. Previously, they differed so as to cause different orderings of incoming events. Various other minor bug fixes, mostly around communication primitives, Sicstus compatibility, and backwards compatibility. Improvements to the C and Java libraries : ICL parsing routines now handle the semicolon (:) and vertical bar (|) operators. Various optimizations for speed (Java library). Version 2.0.10 : July 19 2000 ----------------------------- Improvements to the facilitator and Prolog library : Initial version of sicstus compatibility code. This code should be considered a beta version. Sicstus users: please report any bugs or difficulties to oaa-staff@ai.sri.com. Note that we are NOT distributing any Sicstus-generated runtimes with this release; just updated Prolog source files that can be used in a Sicstus environment. In the next release, we plan to distribute Sicstus-generated runtimes for the facilitator and the DCG_NL agent, at least for Linux. (These will be our first distributed Linux runtimes.) Note that it is possible to have an application that uses a mix of Quintus and Sicstus agents. There is one caveat, though: when a Sicstus client agent connects to a Quintus facilitator, the command line argument -parent_dialect quintus should be passed to the Sicstus agent. Similarly, when a Quintus client agent connects to a Sicstus facilitator, this command line argument should be given to the Quintus agent: -parent_dialect sicstus Improvements to the C and Java libraries : ICL parsing routines now handle the colon (:) operator. Minor change to all libraries : Parameter block/1 (to oaa_Solve and other library functions) is now blocking/1. This was done because of Sicstus' use of block as a keyword. However, block/1, in older applications, will still work properly. Version 2.0.9 : May 25 2000 ----------------------------- Bug fixes : - Large messages correctly handled (C and Java were bogus) - Facilitator data solvable is no longer declared when agent A calls oaa_AddData for a solvable that A (only) declares - dcg_nl agent: Format translation is now done for all vocabulary items Improvements to the facilitator : - When parallel_ok(false), and multiple agents provide a requested service, a simple form of load balancing is used: the agents with the fewest outstanding requests are used first. Improvements to the libraries : - Command line option -oaa_name recognized by all libraries - Command line option -init_file recognized by the Prolog library - Prolog library now provides database save and load from file Version 2.0.8 : April 22 2000 ----------------------------- Release of the C library Version 2.0.7 : December 21, 1999 --------------------------------- Fixed the java library : Adding triggers locally fixed. book-keeping and ownership of data fixed. added iclReplaceNthTerm in iclContainers. fixed minor bugs in String management Improvements to the facilitator : When the requested port isn't available, gives a variety of options, which can be specified either interactively or in the setup file New commandline options: -usage -write_setup_file FilePath -write_connections_file FilePath Version 2.0.6 : ---------------------------- Fixed the java library : iclRemoveFromList is now based on unification. oaaInterpret returns false when the term to interpret is not a builtIn nor a user defined solvable fixed oaa_update_data and oaa_add_data_local temporarily removed oaa_id_ref management for the local agent database (turned bookkeeping off by default) implemented : oaa_replace_data_local(liboaa.jave) and db_Replace(icldb.java) removed the warning when attempting to call a non-registered callback. (It tends to confuse users) Fixed monitor : when killing an agent using the right-click button, does not generate null pointer exception anymore Version 2.0.5 : Dec 10, 1999 ---------------------------- Thanks to Jehan's comments : com/sri/oaa2/lib/LibOaa.java 4753: ';;' to be removed 4760: idem com/sri/oaa2/agt/startit/AgentButton.java class AgentSelects should be moved into its own file. Same for class AgentSelectsDetails LibOaa 230: remove prenthesis (#LibOaa) 270: "com." before "sri.oaa2.com" is missing 271: idem debugAgent.frmMain 140: no parenthesis and a pound sign (com.sri.oaa2.lib.LibOaa#oaaRegisterCallback) OaaAboutDialog 68: no package "oaa.tools" 69: idem Version 2.0.4 : Dec 5, 1999 --------------------------- DOC: Added the history.txt file JAVA : Fixed bugs in StartIt and added the Command option when running under Windows PROLOG: Put the latest faciliator Version 2.0.3 : November 15, 1999 --------------------------------- First initial distribution