root/tags/lgt2304/RELEASE_NOTES.txt

Revision 3820, 103.6 KB (checked in by pmoura, 16 months ago)

Updated the PDF documentation scripts to use the latest version of CSSToXSLFO (1.5).

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