root/tags/lgt2303/RELEASE_NOTES.txt

Revision 3790, 102.3 KB (checked in by pmoura, 17 months ago)

Minor documentation improvements.

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