root/tags/lgt2291/RELEASE_NOTES.txt

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