root/tags/lgt2281/RELEASE_NOTES.txt

Revision 3050, 81.2 KB (checked in by pmoura, 2 years ago)

Require ECLiPSe 5.10 or later version.

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