root/tags/lgt2292/RELEASE_NOTES.txt

Revision 3294, 87.1 KB (checked in by pmoura, 23 months ago)

Improved documentation.

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