root/tags/lgt2306/RELEASE_NOTES.txt

Revision 3891, 108.3 KB (checked in by pmoura, 14 months ago)

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