root/tags/lgt2307/RELEASE_NOTES.txt

Revision 3915, 109.7 KB (checked in by pmoura, 13 months ago)

Updated the XSB config file to recognize thread_private/1 directives.

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