root/tags/lgt2308/RELEASE_NOTES.txt

Revision 3920, 109.8 KB (checked in by pmoura, 13 months ago)

Fixed bug in the compilation of synchronized predicates that breaks Logtalk on single-threaded Prolog compilers.

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