root/tags/lgt2294/RELEASE_NOTES.txt

Revision 3364, 89.6 KB (checked in by pmoura, 21 months ago)

Added a new example, "threads/blackboard", illustrating the use of the threaded_wait/1 and threaded_notify/1 built-in predicates.

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