root/tags/lgt2305/RELEASE_NOTES.txt

Revision 3848, 105.2 KB (checked in by pmoura, 14 months ago)

Corrected the reference manual page describing the threaded/0 directive.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1================================================================
2Logtalk - Open source object-oriented logic programming language
3Release 2.30.5
4
5Copyright (c) 1998-2007 Paulo Moura.  All Rights Reserved.
6================================================================
7
8
9RELEASE NOTES
10=============
11
12
132.30.5 - September 19, 2007
14
15    Added new multi-threading built-in predicates threaded_call/2,
16    threaded_once/2, threaded_exit/2, and threaded_peek/2. These new
17    predicates support the use of threaded call identifier tags in order to
18    link specific threaded_call/2 and threaded_once/2 calls to specific
19    threaded_exit/2 and threaded_peek/2 calls. Extended the "nondet" example
20    in order to illustrate the new functionality.
21
22    Changed the implementation of the built-in predicate threaded_exit/1 in
23    order to avoid blocking when its argument is subsumed by the argument of
24    the corresponding threaded_call/1 call instead of being a variant.
25
26    Updated the Logtalk compiler to encapsulate resource errors inside
27    error/2 exception terms (as specified in the ISO Prolog core standard).
28
29    Corrected a bug in the library object "lgtunit" (wrong arity on two
30    failed_test/2 predicate calls).
31
32    Corrected two problems with the "testing" example: a wrong call on the
33    object "dyn_tests" and a missing entry in the "libpaths.pl" file. Removed
34    two pointless dynamic predicate directives in the "buffer" example.
35
36    Improved documentation of multi-threading programming and predicate
37    properties. Corrected the reference manual page describing the threaded/0
38    directive.
39
40    Simplified installation scripts by moving shared distribution cleaning
41    code into the "cleandist.sh" script. Updated the "install.sh" script to
42    set the installation prefix to "/usr" on Debian systems. Updated the
43    Linux RPM spec file in order to clean the building directory after the
44    package creation.
45
46
472.30.4 - August 22, 2007
48
49    Allow the argument of {}/1 calls to be a variable at compile time.
50
51    Updated the Qu-Prolog config file to match and require version 8.1 and
52    added a "qplgt" integration script.
53
54    Updated the XSB config file to match and require version 3.1 and to
55    take advantage of the compiler option optimize/1 when loading Logtalk
56    generated Prolog intermediate files.
57
58    Added a new library object, "lgtunit", providing preliminary support for
59    writing and running unit tests. Added a new example, "testing", defining
60    sample unit tests.
61
62    Added a new multi-threading example, "threads/tak", implementing the
63    Takeuchi function (recursive arithmetic).
64
65    Updated the "threads/philosophers" example to use notifications instead
66    of a dynamic predicate for representing chopstick availability. Added an
67    alternative implementation using a parametric object. Improved example
68    documentation.
69
70    Updated the "benchmarks" example to allow comparisons between calls to
71    imported category predicates and calls to local object predicates.
72
73    Updated Emacs support in order to fix problems with the syntax-coloring
74    of some Logtalk built-in predicates and applied a patch contributed by
75    Nicolas Pelletier to workaround a compatibility problem with XEmacs.
76
77    Updated jEdit support in order to fix a problem with the syntax-coloring
78    of the :/1 control construct.
79
80
812.30.3 - July 9, 2007
82
83    Updated the multi-threading built-in predicate threaded/1 to support
84    both conjunctions of goals (akin to and-parallelism) and disjunctions
85    of goals (akin to or-parallelism) as an argument.
86
87    Removed the experimental threaded_race/1 multi-threading built-in
88    predicate (its or-parallelism functionality is subsumed by the updated
89    threaded/1 predicate).
90
91    Corrected a bug in the implementation of the multi-threading built-in
92    predicate threaded_exit/1 when there are more than one thread running
93    the same non-deterministic goal (the fix ensures that all alternative
94    solutions per threaded_exit/1 call come from the same computing thread).
95    Thanks to Paul Crocker for the suggested bug fix solution.
96
97    Updated the sample queries in the "threads/buffer"/SCRIPT.txt" file to
98    match the updated entities in the example.
99
100    Updated the "threads/functions" example to use the new version of the
101    threaded/1 multi-threading built-in predicate.
102
103
1042.30.2 - June 24, 2007
105
106    Updated the Logtalk compiler to throw a compilation error when duplicated
107    or conflicting predicate scope directives are found.
108
109    Updated the Logtalk compiler to correct a cosmetic glitch when reporting
110    compilation errors.
111
112    Updated the Logtalk compiler to check for mismatches between the argument
113    of this/1 calls and the parametric object identifier.
114
115    Corrected a bug in the implementation of the multi-threading built-in
116    predicate threaded_ignore/1.
117
118    Revamped the "threads/buffer" example to support setting the buffer
119    maximum number of items.
120
121    Added a new DCG example, "dcgs/morse.lgt", for parsing messages in Morse
122    code.
123
124    Extended the "parametric" example to illustrate a solution for dealing
125    with inheritance when defining "setter" predicates/methods that return
126    updated object identifiers.
127
128
1292.30.1 - June 12, 2007
130
131    Added a new, experimental control construct, :/1, for calling imported
132    category predicates without using message sending mechanisms.
133
134    Added preliminary support for static binding when calling imported
135    category using the new :/1 control construct for categories compiled
136    and loaded using the compiler option "reload(skip)".
137
138    Added a new control construct, <</2, which allows proving a goal within
139    the context of a specified object. Useful for debugging and for writing
140    object unit tests.
141
142    Improved multi-threading support in order to make the built-in predicate
143    threaded_exit/1 generate an exception instead of blocking indefinitely
144    waiting for a reply from a non-existing thread.
145
146    Updated the Logtalk compiler to generate an error when compiling from a
147    source file new definitions for built-in entities.
148
149    Updated the Logtalk compiler to generate simpler clauses for the book-
150    keeping table of local predicate definitions for parametric entities.
151
152    Updated the config files for ECLiPSe, Ciao Prolog, SICStus Prolog,
153    SWI-Prolog, and YAP to use the renamed hook predicates introduced in
154    Logtalk 2.30.0 for parsing Prolog proprietary directives.
155
156    Updated the "benchmarks" example to compare the performance of calls to
157    imported category predicates when using a message to "self" and a direct
158    call.
159
160
1612.30.0 - May 28, 2007
162
163    Added preliminary support for static binding when sending messages to
164    objects compiled and loaded using the compiler option "reload(skip)".
165
166    Allow non-instantiated arguments at compile time for the multi-threading
167    built-in predicate threaded/1.
168
169    Simplified and optimized the implementation of Logtalk multi-threading
170    support. Use a single dispatcher thread for all objects instead of each
171    object running its own dispatcher in order to minimize the number of
172    created threads (which can be problematic on 32 bits systems). Updated
173    the built-in predicate threaded/1 to make it deterministic and opaque to
174    cuts (similar to once/1).
175
176    Updated the Logtalk built-in database methods to always interpret rules
177    whose body is the control construct true/0 as facts. Corrected a bug when
178    compiling dynamic predicates that would prevent using of the clause/2
179    built-in database method. Corrected a bug when using the Logtalk built-in
180    database method clause/2 with entities compiled in debug mode. Improved
181    predicate lookup caching when asserting and retracting dynamic facts.
182
183    Improved detection and reporting of entity existence errors.
184
185    Added a quit option, "q", to the Logtalk built-in debugger. Modified
186    the debugger behavior to automatically switch to trace mode when a spy
187    point is found.
188
189    Added two new compiler options, "xmldir" and "tmpdir", allowing per
190    project definition of directories for storing XML documenting files
191    and for storing intermediate compilation files (e.g. Prolog files).
192    Removed the config file predicate '$lgt_alt_directory'/2.
193    Older config files are incompatible with this new Logtalk version.
194
195    Added a shortcut to the Logtalk built-in predicate logtalk_load/1, {}/1,
196    to all config files (defined there in order to be easy to comment it out
197    in case of conflict with some Prolog native feature or lack of compliance
198    with the ISO Prolog standard regarding the definition of the {}/1 syntax.
199
200    Allow the compiler flag "misspelt" to be set to "error".
201
202    Updated the Logtalk compiler to not try to clean-up the dynamic predicates
203    of redefined entities when reloading source files. Most Prolog compilers
204    already behave as expected when reloading the intermediate Prolog files
205    generated by the Logtalk compiler. For those Prolog compilers that do not
206    replace old definitions for dynamic predicates with the new ones, it is
207    not possible for Logtalk to implement a workaround that would work
208    correctly in all cases. Consult the "configs/NOTES.txt" file for more
209    information.
210
211    Corrected a bug that prevents abolishing a dynamic entity loaded from a
212    source file. Thanks to Victor Noel for the bug report.
213
214    Renamed the '$lgt_copy_pl_directive'/1 and '$lgt_rewrite_pl_directive'/2
215    config files predicates to '$lgt_rewrite_and_copy_pl_directive'/2 and
216    '$lgt_rewrite_and_recompile_pl_directive'/2.
217
218    Updated the config file for B-Prolog to match (and require) the new 7.0
219    version; updated and simplified the corresponding integration scripts.
220
221    Updated the XSB POSIX integration script to automatically detect if we
222    are running the XSB stable version of the XSB CVS version.
223
224    Added basic support for tabling to the config files of B-Prolog, XSB,
225    and YAP. Added a simple example of using tabling directives within
226    objects.
227
228    Updated the SWI-Prolog and YAP config files to automatically detect if
229    the Prolog systems have been compiled with multi-threading support and
230    to set the Logtalk compiler flag "threads" accordingly.
231
232    Corrected a bug when running Logtalk with SWI-Prolog that prevented the
233    use of alternative compilation directories (i.e. turning on the "altdirs"
234    compiler flag). Corrected a bug when running Logtalk with SWI-Prolog that
235    can prevent make/0 from recompiling and reloading modified Logtalk source
236    files. Updated the SWI-Prolog integration script, "swilgt.sh", to more
237    reliably detect the compiler executable name.
238
239    Added a "configs/swi_set_logtalk_context.pl" file defining a useful but
240    fragile hack implementing a set_logtalk_context/1 built-in predicate for
241    switching the Logtalk top-level execution context to objects other than
242    the default pseudo-object "user" (you may use it as a debugging tool).
243
244    Updated the CxProlog config file to use the new built-in predicates in
245    version 0.95. Added a shell script, "cxlgt.sh", for easy integration of
246    Logtalk with CxProlog on POSIX systems (with the help of Artur Miguel
247    Dias, CxProlog author).
248
249    Updated the Ciao, K-Prolog, and ECLiPSe config files to set the default
250    value for the compiler flag "underscore_vars" to "dont_care" in order to
251    avoid spurious warnings with some of the provided examples.
252
253    Added a config file and integration scripts for the current XSB CVS
254    version (3.0.1+), which supports some features needed by Logtalk not
255    present in the current stable version (namely, expansion of environment
256    variables).
257
258    Added predicates depth/2 and variant/2 to the library object "term".
259
260    Much improved "benchmarks" example, updated to allow running tests in
261    three different scenarios: event support on, event support off, and
262    using static binding. Moreover, metacalls are no longer used to run
263    the benchmark goals, resulting in more meaningful and accurate results.
264
265    Removed all the "make_*lgt.*" and "makeall_lgt.*" shell scripts, replaced
266    by pre-made integration scripts that can be found on the new "integration"
267    directory. Removed the "lgt_install.js" script. Renamed the POSIX install
268    and uninstall scripts to, respectively, "install.sh" and "uninstall.sh".
269    Updated the integration, uninstall, and user-setup POSIX shell scripts
270    to use "$prefix/share/logtalk" as the default installation directory to
271    better comply with the Filesystem Hierarchy Standard 2.3 for UNIX-like
272    operating systems.
273
274    Updated the integration scripts to automatically call the "cplgtdirs"
275    script when the Logtalk user directory cannot be located.
276
277    Updated the integration, documentation, uninstall, and user-setup POSIX
278    shell scripts to try to locate the Logtalk installation directory and the
279    Logtalk user directory when the environment variables LOGTALKHOME and
280    LOGTALKUSER are not set.
281
282    Updated the "install.sh" POSIX shell script to better clean and sanitize
283    the file permissions on the installation directory.
284
285    Updated the "build_release.sh" POSIX shell script to also build a Debian
286    binary installer package (experimental).
287
288    The Windows GUI installer no longer spans command-line shells running
289    JScript scripts to build the Prolog integration shortcuts. This hopefully
290    solves issues with security software silently blocking and breaking the
291    Logtalk installation.
292
293    Added basic syntax coloring support for the GNU Nano 2.x text editor.
294
295
2962.29.5 - March 28, 2007
297
298    Added a new built-in predicate, threaded/1, for proving each goal in
299    a conjunction in its own thread, simplifying common multi-threading
300    tasks that previously required sequences of calls to the built-in
301    predicates threaded_call/1 and threaded_exit/1.
302
303    Simplified and optimized the implementation of Logtalk multi-threading
304    support.
305
306    Simplified implementation of the database built-in methods. Simplified
307    caching of dynamic predicate lookups. Improved performance of the
308    built-in methods retract/1 and retractall/1.
309
310    Simplified the code generated when compiling entities in debugging mode.
311
312    Corrected a bug in the built-in debugger when processing actions at a
313    port that implies reading a port action again (e.g. print exception term,
314    print debugging status, and help options). Allow the debugger command
315    "skip" to work as the command "creep" in ports other than "call" and
316    "redo". Added a new debugger command, "ignore". Suspend debugging when
317    using the "break" debugger command.
318
319    Generate a compilation error instead of just printing a warning when
320    compiling calls to the multi-threading built-in predicates within an
321    object with no threaded/0 directive present.
322
323    Corrected a bug when compiling entities containing synchronization
324    directives on single-threaded Prolog configurations.
325
326    Improving reporting of working directory when loading or compiling source
327    files by expanding any environment variables occurring in the path.
328
329    Added a new compiler option, "reload", for defining the Logtalk behavior
330    when reloading source files. Valid values are "always" (default value;
331    defined in the config files) and "skip".
332
333    Updated the programming examples to use the new "reload" compiler option
334    when loading library entities. Simplified loading of example source files
335    (by updating the utility loader files to automatically load all required
336    library files).
337
338    Updated GNU Prolog config file to take advantage of some built-in list
339    predicates (requires version 1.2.14 or later); changed the compiler flag
340    "underscore_vars" value to "dont_care" to avoid spurious warnings with
341    some examples.
342
343    Added a config file for B-Prolog 7.0b1.
344
345    Updated the POSIX integration shell scripts to pass along any command
346    line options to the corresponding Prolog compiler and to prevent some
347    problems with paths containing spaces.
348
349    Much improved syntax coloring and code completion support for the jEdit
350    text editor.
351
352    Updated the "threads/primes" example to use the new "threaded/1" built-in
353    predicate. Updated the "threads/birthdays" example to better illustrate
354    the use of the built-in multi-threading predicates. Added a new
355    multi-threading example, "msort", implementing single-threaded and
356    multi-threaded versions of the merge sort algorithm.
357
358    Expanded the "operators" example to illustrate a simple solution for
359    making operators local to source files (but global to all entities
360    defined within the source files).
361
362
3632.29.4 - February 19, 2007
364
365    Added a new library category, "listing", defining listing/0 and
366    listing/1 methods for helping in debugging tasks.
367
368    Added two new experimental multi-threading predicates, threaded_wait/1
369    and threaded_notify/1, which allows suspension of a thread's goal until 
370    a notification is received. Added two new examples, "threads/buffer" and
371    "threads/blackboard", illustrating the use of these predicates.
372
373    Simplified and changed implementation of the threaded built-in
374    predicates in order to ensure that the threaded/0 directive is only
375    required on objects calling these predicates.
376
377    Only print a warning for a missing threaded/0 directive for objects.
378
379    Corrected a ordering bug on the entity initialization goal that
380    prevented using an object initialization goal that make use of
381    the object thread.
382
383    Corrected a bug when asserting rules into an object's database that
384    resulted in only the first asserted rule being visible when calling
385    the predicate through message sending. Thanks to Parker Jones for
386    the bug report.
387
388    Corrected a bug when compiling dynamic entities (defined in source
389    files using the dynamic/0 directive) where declared predicates would
390    be wrongly compiled as static instead of dynamic.
391
392    Updated the "make_xsblgt.sh" integration script again to fix an
393    additional problem resulting from the lack of support in XSB for
394    using environment variables in file paths.
395
396    Added minimal support for using Exuberant Ctags with Logtalk.
397
398    Added auto indent support to the jEdit text editor.
399
400    Added support for listing public predicates in the "Functions" window
401    of the SuperEdi text editor.
402
403    Converted TextMate code snippets from the old Property List format
404    to XML in order to provide compatibility with the "e" Windows text
405    editor.
406
407    New example: 99 bottles of beer on the wall! Sing along!
408
409
4102.29.3 - January 15, 2007
411
412    Corrected a bug in the Logtalk compiler optimizer code which was
413    discarding some declaration and definition catchall clauses needed
414    by the Logtalk built-in database methods when there is no initial
415    declaration and definition for the referenced dynamic predicates.
416    Thanks to Parker Jones for the bug report.
417
418    Corrected a bug in the compilation of empty, standalone protocols
419    and categories.
420
421    Updated the "make_xsblgt.sh" integration script to workaround
422    the lack of support in XSB for using environment variables in
423    the argument of the reconsult/1 predicate.
424
425    Corrected a bug in the "potions.lgt" example puzzle that prevented
426    its solution of being found.
427
428
4292.29.2 - January 10, 2007
430
431    Silently compile synchronized predicates as normal predicates on
432    single-threaded Prolog compilers.
433
434    When using the threaded_race/1 predicate, competing threads are
435    now created detached.
436
437    Corrected a bug that resulted in a loading error when reloading
438    source files defining threaded objects.
439
440    Corrected a bug in the implementation of the built-in predicate
441    threaded_peek/1 that prevented alternative solutions from being
442    retrieved using the built-in predicate threaded_exit/1. Removed
443    the built-in predicate threaded_discard/1.
444
445    The library object "random" is now a synchronized object. Updated
446    the "philosophers" multi-threading example accordingly.
447
448    Dropped loading of broken "cleanup" library from the YAP config file
449    (the call_cleanup/2 predicate, required for Logtalk multi-threading,
450    is now available as a built-in predicate in the YAP CVS version).
451
452
4532.29.1 - December 28, 2006
454
455    Added a Logtalk version of John Fletcher's Prolog XML parser (see the
456    folder "contributions/xml_parser").
457
458    Added shell scripts for helping building the distribution files of a
459    new Logtalk release. Updated the MacOS X installer package to set
460    default values for the Logtalk environment variables. Corrected a bug
461    in the "logtalk.spec" file where the default value for the LOGTALKUSER
462    environment variable only worked for the user doing the RPM installation.
463
464    Corrected a bug in the reporting of the line number where a compilation
465    error (or warning) occurred. Extended support for reporting warning and
466    error line numbers to Quintus Prolog, Ciao Prolog, Qu-Prolog, and
467    ECLiPSe.
468
469    Corrected a bug when using partial lists with the predicates nth0/3-4
470    and nth1/3-4 provided by the "list" library object.
471
472    Improved "philosophers" multi-threading programming example.
473
474
4752.29.0 - December 18, 2006
476
477    Added a new built-in, empty object named "logtalk", which can play the
478    role of both a class and a prototype. It may be used to define class
479    hierarchies without forcing the use of metaclasses or reflective
480    designs.
481
482    Added a built-in protocol named "monitoring" with declarations for
483    the before/3 and after/3 public event handler predicates. Updated
484    the Logtalk compiler to print a warning when defining an event handler
485    with no reference to the "monitoring" protocol.
486
487    The default value of the compiler flag events/1 is now off. As most
488    applications do not use events, this setting ensures the best possible
489    message processing performance for those applications.
490
491    Removed the experimental threaded_call/2 and threaded_exit/2 thread
492    predicates, replaced by new threaded_once/1, threaded_ignore/1,
493    threaded_race/1, threaded_peek/1, and threaded_discard/1 predicates.
494    Renamed predicate directive atomic/1 to synchronized/1. Added new
495    entity directive synchronized/0. Added support for new "synchronized"
496    and "threaded" entity properties.
497
498    Corrected a bug when using threaded calls as initialization goals
499    within threaded objects.
500
501    Corrected an elusive bug in the Logtalk compiler where a source file
502    may not be properly closed when it contains a syntax error (thanks
503    to Robert Shiplett for the bug report).
504
505    Corrected a bug in the implementation of the built-in methods retract/1
506    and retractall/1 that could result in unexpected exceptions. Updated
507    the built-in method assertz/1 to always use the lookup cache.
508
509    Corrected a bug in the compilation of empty classes that are not
510    instances of a metaclass.
511
512    Corrected a bug in the built-in method predicate_property/2 where some
513    predicate properties may not be returned when enumerating properties
514    using backtracking.
515
516    Modified the SWI-Prolog config file and integration scripts to set
517    the flag "iso" to "true". Corrected an elusive bug in the definition
518    of predicate '$lgt_directory_exists'/1 that resulted in "library not
519    found" errors when loading Logtalk source files from within the
520    SWI-Prolog initialization file (thanks to Robert Shiplett for the bug
521    report).
522
523    Updated the K-Prolog config file to workaround a problem when using
524    library notation due to failure to check directory existence with the
525    provided "libpaths.pl" file.
526
527    Added a RELAX NG file describing the structure of the XML documenting
528    files generated by Logtalk.
529
530    Corrected a bug in the Logtalk DTD file (missing "copyright" tag
531    declaration).
532
533    Corrected a bug in the lgt2*.js scripts where the "custom.ent" file
534    was not being copied when generating (X)HTML and PDF files.
535
536    Added a new multi-threading example, "philosophers", illustrating a
537    possible implementation of the "dining philosophers" problem.
538
539    Improved the "metapredicates" example in order to illustrate the use
540    of closures instead of goals as meta-arguments.
541
542    Added a reference to the "e" Windows text editor, which supports
543    the MacOS X TextMate 1.x text editor syntax configuration files.
544   
545    Updated the manuals index pages in order to workaround browsers bugs
546    with parsing of empty "span" tags (e.g. Internet Explorer and Opera).
547
548
5492.28.2 - November 6, 2006
550
551    Corrected a compiler bug where unknown entities will not be report when
552    compiling a source file whenever an entity with the same name but of a
553    different type is already known.
554
555    Added a XPCE hook file ("configs/xpcehook.pl") supporting Logtalk message
556    sending goals as XPCE call-back goals. The XPCE library is now loaded by
557    default by the SWI-Prolog integration scripts.
558
559    Added support for generating single PDF files of the User and Reference
560    Manuals. Removed the PDF versions of the individual manual XHTML pages.
561
562    The ECLiPSe config files now require release 5.10#26 or a later version.
563
564    Added support for listing Logtalk entity names (objects, categories, and
565    protocols) in the SubEthaEdit symbols menu.
566
567    Added a Vim dictionary file for Logtalk keyword completion and support
568    for automatic indentation.
569
570    Added basic support for the MacOS X Smultron text editor. Added basic
571    support for the Notepad++, SuperEdi, and ConTEXT Windows text editors.
572
573
5742.28.1 - October 10, 2006
575
576    Added support for using XML entities using the notation "{entity name}"
577    in info/1 documenting directives for the "author", "copyright", and
578    "license" keywords. The XML entities are defined on a "custom.ent" file.
579
580    Updated Logtalk bibliographic references (in file "BIBLIOGRAPHY.bib").
581
582    Added a "lgt_uninstall.sh" shell script for uninstalling Logtalk on POSIX
583    operating systems.
584
585    Improved RPM install-time messages on the defined Logtalk environment
586    variables.
587
588    Updated the ECLiPSe integration scripts and config files to work with
589    and require version 5.10 (the first open source version of ECLiPSe).
590
591    Corrected a typo on the "logtalk.dtd" file that prevents validation of
592    XML documenting files that use a local reference to the DTD.
593
594
5952.28.0 - September 28, 2006
596
597    Updated the Logtalk license to the final version of the "The Artistic
598    License 2.0" (see http://www.perlfoundation.org/legal/ for details).
599
600    Added experimental support for multi-threading programming on selected
601    Prolog compilers. Added a new object directive, threaded/0, a new
602    predicate directive, atomic/1, and four new built-in predicates,
603    threaded_call/1-2 and threaded_exit/1-2. Added a new set of examples,
604    "threads". Thanks to Paulo Nunes for helping developing and testing
605    these new features.
606
607    Expanded support for meta-predicates by allowing the declaration of meta-
608    arguments as closures instead of goals.
609
610    Added the generalized call/N predicate as a built-in method. This built-in
611    method must be used in the implementation of meta-predicates which work
612    with closures instead of goals.
613
614    The metapredicate/1 directive should be considered deprecated. Use the
615    meta_predicate/1 directive instead.
616
617    Updated the Logtalk compiler to generate an error whenever a non-variable
618    meta-argument is found in a clause head of a user-defined meta-predicate.
619
620    Improved compilation of meta-predicate meta-arguments. Corrected a bug
621    in the compilation of user meta-predicates that allowed illegal calls
622    to non-public predicates on the caller object to be made from the object
623    defining the meta-predicates. Thanks to Rémy Haemmerlé and François
624    Fages for reporting the problem.
625
626    Improved performance for non-cached messages, notably when running with
627    YAP, GNU Prolog, and SWI-Prolog on all operating systems and with SICStus
628    Prolog 4.0 on POSIX operating systems.
629
630    Updated the Logtalk compiler to generate an error whenever a predicate
631    directive appears in a source file after predicate clauses that call the
632    predicate specified in the directive.
633
634    Added support for "copyright" and "license" keys to the info/1 entity
635    documenting directive.
636
637    Improved compiler error messages to also report source file line number
638    for selected Prolog compilers.
639
640    Added PDF versions of all the manual XHTML pages. Added links to all the
641    manual XHTML pages to the corresponding PDF versions.
642
643    Corrected a bug (introduced in version 2.27.0) in the built-in predicates
644    abolish_object/1, abolish_protocol/1, and abolish_category/1 that resulted
645    in some clauses not being retracted when an object is abolished (thanks to
646    Neng-Fa Zhou for the bug report).
647
648    Corrected a bug (introduced in version 2.27.1) in the processing of the
649    term_expansion/2 predicate.
650
651    Corrected a bug in the compilation of redefined built-in predicates with
652    no clauses.
653
654    Added an experimental config file for CxProlog 0.93.1.
655
656    Updated the SWI-Prolog config and hook files in order to support the
657    edit/1 and make/0 development predicates.
658
659    Changed the Logtalk - SWI-Prolog integration scripts to load the hook
660    file "swihook.pl" after the other files in order to avoid some possible
661    errors at startup.
662
663    Updated the config file for the forthcoming SICStus Prolog 4.0 version
664    to work in the current beta version. Modified the "make_sicstuslgt.*"
665    shell scripts to work with both SICStus Prolog 3.12 and 4.0 versions.
666
667    Updated the config file for YAP to workaround a problem on the Windows
668    version where testing for directory existence fails if the path ends with
669    a slash (or a double backslash); this problem prevents the use of library
670    notation to load source files (problem already fixed in the current YAP
671    CVS version).
672
673    Updated the config file for B-Prolog to match (and require) the new 6.9
674    version; added integration shell scripts (for both Windows and POSIX
675    systems).
676
677    Updated the config files and the integration scripts for ECLiPSe in order
678    to workaround bugs on the predicates abolish/1 and canonical_path_name/2.
679    Modified the "make_eclipselgt.js" script to work with both ECLiPSe 5.8
680    and 5.9 versions.
681
682    Dropped support for versions of XSB older than 3.0. Added support for
683    smart compilation of source files to the XSB config file.
684
685    Updated the config file for IF/Prolog 5.1 by adding a missing definition
686    for predicate retractall/1 and avoiding some harmless singleton warnings.
687
688    Add a ".txt" extension to all "NOTES" and "SCRIPT" files.
689
690    Extended "dcgs", "parametric", and "metainterpreters" examples.
691
692    Added Inno Setup GUI Windows installer script.
693
694    Update all the JScript scripts to check if a compatible version of WSH
695    is installed and to workaround some problems with spaces in file paths.
696
697    Updated the "lgt_install.js" JScript script to copy the scripts/*.bat and
698    the xml/*.bat batch scripts to the system's Windows directory instead of
699    modifying the PATH environment variable.
700
701    Updated the "cplgtdirs.*" shell scripts to make a backup copy of any
702    previous LOGTALKUSER directory.
703
704    Added post-install scripts to the LINUX RPM "logtalk.spec" file for
705    setting the environment variable LOGTALKHOME for all users, defining
706    a default value for the environment variable LOGTALKUSER, and running
707    the Prolog integration scripts.
708
709    Split the installation and customization instructions in two files,
710    "INSTALL.txt" and "CUSTOMIZE.txt".
711
712    Added shell scripts for converting the manual XHTML pages into PDF files
713    using CSSToXSLFO.
714
715
7162.27.1 - March 27, 2006
717
718    Allow calls to the built-in method parameter/2 with the first argument
719    not instantiated at compile time. Detect and report as a compilation
720    error parameter/2 indexes that are out of range.
721
722    Optimized generation of predicate definition and declaration linking
723    clauses, resulting in small lookup performance improvements and in space
724    savings for the Prolog code generated when compiling Logtalk entities.
725
726    Many minor code and documentation improvements to the Logtalk compiler.
727
728    Added an object version of the tokenizer described in the Michael
729    Covington's paper "Tokenization using DCG Rules" to the "dcgs" example.
730
731    Improved integration code for Qu-Prolog and Logtalk ("configs/qphook.ql").
732
733    Improved library hierarchy methods that return lists of objects in order
734    to avoid duplicated elements (library objects "proto_hierarchy.lgt" and
735    "class_hierarchy.lgt"). Added new methods extension/1 and extensions/1 to
736    the library object "proto_hierarchy.lgt".
737
738    Documented the concept of "parametric object proxy". Added a new example,
739    "proxies", illustrating the use of parametric object proxies.
740
741    Added support for code completion and for listing entity names on the
742    symbol pop-up menu to the MacOS X TextMate text editor.
743
744    Updated the "cplgtdirs.*" scripts to also create an alias/shortcut to the
745    "wenv" directory.
746
747    Renamed the alternative compilation and documentation directory names on
748    all config files to be compatible across operating-systems. Removed unused
749    predicate '$lgt_reverse'/2 from all config files.
750
751    Updated HTML manuals "print.css" CSS file for compatibility with the
752    latest version of CSSToXSLFO.
753
754
7552.27.0 - February 9, 2006
756
757    Improved performance for local calls to the built-in methods phrase/2-3.
758    Allow the built-in methods phrase/2-3 to accept both partial and proper
759    lists of terminals.
760
761    Improved grammar rule translator. Report calls to undefined non-terminals
762    when translating grammar rules.
763
764    Added support for declaring grammar rule non-terminal aliases using the
765    alias/3 directive.
766
767    Added a new predicate property, non_terminal/1, for predicates resulting
768    from the compilation of grammar rule non-terminals.
769
770    Improved support for the built-in method expand_term/2 in order to allow
771    bypassing of the default Logtalk grammar rule translator by defining
772    clauses for the term_expansion/2 predicate. Added a "term_expansionp"
773    protocol to the Logtalk library. Added a new example, "expansion",
774    illustrating the use of the term_expansion/2 predicate.
775
776    Added a new compiler flag, hook/1, allowing the specification of a
777    compiler hook that is called for which term read from a source file.
778    Added a simple example, "hooks", of using the Logtalk compiler hook
779    to expand author abbreviations in info/1 directives into full names
780    and email addresses.
781
782    Added support for XSB 3.x to the runtime error handler. Updated the XSB
783    3.x config file with declarations for multi-threading meta-predicates.
784   
785    Removed a few choice-points when checking validity of entity directives.
786
787    Added two new objects, list(Type) and set(Type), to the standard library
788    supporting the validation of lists and ordered sets whose elements are
789    restricted to a single type.
790
791    Added a new DCG example for solving enigmas encoded using a cellphone
792    keypad.
793
794    Added a missing library dependency to the "puzzles" example SCRIPT file.
795
796    Removed the experimental "systemp.lgt" protocol from the list of files
797    loaded by the "library/all_loader.lgt" loader utility files to avoid
798    compilation errors on some Prolog systems.
799
800    Corrected a bug that prevented dynamic creation of categories using the
801    built-in predicate create_category/4.
802
803    Corrected a bug in the reporting of singleton variables, which failed to
804    write an accurate message for facts and grammar rules.
805
806    Corrected a bug in passing the correct calling context ("this") when
807    processing meta-calls in objects.
808
809    Corrected a bug in scope checking with local calls to reflection and
810    database methods.
811
812    Corrected a bug in checking the validity of the arguments of the op/3
813    directive appearing inside entities.
814
815    Added predicates for testing if a term is a partial list or a proper list
816    to all config files.
817
818    Added a definition for missing open/4 ISO Prolog predicate to the config
819    file of Bin Prolog.
820
821    Added a workaround for a B-Prolog bug to this compiler config file.
822
823
8242.26.2 - December 20, 2005
825
826    Improved error-checking for the Logtalk compiler and for the grammar rule
827    translator.
828
829    Small performance improvements for message sending and for the built-in
830    database methods.
831
832    Corrected a bug on the implementation of the built-in methods phrase/2-3
833    for negated grammar rule bodies (thanks to Mats Carlsson for pointing the
834    error).
835
836    Removed the read-only compiler flag "iso_initialization_dir".
837
838    Corrected a compilation bug on the "metapredicates" example source file.
839    Corrected several bugs on the performance monitor of the "searching"
840    example.
841
842    Switched off default generation of XML documenting files for the "symdiff"
843    example in order to avoid file names compatibility problems on Windows.
844
845    Updated compatibility notes on B-Prolog 6.8 and Qu-Prolog 7.0. Added a
846    config file for the forthcoming SICStus Prolog 4.0 version (based only
847    on publicly available information). Updated the config file for Amzi!
848    Prolog to solve issues with predicate properties and to ensure that file
849    system utility predicates are loaded.
850
851    Added a config file for the current XSB CVS version and the corresponding
852    integration shell scripts (for both Windows and POSIX systems). Modified
853    the "cplgtdirs.*" shell scripts in order to make either links or copies of
854    the config files and the "libpaths.pl" file with the required ".P" file
855    name extension.
856
857    Improved integration scripts documentation and help screens.
858
859    Added a predicate for checking directory existence to the config files.
860
861
8622.26.1 - November 28, 2005
863
864    Added a CSS style-sheet to the Logtalk XHTML documentation that can be
865    used with CSSToXSLFO to generate nicely formatted PDF files suitable for
866    printing with running headers and page numbers.
867
868    Updated the Logtalk XHTML documentation for compliance with the XHTML 1.1
869    standard.
870
871    Updated the "lgtxhtml.xsl" XSLT file in order to generate XHTML 1.1 files.
872
873    Added a new, generic "lgtpdf.xsl" XSLT file. Redefined the "lgtpdfa4.xsl"
874    and "lgtpdfus.xsl" files to import the "lgtpdf.xsl" file.
875
876    Added support for the Lunasil XSL-FO processor to the "lgt2pdf.*" shell
877    scripts.
878
879    Updated the "lgt2pdf.sh", "lgt2xml.sh", and "lgt2html.sh" shell scripts
880    in order to write a warning message when the current directory does not
881    contain any XML documenting file.
882
883    Added a definition for missing open/4 ISO Prolog predicate to the config
884    files of Open Prolog, LPA Prolog compilers, and MasterProlog.
885
886
8872.26.0 - November 7, 2005
888
889    Added support for defining predicate aliases when using uses/2 directives
890    (using the format Predicate::Alias).
891
892    Added Prolog modules migration code allowing modules to be compiled as
893    objects and allowing messages to be sent to modules. Added a new "modules"
894    example.
895
896    Added a "Prolog Integration and Migration Guide" to the Logtalk
897    documentation.
898
899    Added support for syntax coloring of common Prolog module directives to
900    the configuration files of the supported text editors.
901
902    Added support for using library aliases on the second argument of the
903    logtalk_library_path/2 predicate (using the format alias(path)).
904
905    Added support for ignoring, copying as-is, or rewriting proprietary Prolog
906    directives. The action to be taken is defined on a per-directive basis on
907    the config files.
908
909    Updated the config files of CIAO, ECLiPSe, SWI-Prolog, and YAP to define
910    actions for some proprietary directives in order to allow some or most of
911    the module libraries distributed with these compilers to be compiled as
912    objects.
913
914    Renamed some XML documentation-related compiler flags to more meaningful
915    names: "xml" -> "xmldocs", "xsl" -> "xslfile", and "doctype" -> "xmlsref".
916    No changes to the other flags or flag valid values.
917
918    Updated documenting scripts to use system-wide resources from LOGTALKHOME
919    and user-modifiable resources from LOGTALKUSER.
920
921    Updated "cplgtdirs.*" shell scripts to create links to the documenting
922    scripts and to the DTD and XML Schema specifications instead of making
923    local copies. Updated the "cplgtdirs.js" Windows JScript script to create
924    a link to the Logtalk manuals.
925
926    Changed generation of predicate compiled functors to add an underscore
927    between the original predicate functor and arity (further minimizing the
928    chance of name conflicts).
929
930    Improved compilation warning messages (separately handling plural and
931    singular forms).
932
933    Improved documentation of Windows JScript installation and integration
934    scripts.
935
936    Corrected a bug on the Logtalk built-in debugger on the processing of the
937    abort option at a leashed port (option was ignored instead of aborting the
938    debugging session).
939
940    Added an option to choose between a "verbose" or "compact" listing of the
941    default compilation flags at Logtalk startup (defined on the config files).
942
943    Improved CIAO integration scripts in order to suppress some (harmless)
944    warnings which are generated at first run.
945
946    Updated SWI-Prolog hook file ("swihook.pl") in order to support Logtalk
947    library notation when loading Logtalk files using the SWI-Prolog consult/1
948    predicate.
949
950    Corrected a bug on the implementation of the built-in method abolish/1
951    that prevented abolishing of dynamic predicates with arity zero.
952
953    Corrected a bug on the "gplgt" shell script generated by the make_gplgt.sh
954    shell script where the value of the LOGTALKHOME environment variable would
955    not be retrieved at runtime.
956
957    Removed config file for older versions of XSB (up to 2.6). Renamed the
958    config file for XSB 2.7.1 to simply "xsb.config".
959
960    Consolidated the source files of the "birds", "errors", "lpa", "lo",
961    "metainterpreters", "poem", "relations", "roots", and "symdiff" examples
962    into single source files. Updated the "searching" example to take advantage
963    of the uses/2 directive.
964
965    Removed outdated documenting shell scripts from the "xml" directory.
966
967    Corrected a bug when compiling a source file where the generated Prolog
968    file might not be properly closed when a compilation error occurs.
969
970
9712.25.3 - September 12, 2005
972
973    Consolidated the source files of the examples "bricks", "dynpred", "mi",
974    "parametric", "points", "polygons", "reflection", "shapes", "sicstus",
975    and "viewpoints" into single source files.
976
977    Improved documentation on most example source files. Improved "parametric"
978    example by adding a new parametric objects and by illustrating alternative
979    ways of accessing object parameters.
980
981    Updated several config files with declarations for some more non-standard
982    Prolog meta-predicates.
983
984    Corrected some omissions and typos on the B-Prolog - Logtalk integration
985    instructions.
986
987    Small performance optimization for messages and super-calls with not yet
988    cached method lookups.
989
990
9912.25.2 - August 11, 2005
992
993    Updated Logtalk installation and Prolog integration scripts in order to
994    detect a wrongly defined LOGTALKHOME environment variable.
995
996    Corrected a bug on the lgt_install.sh and make*lgt.sh shell scripts where
997    the wrong variable was being referenced when testing the existence of the
998    installation directory prefix.
999
1000    Corrected a bug on the makeall_lgt.sh shell script that failed to properly
1001    detect unsuccessful completion of individual Prolog integration scripts.
1002
1003
10042.25.1 - August 8, 2005
1005
1006    Added support for using the "source-highlight" package (version 2.0 or
1007    later) by Lorenzo Bettini with Logtalk source files.
1008
1009    Several optimizations to the syntax coloring configuration files of most
1010    of the supported text editors. Added support for code folding to the Vim,
1011    Kate, and TextMate text editors.
1012
1013    Updated the SWI-Prolog shell integration script (make_swilgt.sh) to use
1014    either "swipl" or "pl" as the name of the Prolog executable, depending
1015    on the host operating system.
1016
1017    Modified the way entity prefixes are generated for compiled code in order
1018    to further minimize possible conflicts resulting from the same prefix being
1019    used for different entities (bug report and fix by Brian Hulley). Changes
1020    to the prefix format are also reflected on the names of the automatically
1021    generated XML documenting files.
1022
1023    Updated the lgt2html.* and lgt2xml.* documenting scripts in order to index
1024    parametric objects using the notation <entity>/<number of parameters>.
1025
1026    Corrected a bug on the lgtxml.xsl XSLT file where links to related files
1027    pointed to .html files instead of .xml files.
1028
1029    Updated the lgt_install.sh and the make_*lgt.sh shell scripts to check and
1030    report invalid installation directory prefixes.
1031
1032    Added a new state-space search problem, "salt3.lgt", contributed by Paula
1033    Marisa Sampaio, to the "searching" example.
1034
1035
10362.25.0 - May 23, 2005
1037
1038    Logtalk compiler is now source file-based instead of entity-based. Thus,
1039    a source file may now contain any number of entities, without the need of
1040    using source metafiles. Therefore, this version drops support for source
1041    metafiles and the .mlgt file name extension.
1042
1043    The experimental encoding/1 directive, when used, must be the first term
1044    on a source file.  Added an entry to the reference manual describing the
1045    directive. Improved "encodings" example.
1046
1047    Added a new method, debugging/1, to the "debugger" pseudo-object for
1048    querying the system about entities compiled in debug mode.
1049
1050    Improved source file and entity compilation and loading reporting. In
1051    particular, when using library notation for source files, the Logtalk
1052    compiler now prints the library path containing the source files being
1053    compiled or loaded.
1054
1055    Added new shell scripts, makeall_lgt.*, which run all the make_*lgt.*
1056    shell scripts in sequence.
1057
1058    Simplified compiler reporting of singleton variables in directives and
1059    clauses.
1060
1061    Added an adaption of the "timetables" LPA Prolog++ example.
1062
1063    Updated B-Prolog config file for the new 6.7 #2 version. Dropped support
1064    for older versions of B-Prolog.
1065
1066
10672.24.0 - April 22, 2005
1068
1069    Added experimental support for a encoding/1 directive for declaring the
1070    text character encoding of a source file. This directive is fully based
1071    on a directive with the same name and with similar semantics found on
1072    recent development versions of SWI-Prolog. For now, this directive only
1073    works with SWI-Prolog as most Prolog compilers lack support for dealing
1074    with different text encodings. Added new flag "supports_encoding_dir".
1075    Added a new example, "encodings", of using the new encoding/1 directive.
1076
1077    When a source file contains an encoding/1 directive, the XML documenting
1078    files will use the same encoding. When no encoding/1 directive is present,
1079    the XML documenting files will assume UTF-8 encoding.
1080
1081    Added new info/1 documenting directive key, "parameters", allowing the
1082    declaration of both parameter names and parameter descriptions. Added new
1083    info/1 documenting directive key, "remarks", allowing general remarks
1084    about an entity to be stated. Added new info/2 documenting directive key,
1085    "arguments", allowing declaration of both predicate argument names and
1086    predicate argument descriptions. Added new info/2 documenting directive
1087    key, "examples", allowing the representation of predicate call examples.
1088
1089    Much improved and accurate reporting of non-portable predicate calls when
1090    using the "portability" flag.
1091
1092    Added a new directory to the Logtalk distribution, "contributions", which
1093    will be used for user-contributed code. On this release, it contains an
1094    implementation of the ISO 8601 standard by Daniel L. Dudley, providing a
1095    library of useful date predicates.
1096
1097    Added new lgt2xml.* shell scripts for generating (X)HTML indexes of XML
1098    documenting files.
1099
1100    Rewritten the lgtxhtml.xsl, lgthtml.xsl, lgtxml.xsl XSLT scripts in order
1101    to make it easier to define alternative CSS files for the generated HTML
1102    files. Rewritten the lgtpdfa4.xsl and lgtpdfus.xsl XSLT scripts in order
1103    to improve appearance of the generated PDF files.
1104
1105    Improved the documentation of the "benchmarks" example and added new
1106    predicates for running batches of benchmark tests and for generating
1107    lists of known size for the benchmark tests of static code.
1108
1109    Corrected a bug in the lgt2html.*, lgt2pdf.*, and cplgtdirs.sh shell
1110    scripts which resulted in failed transformations whenever the LOGTALKHOME
1111    and LOGTALKUSER environment variables or the output directory contained
1112    spaces or accented characters.
1113
1114    Added workaround for Prolog compilers that define operators other than
1115    ','/2 that cannot be redefined (such as new B-Prolog 6.7).
1116
1117    Added a Logtalk "clip" file for the TextPad Windows text editor.
1118
1119    Renamed directory "misc" to the more meaningful name "scripts".
1120
1121    Corrected a bug in the implementation of the built-in database methods
1122    asserta/1 and assertz/1 when asserting facts on objects compiled in debug
1123    mode.
1124
1125    Corrected a bug in the method leash/1 of the built-in pseudo-object
1126    "debugger", which failed to accept an empty list as a valid argument.
1127
1128    Corrected a bug in the header of the automatically generated XML
1129