root/tags/lgt2310/RELEASE_NOTES.txt

Revision 3977, 112.4 KB (checked in by pmoura, 11 months ago)

Renamed the predicate property "alias/1" to "alias_of/1" in order to disambiguate its meaning.

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