root/tags/lgt2311/RELEASE_NOTES.txt

Revision 4009, 113.5 KB (checked in by pmoura, 11 months ago)

Make K-Prolog 5.1.x the default version used by the integration scripts due to some serious bugs uncovered on the K-Prolog 6.0.1 version.

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