root/tags/lgt2280/RELEASE_NOTES.txt

Revision 3038, 80.5 KB (checked in by pmoura, 2 years ago)

Added release date.

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