root/tags/lgt2300/RELEASE_NOTES.txt

Revision 3731, 99.2 KB (checked in by pmoura, 18 months ago)

Updated release data for Logtalk version 2.30.0.

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