root/tags/lgt2293/RELEASE_NOTES.txt

Revision 3307, 87.8 KB (checked in by pmoura, 23 months ago)

Corrected a bug in the "potions.lgt" example puzzle that prevented its solution of being found.

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