=================================================================
Logtalk - Object oriented extension to Prolog
Release 2.29.4

Copyright (c) 1998-2007 Paulo Moura.  All Rights Reserved.
=================================================================


Upgrading from Logtalk 1.x
==========================

Logtalk 2.x is not compatible with programs written for Logtalk 1.x.
However, you should be able to translate most programs to make them 
run under Logtalk 2.x. Most of the examples provided with Logtalk 1.x 
have been rewritten to run under Logtalk 2.x. You may use them as 
translation examples.


Upgrading from a previous Logtalk 2.x versions
==============================================

Changes in the Logtalk compiler between releases may render Prolog config 
files from older versions incompatible with new ones. You may need to update 
your local Logtalk user files by running e.g. the "cplgtdirs" shell script.

If your Logtalk programs depend on some of the example files, it is
advisable that you check your code against the new version before 
throwing away the older release.

Logtalk source files will need to be recompiled because of the changes 
done in the version 2.5.0 to improve message sending performance.

Logtalk version 2.7.0 provides the first cut of the Logtalk standard library.
Most examples have been rewritten to take advantage of the library.

Logtalk version 2.8.0 introduces a small change on the logtalk_compile/1-2 
and logtalk_load/1-2 predicates that may imply updating your loader utility
files: the first argument is now always a list of entities even if we want 
to compile or load a single entity.

Logtalk version 2.9.0 changes compiled code functors postfixes from "_sdcl" 
and "_sdef" to  "_idcl"	and "_idef", implying recompilation of all objects, 
protocols, and categories.

Logtalk version 2.10.0 changes some of the semantics of object dynamic 
predicates. See the release notes for a description of the changes.

Logtalk version 2.14.4 removes the definition of the deprecated built-in 
predicate logtalk_version/3 (use current_logtalk_flag/3 instead).

Logtalk version 2.14.5 changes compiled code in order to correct a bug 
where sending messages such as true/0 to an unknown object will succeeded 
instead of throwing the expected exception, implying recompilation of all 
objects, protocols, and categories.

Logtalk version 2.14.7 changes compiled code in order to optimize the 
code generated by the compilation of dynamic predicate clauses.

Logtalk version 2.15.0 changes the "authors" key in  the directive info/1 to 
"author". All the XSLT, DTD, and XSD files have been update to conform to 
this change. If you use the directive info/1 in your programs, you will need 
to apply this change to take advantage of automatic generation of documenting 
files.

Logtalk version 2.15.3 changes the format of the runtime entity tables, 
implying recompilation of all objects, protocols, and categories.

Logtalk version 2.15.6 renamed the compiler flag "named_anonymous_vars" to 
"underscore_vars" and changed the possible option values form "on/off" to 
"dont_care/singletons".

Logtalk 2.16.0 improves support for the declaration and use of operators 
local to objects and categories. Recompilation of any objects and categories 
containing operator declarations is needed in order to take advantage of the 
improvements made.

Logtalk 2.16.1 now checks for attempts to redefined built-in Logtalk control 
constructs when compiling source files. These checks may generate compilation 
errors on files containing bugs that are not detected on previous versions of 
the compiler.

Logtalk version 2.16.2 changed the possible option values of the read-only 
compiler flag "startup_message" to "none", "banner", and "flags". Default 
value is "flags" (print both banner and default flag values).

Logtalk version 2.17.1 removes predicate nth/3 from library entities listp, 
list, and difflist (replaced by the predicates nth0/3 and nth1/3).

Logtalk version 2.20.0 updates the semantics of the uses/1 entity directive 
to accept as argument a single object identifier (this change is needed in 
order to ensure compatibility with the new uses/2 predicate directive).

Logtalk version 2.21.2 adds a new clause to the code generated when compiling 
entity in order to support the new alias/1 predicate property, implying 
recompilation of all objects, protocols, and categories.

Logtalk version 2.22.0 adds support for using the notation <library>(<file>) 
when compiling and loading source files. Logtalk applications using this new 
notation will need to be modified in order to run in previous Logtalk versions.
In addition, the exceptions generated by the predicates logtalk_compile/1-2 
and logtalk_load/1-2 have been updated to take into account this new feature. 

Logtalk version 2.22.2 adds stricter checking for the documenting directives 
(info/1 and info/2), which can lead to compilation errors on entities which 
compiled successfully on previous Logtalk versions.

Logtalk version 2.22.5 adds new predicates to all config files (consult the 
release notes for details). If you are using custom config files, be sure to 
update them by coping the definition of the new predicates.

Logtalk version 2.23.0 features new, optimized implementations of the database
built-in methods, implying the recompilation of all objects, protocols, and 
categories.

Logtalk version 2.25.0 drops support for source metafiles and .mlgt file name 
extension as this version features a new, file-based compiler supporting the 
definition of any number of entities in a single file. Older code using source 
metafiles will need to rename the file name extensions from .mlgt to .lgt.

Logtalk version 2.25.1 updates the compiler to generate XML documenting files 
whose names always contain the arity of the entity identifier appended at the 
end (using the format "_arity"). This change implied updates to the lgt2xml.* 
and lgt2html.* shell scripts which render them incompatible with the XML files 
generated by previous Logtalk versions.

Logtalk version 2.27.0 changes representation of declared predicates in order 
to support the new predicate property non_terminal/1, implying recompilation 
of all objects, protocols, and categories.

Logtalk version 2.27.1 optimizes the generation of predicate definition and 
declaration linking clauses, resulting in small performance improvements and 
in space savings for the Prolog code generated when compiling Logtalk entities.
Recompilation of all objects, protocols, and categories is necessary in order 
to take advantage of this optimizations.

Logtalk 2.28.0 changes representation of meta-predicates, implying the 
recompilation of all objects, protocols, and categories that define them.
In addition, in order to close some security holes where meta-predicates 
could be used to bypass predicate scope declarations, meta-predicates that 
use closures must be re-implemented to use the new call/N Logtalk built-in 
predicate. The directive metapredicate/1 is now deprecated, the directive 
meta_predicate/1 should be used instead. There are also changes to the 
config files that render the Logtalk runtime incompatible with the config 
files of previous versions.

Logtalk 2.29.0 makes some incompatible changes to the experimental support 
for multi-threading programming that may imply updating any application that 
uses the multi-threading predicates. The default value of the compiler flag 
events/1 is now off. Applications using event-driven programming must either 
turn this flag on or compile source files with the events(on) option. The 
library protocol "event_handlersp" is now deprecated; new code should use 
instead the built-in "monitoring" protocol. The new support for "threaded" 
and "synchronized" entity properties implies recompilation of all objects 
and categories.

Logtalk 2.29.2 removes the built-in predicate threaded_discard/1.