root/tags/lgt2301/RELEASE_NOTES.txt

Revision 3753, 100.5 KB (checked in by pmoura, 18 months ago)

Updated the "benchmarks" example to compare the performance of calls to imported category predicates when using a message to "self" and a direct call.

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