root/tags/lgt2302/RELEASE_NOTES.txt

Revision 3770, 101.3 KB (checked in by pmoura, 17 months ago)

Added release date for new Logtalk 2.30.2 version.

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