root/tags/lgt2282/RELEASE_NOTES.txt

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