root/trunk/RELEASE_NOTES.txt @ 5050

Revision 5050, 184.9 KB (checked in by pmoura, 15 months ago)

Improved automatic generation of XML documenting files for parametric objects when no parameter names are given.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1================================================================
2Logtalk - Open source object-oriented logic programming language
3Release 2.37.2
4
5Copyright (c) 1998-2009 Paulo Moura.        All Rights Reserved.
6Logtalk is free software.  You can redistribute it and/or modify
7it under the terms of the "Artistic License 2.0" as published by
8The Perl Foundation. Consult the "LICENSE.txt" file for details.
9================================================================
10
11
12RELEASE NOTES
13=============
14
15
162.37.2 - June 29, 2009
17
18    Added support for parsing reexport/2 module directives when compiling
19    Prolog modules as Logtalk objects. The predicate renaming operator as/2
20    found on SWI-Prolog and YAP is also supported.
21
22    Added support for using grammar rule non-terminal indicators in the uses/2,
23    multifile/1, reexport/2, and use_module/2 directives.
24
25    Added support for parsing operator declarations in the module/2, export/1,
26    reexport/2, and use_module/2 module directives.
27
28    Added support for declaring and defining object and category multifile
29    grammar rules.
30
31    Corrected a bug where a failed load of a settings file could be reported
32    as successful.
33
34    Corrected a bug when compiling an object or category normal predicate that
35    redefines a built-in Prolog meta-predicate.
36
37    Added missing dynamic directives in the definition of the pseudo-objects
38    "debugger" and "user".
39
40    Eliminated message-sending overheads when sending messages to the pseudo-
41    object "user".
42
43    Allow the "debugger" built-in object to play the role of both a class and
44    a prototype when being specialized or extended.
45
46    Added support for compiling module-qualified arguments in calls to Prolog
47    database and reflection built-in predicates.
48
49    Added support for using multiple info/1 directives per entity and multiple
50    info/2 directives per predicate (useful when compiling modules as objects).
51
52    Added limited support for translating queries as initialization goals when
53    compiling modules as objects (queries must be calls to locally defined
54    predicates or to predicates referenced in use_module/2 directives).
55
56    Optimized performance of meta-predicates whose meta-arguments are goals,
57    not closures, when using static binding.
58
59    Improved automatic generation of XML documenting files for parametric
60    objects when no parameter names are given.
61
62    Updated the SWI-Prolog config file in order to support the proprietary
63    predicate directives format_predicate/2, noprofile/1, and volatile/1.
64
65    Updated the SICStus Prolog, SWI-Prolog, and YAP config files in order to
66    workaround broken meta-predicate declarations for the built-in predicates
67    format/2-3 and in order to support the sloppy use of the ensure_loaded/1
68    directive within modules, rewriting it to a use_module/1 directive.
69
70    Updated the ECLiPSe, SWI-Prolog, and YAP config files in order to support
71    parsing of reexport/1 module directives.
72
73    Updated the YAP config file in order to support parsing of the use_module/1
74    module directive.
75
76    Updated the ECLiPSe config files in order to make available the predicate
77    numbervars/3 and to support parsing of comment/2, import/2, inline/2, and
78    set_flag/3 proprietary directives.
79
80    Updated the SICStus Prolog config files in order to support parsing of the
81    load_foreign_resource/1 proprietary directive.
82
83    Updated the B-Prolog config file in order to support the new foreach/3-4
84    meta-predicates and the new table mode directive in B-Prolog 7.3. Added
85    definition for the "prolog_version" read-only compiler flag.
86
87    Updated the XSB config file in order to enable support for multifile
88    directives (version 3.2 or later is required).
89
90    Improved conversion guide for migrating Prolog module code to Logtalk.
91
92    Improved documentation and examples of using the term and goal expansion
93    mechanisms.
94
95    The "lgt2*.sh" documentation shell scripts have been updated to ignore
96    XML files that are not XML documenting files generated by the Logtalk
97    compiler.
98
99
1002.37.1 - June 2, 2009
101
102    Added support for declaring and defining object and category multifile
103    predicates. This new feature is primarily intended to facilitate migration
104    of Prolog code to Logtalk and should be used with caution as multifile
105    support is spotty among back-end Prolog compilers (easily leading to
106    portability problems). Multifile predicates can be both static or dynamic.
107
108    Added support for compiling clauses for module multifile predicates within
109    objects and categories in order to provide better integration with CLP(FD)
110    and similar constraint packages.
111
112    Added support for parsing module/2 directives whose export list contains
113    operator declarations.
114
115    Improved Logtalk compiler error-checking of file-level op/3 directives.
116
117    Updated the Logtalk compiler to try to detect calls to proprietary built-in
118    meta-predicates not declared in the config files. Detection may fail due to
119    the lack of standardization of meta-predicate specifications.
120
121    Updated the Logtalk compiler to avoid unexpected compilation errors when
122    querying predicate properties due to the lack of standardization of the
123    Prolog predicate_property/2 built-in predicate.
124
125    Improved runtime error-checking for meta-calls whose closure argument is
126    either Object::Closure or Module:Closure.
127
128    Corrected a Logtalk compiler bug where a redefinition of a proprietary
129    built-in meta-predicate (declared in the config files) would be ignored.
130
131    Corrected a bug in the implementation of the Logtalk <</2 control construct
132    where a redefinition of a built-in predicate would be ignored.
133
134    Corrected a Logtalk compiler bug where initialization/1 goals would be
135    compiled as normal code instead of as debug code when compiling a source
136    file in debug mode.
137
138    Updated documentation support to include predicate alias information on
139    the automatically generated XML documenting files. Updated the sample XSLT
140    transformations to output alias information.
141
142    Corrected a bug in the YAP config file that prevented setting the "unknown"
143    flag to "error" and the "language" flag to "iso". Added declarations for
144    the proprietary built-in meta-predicates call_residue_vars/2, ignore/1,
145    depth_bound_call/2, setup_call_cleanup/3, and setup_call_catcher_cleanup/4.
146    Removed declaration for the outdated meta-predicate on_cleanup/1. Added
147    support for the thread_initialization/1 proprietary directive.
148
149    Updated the B-Prolog config file with declarations for the proprietary
150    built-in meta-predicates fd_minimize/2 and fd_maximize/2.
151
152    Updated the GNU Prolog config file in order to recognize the foreign/1-2
153    proprietary directives. Added declarations for the proprietary built-in
154    meta-predicates fd_minimize/2 and fd_maximize/2.
155
156    Updated the ECLiPSe config files with declarations for the proprietary
157    built-in control constructs and meta-predicates ~/1, not/1, and (-?->)/1
158    (the last one only for the non-ISO config files).
159
160    Updated the SWI-Prolog config files with declarations for the proprietary
161    meta-predicates setup_call_cleanup/3, setup_call_catcher_cleanup/4, when/2,
162    and with_output_to/2. Added support for the thread_initialization/1
163    proprietary directive. Improved parsing of use_module/1-2 directives.
164
165    Added a dummy definition for the predicate '$lgt_logtalk_prolog_encoding'/3
166    to the config files of all back-end Prolog compilers that don't support the
167    encoding/1 directive.
168
169    Added predicate sequence/3 to the library object "integer".
170
171    Added predicates append/2 and msort/2 to the library object "list". Fixed
172    some termination issues with the length/2 predicate on buggy input.
173
174    Added aliases foldl/4, foldr/4, scanl/4, and scanr/4 to the library object
175    "meta".
176
177    Added an experimental "logtalk_select.sh" POSIX shell script for switching
178    between installed Logtalk stable versions.
179
180    Added a POSIX integration script, "xsb64lgt", for using Logtalk with the
181    single-threaded, 64 bits version of XSB.
182
183    Added a note on a workaround for compatibility issues between GNU Prolog
184    and the contributed XML parser library. Thanks to Nicolas Pelletier for
185    the bug report.
186
187    Added a new example, "securemp", illustrating the safety rules used by
188    Logtalk in the compilation and execution of meta-predicates (as described
189    on the "Secure Implementation of Meta-predicates" PADL'09 paper).
190
191    Extended the "constraints" example for SWI-Prolog and YAP illustrating
192    the definition of custom constraint propagators within objects.
193
194    Added instructions on how to enable a source code browser when editing
195    Logtalk source files with the Vim text editor (using the Taglist Vim
196    plugin and Exuberant ctags).
197
198
1992.37.0 - May 11, 2009
200
201    Improved dynamic binding performance by making calls to the lookup caches
202    call the cached methods instead of simply returning the corresponding
203    callable terms, therefore no longer requiring a meta-call for executing
204    the methods. For multi-threaded back-end Prolog compilers, the new caching
205    mechanisms forces the lookup cache dynamic predicates to be declared
206    thread shared instead of thread local.
207
208    Improved performance of the built-in database methods retractall/1 and
209    retract/1.
210
211    Improved performance of user-defined object and category meta-predicates.
212
213    Added support for meta-calls whose closure argument is ::Closure.
214
215    Simplified compilation and improved performance of predicates that call
216    local user meta-predicates.
217
218    Corrected a bug where calls to local user meta-predicates would fail.
219   
220    Corrected a bug where local calls to user meta-predicates would not be
221    visible to the built-in debugger.
222
223    Improved Logtalk compiler error checking for accidental redefinition of
224    control constructs.
225
226    Improved Logtalk runtime error checking for message sending and "super"
227    control constructs when the message is only bounded at runtime.
228
229    Updated the exception terms thrown when sending messages to self in order
230    to use the ::/1 control construct for the culprit goal instead of the ::/2
231    control construct.
232
233    Simplified message sending implementation by removing the seldom used
234    control constructs that allowed sending the same message to a conjunction
235    or disjunction of objects.
236
237    Specify \+/1, call/1-N, and once/1 as built-in local meta-predicates.
238
239    Disallow using Logtalk and Prolog built-in meta-predicates as messages in
240    order to avoid conflicting semantics with user-defined object and category
241    meta-predicates. The Logtalk control constructs (,)/2, (;)/2, (->)/2, and
242    !/0 may still be used as syntactic sugar when sending a set of messages to
243    a single object.
244
245    Updated the Logtalk compiler to ensure that calls to the built-in meta-
246    predicate call/2-N within a category have the same semantics as other
247    built-in meta-predicates whose meta-arguments are goals.
248
249    Improved performance of the :/1 control construct when using dynamic
250    binding by adding a predicate lookup caching mechanism.
251
252    Added support for using the :/1 control construct with a non-instantiated
253    argument at compile-time (handled using dynamic binding at runtime).
254
255    Allow a variable clause body to be interpreted as a meta-call instead of
256    an instantiation error. Although is not recommended to use a variable as
257    a goal instead of using the call/1 built-in meta-predicate, this change
258    allows for uniform handling of variables as goals in clause bodies. Thanks
259    to Victor Noel for the bug report.
260
261    Updated the ECLiPSe config files in order to support the non-standard
262    *->/2 (aka "soft cut") control construct. Thanks to Victor Noel for the
263    bug report.
264
265    Updated the Ciao config file in order to support the non-standard if/3
266    (aka "soft cut") control construct.
267
268    Updated the Qu-Prolog config file in order to enable support for multifile
269    directives (version 8.9 or later is now required).
270
271    Updated the Windows installer in order to ensure compatibility with the
272    new CxProlog 0.97.3 version. Updated the CxProlog config file in order
273    to set the "underscore_variables" compiler flag to "dont_care".
274
275    The library object "varlist" is no longer derived from "list" as several
276    of the "listp" predicates are not meaningful or cannot be used with the
277    same modes. Added a new library protocol "varlistp". Corrected several
278    bugs in the implementation of the library object "varlist" predicates.
279    Thanks to Victor Noel for the bug report.
280
281    Added meta-predicates scan_left/4, scan_right/4, map/6-8, and partition/6
282    to the library object "meta". Optimized performance of the meta-predicates
283    fold_left/4, fold_right/4, include/3, exclude/3, map/2-8, and partition/4.
284
285    Added predicates partition/5, same_length/3, selectchk/3, and
286    subsequence/3 to the library objects "difflist" and "list".
287
288    Added predicates product/3 and selectchk/3 to the library object "set".
289
290    Updated the "puzzle" constraint example for SWI-Prolog to avoid leaking
291    "clpfd" predicates in query binding results. Thanks to Ulrich Neumerkel
292    for reporting the problem.
293
294    Corrected a bug in the "expansion" example that prevented some of the
295    example queries from working.
296
297    Simplified running the "poem" example.
298
299
3002.36.0 - April 9, 2009
301
302    Added support for overriding Logtalk default compiler flags (specified
303    in the back-end Prolog compiler config files) using new settings files.
304    Logtalk will load a "settings.lgt" file in the startup directory. If
305    this file is not found, Logtalk will load a "settings.lgt" file in the
306    Logtalk user directory. Requires running Logtalk with a back-end Prolog
307    compiler supporting access to environment variables. Loading of settings
308    files from the Logtalk startup directory is only available when running
309    on Windows for B-Prolog, Ciao, GNU Prolog, SWI-Prolog, XSB, and YAP.
310    SICStus Prolog is incompatible with this new feature, requiring manual
311    loading of settings files after startup. Consult the "configs/NOTES.txt"
312    file for compatibility details for other Prolog compilers.
313
314    Updated the "cplgtdirs.*" scripts to copy an existing "settings.lgt" file
315    from the backup of the Logtalk user folder to the new Logtalk user folder.
316
317    Updated the Logtalk compiler and runtime and all the config files to use
318    the more standard call/N predicates instead of the call_with_args/N
319    predicates.
320
321    Improved the XML documentation automatically generated for objects and
322    categories by appending to the compilation mode all the active optional
323    features and the "threaded" and "synchronized" properties. Improved the
324    XML documentation automatically generated for synchronized predicates by
325    appending the "synchronized" property to the predicate compilation mode.
326
327    Improved error handling for the built-in predicates logtalk_load/2,
328    logtalk_compile/2, current_logtalk_flag/2, and set_logtalk_flag/2
329    when checking flag names and values.
330
331    Improved Logtalk compiler error and warning reporting by printing,
332    whenever possible, the range of lines where the problem was found
333    instead of printing only the starting line.
334
335    Added new object properties "complements", "context_switching_calls",
336    "events", and "dynamic_declarations". Added new category property
337    "events". These properties are defined whenever the corresponding
338    compiler flags are set to "allow" at the time of entity compilation.
339
340    Corrected a bug where some file-related entity properties would not
341    be stored when using back-end Prolog compilers that don't support
342    multifile predicates.
343
344    Corrected a bug (introduced in version 2.35.0) in the compilation
345    and processing of "super" calls for objects that both instantiate
346    and specialize other objects.
347
348    Corrected a bug (introduced in version 2.35.1) in the Logtalk compiler
349    that prevented compilation of Prolog modules as objects.
350
351    Corrected a bug in the implementation of the Logtalk built-in predicate
352    threaded/1 that would result in wasting space in the main thread message
353    queue with duplicated messages. Thanks to Rui Marques for the bug report.
354
355    Corrected a bug where the Logtalk compiler would report the number of
356    compilation warnings with the "report" compiler flag set to "off".
357
358    Updated the Logtalk compiler in order to avoid unwanted backtracking
359    during source file compilation and when calling the entity creation
360    built-in predicates.
361
362    The compiler flags "context_switching_calls", "startup_message", and
363    "altdirs" are no longer read-only flags in order to support changing
364    their default values from within "settings.lgt" files. The possible
365    values for the compiler flags "dynamic_declarations", "complements",
366    "context_switching_calls", and "events" are now "allow" and "deny".
367    Added a new read-only compiler flag "prolog_version". Renamed the
368    compiler flag "prolog" to "prolog_dialect".
369
370    Changed object compilation in order to restrict the use of the <</2
371    control construct to objects compiled with the "context_switching_calls"
372    compiler flag set to "allow".
373
374    Changed the "cplgtdirs.*" and installation scripts to no longer make a
375    copy of the "configs" directory in the Logtalk user directory. Updated
376    the customization instructions to advise users to edit the "settings.lgt"
377    file instead of editing the Prolog configuration files.
378
379    Changed the Windows installer script in order to create Logtalk startup
380    scripts that start from the current directory as returned by the "%CD%"
381    dynamic environment variable. This allows a shortcut to be simply copied
382    to a Logtalk project directory without requiring editing its properties
383    in order to set the startup directory to the project directory.
384
385    Updated the XSB-MT integration scripts to make all lookup cache dynamic
386    predicates thread private. Updated the XSB config file for version 3.2,
387    which is now required for running Logtalk.
388
389    Added a new '$lgt_prolog_feature'/2 predicate to all config files, used
390    for representing back-end Prolog supported features that are previously
391    represented by read-only compiler flags.
392
393    Added new '$lgt_environment_variable'/2, '$lgt_startup_directory'/1, and
394    '$lgt_user_directory'/1 predicates to all config files.
395
396    Changed the default value for the "startup_message" compiler flag to the
397    less verbose "flags(compact)".
398
399    Updated the config files of the Ciao, CxProlog, GNU Prolog, ECLiPSE, and
400    XSB compilers to set the default directory for temporary files depending
401    on the host operating-system.
402
403    Updated the config files of the Ciao, ECLiPSe, GNU Prolog, Qu-Prolog,
404    and SICStus Prolog compilers to return term position line numbers for
405    reporting warnings and errors.
406
407    Switched off use of multifile/1 directives for Amzi! Prolog due to its
408    buggy implementation on this Prolog compiler.
409
410    Updated the Ciao config file to workaround a weird bug in the read_term/3
411    predicate that prevented compilation of some Logtalk source files.
412
413    Updated the K-Prolog config files in order to make the definition of the
414    '$lgt_delete_file'/1 predicate compatible with Windows systems.
415
416    Updated the predicate comments in the library protocol "loopp" in order
417    to workaround the limitation on the maximum size of atoms in Qu-Prolog.
418
419    Removed the obsolete SWI-Prolog hook file "swi_set_logtalk_context.pl"
420    (the Logtalk control construct <</2 provides similar functionality).
421
422    Added a check/1 predicate to all objects in the "types" library. This
423    predicate differs from the existing valid/1 predicate by throwing an
424    exception when the argument is not valid instead of failing.
425
426    Added multifile and dynamic declarations for the logtalk_library_path/2
427    Logtalk predicate to the "libpaths/libpaths.pl" file. This change allows
428    use of Ciao as the back-end Prolog compiler without patching the Logtalk
429    compiler and runtime (but also results in a harmless warning when using
430    GNU Prolog).
431
432    Updated the POSIX integration scripts to export the environment variable
433    LOGTALK_STARTUP_DIRECTORY before starting Logtalk.
434
435    Changed the SWI-Prolog POSIX integration script to use the option "-s"
436    instead of the option "-f" in order to allow loading of any existing
437    user initialization file (".plrc" on POSIX systems; see the SWI-Prolog
438    reference manual) before loading the Logtalk files. On Windows the use
439    of the "-s" results in a weird double initialization bug.
440
441    Workaround a compilation error in the object "salt/3" in the "searching"
442    example when using SICStus Prolog as a back-end compiler.
443
444
4452.35.1 - March 1, 2009
446
447    Allow explicitly qualified module calls in the body of category and object
448    predicate clauses without requiring the calls to be wrapped within a {}/1
449    control construct to ensure successful compilation. This requires an hack
450    in the config files of most back-end Prolog compilers with module systems
451    as the implementations of the predicate_property/2 built-in predicate
452    cannot be used to test if :/2 is a built-in control construct. Updated the
453    config files of Amzi! Prolog, Ciao, IF/Prolog, Quintus Prolog, SICStus
454    Prolog, SWI-Prolog, XSB, and YAP.
455
456    Improved the Logtalk compiler compatibility with Prolog meta_predicate/1
457    directives that use the integer zero as an alternative to the atom ':' for
458    denoting meta-arguments that are goals.
459
460    Added limited support for calling Prolog meta-predicates defined in module
461    libraries (meta-arguments must be goals, not closures; the Logtalk compiler
462    assumes that an imported_from/1 property is defined for these predicates).
463
464    Implemented a "warnings" value for the "report" compiler option, providing
465    a less verbose compilation reporting where only warnings are printed.
466
467    Corrected a Logtalk compiler bug where warnings related to synchronized
468    predicates would be reported even with the "report" flag set to "off".
469
470    Added support to the message sending mechanisms for using the object proxy
471    access notation when the message receiver is only known at runtime.
472
473    Changed the semantics of the Logtalk notation for accessing object proxies
474    when sending a message to allow backtracking over the proxy goal.
475
476    Updated the Logtalk compiler to avoid reporting multiples reference to the
477    same unknown parametric object.
478
479    Corrected a bug in the implementation of the "smart_compilation" compiler
480    flag that would result in a misleading successful compilation of a source
481    file containing syntax errors after the first failed compilation when the
482    errors are not corrected between compilations. Thanks to Joerg Schuster
483    for the bug report.
484
485    Added a '$lgt_delete_file'/1 predicate to all config files. For back-end
486    Prolog compilers that don't support a built-in predicate for deleting
487    files, the '$lgt_delete_file'/1 predicate simply fails. This predicate is
488    used by the Logtalk compiler to ensure correct behavior of the compiler
489    flag "smart_compilation".
490
491    Updated the YAP config file to ensure that the "syntax_errors" proprietary
492    flag is set to "error".
493
494    Integration with GNU Prolog now requires version 1.3.1 or later of this
495    compiler.
496
497    Added a workaround to the ECLiPSE config files in order to support smart
498    compilation of source files (due to the non-standard implementation of the
499    read_term/3 predicate that fails for syntax errors instead of throwing an
500    exception).
501
502    Updated the library object "term", adding a singletons/2 predicate and
503    renaming the predicate vars/2 to variables/2 (the old name is still
504    available but shall be considered deprecated). Both the variables/2 and
505    the singletons/2 predicates return variables ordered as found when doing
506    a depth-first, left-to-right term traversal. Optimized the implementation
507    of the predicates ground/1 and variables/2 to use the Prolog built-in
508    versions of these predicates when available.
509
510    Moved the Prolog Integration and Migration Guide into the User Manual.
511
512    Updated the "BIBLIOGRAPHY.bib" file with recent Logtalk publications.
513
514    Updated the "build_release.sh" POSIX shell script steps for building the
515    MacOS X installer.
516
517    Updated the Windows installer to disable by default the installation of
518    the integration shortcuts for Ciao Prolog and Quintus Prolog as these
519    compilers require patches that render Logtalk incompatible with the other
520    compilers.
521
522    Simplified loading and testing instructions for the XML parser included
523    in the "contributions" directory. Added a missing logtalk_library_path/2
524    entry for XML parser directory.
525
526
5272.35.0 - January 16, 2009
528
529    Improved compilation of source code resulting in smaller intermediate
530    Prolog files and better performance for most back-end Prolog compilers.
531
532    Improved caching of message sending predicate lookups (by generating
533    more reusable cache entries for public predicates, improving lookup
534    performance and cache hits).
535
536    Improved caching of ^^/1 calls (by generating more reusable cache entries,
537    improving lookup performance and cache hits).
538
539    Simplified compilation of meta-predicates. Allow meta-predicates to be
540    specialized and called using the ^^/1 control construct.
541
542    Simplified and improved performance of the multi-threading built-in
543    predicates within the context of the pseudo-object "user" (e.g. for
544    top-level queries).
545
546    Changed compilation of once/1 goals in debug mode in order to make them
547    explicit when tracing using the built-in debugger.
548
549    Added support for multiple source-level and entity-level initialization/1
550    directives (matching the ISO Prolog standard and current Prolog practice).
551
552    Corrected a bug in the compilation of top-level queries for the Logtalk
553    built-in predicates.
554
555    Corrected a predicate scope checking bug when using the dynamic-binding
556    cache entries.
557
558    Corrected a bug when compiling entities in debug mode that contain
559    initialization goals. Thanks to Parker Jones for the bug report.
560
561    Corrected a bug in the library object "meta" where the deprecated
562    predicates filter/3 and succeeds/2 are declared (using aliases) but
563    not defined.
564
565    Changed the formulas used for calculating sample skewness and sample
566    kurtosis to match the formulas used in statistical software such as R.
567
568    Added declaration for the proprietary findall/4 meta-predicate to the
569    SWI-Prolog and YAP config files.
570
571    Corrected processing of the proprietary load_foreign_files/3 directive
572    in the YAP config file.
573
574    Switched off use of multifile/1 directives for Ciao due to its buggy
575    implementation on this Prolog compiler.
576
577
5782.34.1 - December 15, 2008
579
580    Allow the ^^/1 control construct to be used for calling any inherited
581    predicate instead of being restricted to calling inherited predicates
582    in the context of their redefinitions.
583
584    Updated the Logtalk compiler to detect (and report as an error) the
585    definition of two entities with the same name in a source file.
586
587    Updated the Logtalk compiler to detect (and report as an error) any
588    invalid relation between an entity and itself. In most cases, these
589    errors could result in predicate lookup endless loops.
590
591    Corrected a long-standing bug in the implementation of the Obj<<Pred
592    control construct, which failed to properly set the execution context
593    to the receiving object for top-level queries. This bug, which results
594    in a stack overflow error, was uncovered by an unrelated bug fix in the
595    previous Logtalk version.
596
597    Fixed some broken links in the Logtalk XHTML documentation. Updated the
598    screen CSS file to match the new, lighter style of the Logtalk website.
599
600    Updated the "testing" example to take into account the recently added
601    "dynamic_declarations" compiler flag.
602
603    Added a set of double-clickable *.command Terminal.app files for starting
604    Logtalk with selected back-end Prolog compilers on MacOS X.
605
606    Updated the MacOS X installer postflight script to open the Logtalk
607    installation folder, the *.command files folder, and the "README.txt"
608    file.
609
610    Updated the "BIBLIOGRAPHY.bib" file with recent Logtalk publications.
611
612
6132.34.0 - November 26, 2008
614
615    Added conditional compilation support, as found in some Prolog compilers,
616    using the new directives if/1, elif/1, else/0, and endif/0. The arguments
617    of the if/1 and elif/1 directives are subjected to goal expansion.
618
619    Added a "prolog" read-only compiler flag whose value is the name of the
620    back-end Prolog compiler (an atom). This flag is defined in the config
621    files and can be used for conditional compilation of Prolog specific code.
622
623    Added an expand_goal/2 built-in method to support explicit calls to the
624    goal_expansion/2 user-defined hook. Updated the term expansion mechanism
625    to allow the expansion to be a single term instead of a list of terms.
626    Improved the documentation of the term and goal expansion predicates.
627
628    Simplified the implementation of the threaded/1 built-in predicate.
629
630    Removed support for the deprecated message_queue_create/1 Prolog built-in
631    predicate.
632
633    Corrected a bug in the implementation of the predicate_property/2 built-in
634    method which would return wrong meta-predicate templates for predicate
635    aliases.
636
637    Corrected a bug in the compilation of meta-calls to predicates defined
638    in the pseudo-object "user".
639
640    Corrected a bug that prevented goal expansion of source file initialization
641    goals (expressed using the initialization/1 directive).
642
643    Modified the "statistics" library to use the variance numerically stable
644    algorithm to calculate accurate values for the standard deviation for both
645    samples and populations. Thanks to Parker Jones for the bug report. Added
646    calculation of sample and population kurtosis.
647
648    Added predicates included/3, excluded/3, fold_left/4, and fold_right/4
649    to the library entities "metap" and "meta" (requested by Paul Crocker).
650    Renamed the predicates filter/3 and succeeds/2 to included/3 and map/2,
651    respectively (the older names are still available using aliases defined
652    in "meta").
653
654    Changed the file name extension of all config "*.config" files to "*.pl".
655    Changed the file name extension of all library "*.notes" files to "*.txt".
656
657    Updated the "metapredicates" example with Paul Crocker's contributions
658    to illustrate the use of some of the meta-predicates implemented in the
659    Logtalk library.
660
661    Updated the "expansion" example to illustrate the new expand_goal/2
662    built-in method. Improved example documentation.
663
664    Added an example, "cc", of using conditional compilation directives to
665    implement a portable operating-system interface for selected back-end
666    Prolog compilers.
667
668    Added an example, "prototypes", illustrating the concept of "prototype".
669
670    Added syntax coloring support for the new expand_goal/2 method and for
671    the if/1, elif/1, else/0, endif/0, set_logtalk_flag/2, ensure_loaded/1,
672    and set_prolog_flag/2 directives to the supported text editors and
673    syntax highlighters.
674
675    Fixed a block comment syntax coloring bug in the support for the Highlight
676    syntax highlighter with the help of André Simon.
677
678
6792.33.2 - November 3, 2008
680
681    Added support for using the set_logtalk_flag/2 directive in source files.
682    This directive is executed when read (thus affecting the compilation
683    of the source code that follows) but its scope is restricted to the source
684    file being compiled.
685
686    Allow a complementing category to define aliases for predicates of the
687    complemented object.
688
689    Improved reporting of line numbers for syntax warnings and errors when
690    using YAP or SWI-Prolog as back-end compilers (requires YAP git version).
691
692    Improved reporting of entity existence errors for top-level queries.
693
694    Implemented a more flexible internal representation of entity properties.
695    Added entity properties file(File, Path) and lines(Start, End) for
696    entities compiled and loaded from source files. The property lines/2 is
697    only available when using YAP or SWI-Prolog as back-end compilers.
698
699    Added missing "built_in" properties for the built-in protocols "expanding"
700    and "monitoring".
701
702    Corrected a bug where compiler options are not cleared after compilation
703    of source files. This bug would result in wrong compilation of messages
704    sent from the top-level interpreter (i.e. messages sent by the pseudo-
705    object "user") whenever events or hooks compiler options are used.
706
707    Updated the Logtalk compiler to print a warning when defining clauses for
708    the built-in predicates term_expansion/2 and goal_expansion/2 without a
709    reference to the built-in protocol "expanding".
710
711    Updated the Logtalk compiler to provide file information when printing
712    redefined entity warnings if the files of the new and the old definitions
713    are different (requires support for the file/2 entity property).
714
715    Updated the Logtalk compiler to prefix all informative messages with the
716    line comment character, "%", to make it easier to use interactive section
717    transcripts as scripts.
718
719    Corrected a bug that prevented using synchronized/1 predicate directives
720    within protocols.
721
722    Corrected a bug where portability warnings would be reported even when the
723    "report" compiler option is turned off. Corrected a bug where portability
724    warnings would not increment the warnings counter.
725
726    Added an optimization and safety compiler option, "complements", that
727    allows objects to be compiled with support for complementing categories
728    either enabled or disabled. The default value (set in the config files)
729    is "off" (disabled).
730
731    Added an optimization and safety compiler option, "dynamic_declarations",
732    that allows objects to be compiled with support for dynamic declaration of
733    predicates (using the built-in database methods asserta/1 and assertz/1)
734    either enabled or disabled. The default value (set in the config files) is
735    "off" (disabled).
736
737    Updated the Logtalk built-in debugger to print goal invocation numbers
738    and to accept the return and enter keys as alternatives to the "c" key
739    ("creep") when tracing. Updated the implementation of the "display"
740    command to include the write options quoted(false) and numbervars(false)
741    (as common in most Prolog debuggers). Added a "unify" command.
742
743    Modified the implementation of the built-in predicate define_events/5 to
744    throw an exception when the monitor object doesn't define the required
745    event handler methods (previously the define_events/5 call would simply
746    fail).
747
748    Added a customized version of the read_term/2 predicate to all config
749    files that returns the line where a term starts for back-end Prolog
750    compilers whose implementation of the read_term/2 predicate supports
751    this information.
752
753    Updated the shortcut created by the Windows installer for integration with
754    K-Prolog to require version 6.0.4 of this compiler.
755
756    Updated the User Manual comparison between Logtalk nomenclature and C++
757    and Java nomenclatures.
758
759    Added a simple example, "instvars", illustrating how to define instance
760    variables, default variable values, and setter and getter methods.
761
762    Added a simple example, "classmethods", illustrating how to define
763    "class methods" as found on class-based object-oriented programming
764    languages.
765
766    Improved the documentation of the "complements", "hello_world", "hooks",
767    and "msglog" examples.
768
769    Added a new logic puzzle programming example, adapted with permission
770    from Kevin Stone's BrainBashers website (http://www.brainbashers.com/).
771
772    Updated all the examples that make use of event-driven programming
773    ("birthdays", "bricks", "complements", "msglog", "polygons", "profiling",
774    and "searching") to ensure correct functionality after fixing the bug in
775    cleaning compiler options after compilation of source files.
776
777    Updated the "dynpred" example to use the new "dynamic_declarations"
778    compiler option. Updated the "complements" example to use the new
779    "complements" compiler option.
780
781    Corrected a Vim syntax coloring bug with line comments occurring within
782    entity opening directives.
783
784
7852.33.1 - October 12, 2008
786
787    Added a syntax construct for easy access to parametric object proxies
788    represented as Prolog facts when sending a message ({Proxy}::Message).
789    Updated the "proxies" example to illustrate this new functionality.
790
791    Improved the Logtalk built-in debugger to print clause numbers for
792    static predicates at the unification ports ("fact" and "rule").
793
794    Modified the built-in methods create_category/4, create_object/4 and
795    create_protocol/3 to accept a variable as the first argument, which
796    will be instantiated to the identifier generated for the new entity.
797
798    Modified the database built-in methods to allow initialization of static
799    predicates for dynamic objects when the predicates are declared in "this".
800    These changes simplify the initialization of dynamic objects when writing
801    constructors. The dynamic objects must be descendants of "this".
802
803    Fixed a bug in the Logtalk compiler that would result in failure to
804    restore the operator table in case of compilation error.
805
806    Removed support for the deprecated mutex_create/1 Prolog built-in
807    predicate.
808
809    Updated the XSB config file by switching off the use of multifile/1
810    directives when compiling Logtalk source files as a workaround for know
811    bugs in the implementation of this directive for dynamic predicates.
812
813    Updated the ECLiPSe 6.0 config files in order to switch on the use of
814    multifile/1 directives.
815
816    Update the CxProlog config file to work with and require version 0.97.2.
817
818    Updated the Windows installer to warn the user when it fails to detect
819    the installation of the selected Prolog compilers. Fixed a bug where the
820    creation of the K-Prolog integration shortcut could fail when performing
821    a custom installation. Fixed a bug in detecting a CxProlog installation.
822
823    Added a library for descriptive statistics. For details, see the file
824    "library/statistics.notes".
825
826    Added a new library object, "pairs", defining predicates over lists of
827    pairs (key-value terms).
828
829    Added a new library object, "gensym", defining predicates for generating
830    unique atoms (object protocol based on the "gensym" module of SWI-Prolog).
831
832    Added a predicate partition/4 to the library entities "metap" and "meta".
833
834    Added predicates plus/3 and succ/2 to the library object "integer".
835
836    Added predicates is_ascii/1, is_white_space/1, is_quote/1, is_period/1,
837    is_punctation/1, and parenthesis/2 to the library entities "characterp"
838    and "character".
839
840    Modified the implementation of the predicate product/2 in the library
841    object "numberlist" to fail for empty lists.
842
843    Added an example, "people", illustrating a simple implementation solution
844    for object constructors.
845
846    Improved "metainterpreters" example.
847
848    Improved performance of the object initialization and release predicates
849    defined in the category "initialization" of the "roots" example.
850
851
8522.33.0 - September 1, 2008
853
854    Applied several optimizations to the Logtalk compiler, mostly related to
855    non-detected deterministic predicates due to calls to dynamic predicates
856    or due to limitations in clause indexing by most Prolog compilers.
857
858    Added support for using Prolog use_module/2 directives in objects and
859    categories. This allows module predicates to be called using implicit
860    qualification, improving readability. The use_module/2 directive supports
861    the declaration of predicate aliases using the notation Original:Alias.
862
863    Added support for meta-calls whose closure arguments are explicitly
864    qualified (using either Object::Closure or Module:Closure).
865
866    Added support for using the ensure_loaded/1 and the set_prolog_flag/2
867    directives in source files. These directives are both processed when
868    read (thus affecting the compilation of the source code that follows)
869    and copied to the generated intermediate Prolog files.
870
871    Corrected a set of singleton variable related bugs in the Logtalk compiler
872    and runtime. Thanks to Joachim Schimpf and Kish Shen work on the improved
873    singleton variable checking code found on the new ECLiPSe 6.0 compiler.
874
875    Simplified the implementation of the Logtalk built-in debugger. Changed
876    the implementation of the debugger abort command to use the de-facto
877    standard Prolog built-in predicate abort/0. Corrected a bug that prevented
878    the use of the command "ignore" at the redo port.
879
880    Removed the Logtalk dispatcher thread used for dispatching asynchronous
881    multi-threading calls, simplifying the implementation and improving the
882    performance of the asynchronous built-in multi-threading predicates.
883
884    Corrected a bug in the implementation of the threaded_once/1-2 built-in
885    multi-threading predicates (use of detached threads could make the methods
886    fail despite the success of the thread goals).
887
888    Improved performance of multi-threading applications (specially on MacOS X)
889    when using SWI-Prolog as the back-end compiler by making the lookup caches
890    thread local.
891
892    Small performance improvement of the threaded/1 built-in multi-threading
893    predicate.
894
895    Added a multifile/1 directive for the logtalk_library_path/2 predicate.
896
897    Corrected a bug in the verification of portable calls that would fail to
898    flag the soft-cut control construct (_ *-> _; _) found on some Prolog
899    compilers.
900
901    Corrected a bug in the implementation of the built-in database predicates
902    retract/1 and retractall/1 when adding a cache entry for a local dynamic
903    predicate with no scope declaration.
904
905    Corrected a bug in the compilation of source file op/3 directives whose
906    third argument is a list of operator specifiers instead of a single
907    operator specifier.
908
909    Added ECLiPSe 6.0 config files. Modified the POSIX script "eclipselgt"
910    to test for both ECLiPSe 5.10 and 6.0 versions. Added Windows shortcut
911    to start Logtalk with ECLiPSe 6.0.
912
913    Updated the GNU Prolog config file to allow Logtalk to recognize as
914    built-in predicates the finite domain solver built-in predicates.
915
916    Added a new set of examples, "constraints", illustrating how to use the
917    Constraint Domain Solver libraries available with B-Prolog, ECLiPSe,
918    GNU Prolog, SWI-Prolog, and YAP. Thanks to Markus Triska for his help
919    with the YAP and SWI-Prolog CLP(FD) examples.
920
921    Updated the "mtbatch" example to provide multi-threading overhead data
922    for the competitive or-parallelism benchmark.
923
924
9252.32.2 - July 26, 2008
926
927    Simplified the predicate lookup linking clauses that are generated when
928    compiling private and protected entity relations, resulting in a small
929    runtime performance improvement when looking up non-cached predicate
930    declarations.
931
932    Simplified and optimized handling of predicate aliases when looking up
933    predicate declarations and predicate definitions.
934
935    When sending a message to an object using the ::/2 control construct,
936    also check if the sender matches the scope container when the message
937    does not correspond to a public predicate. This is necessary in order
938    to allow calling a protected or a private predicate in "this" from
939    within a category.
940
941    Updated the Logtalk compiler to throw an error when detecting a call
942    to a dynamic predicate in the body of a predicate clause defined in a
943    category.
944
945    Optimized the implementation of the ^^/1 control construct. The Logtalk
946    compiler now requires an instantiated, callable argument that must have
947    the same functor and arity of the predicate being (re)defined.
948
949    Allow the ^^/1 control construct to be used within extended categories.
950    Updated the "engines" example to illustrate this new functionality.
951
952    Moved support for categories that complement existing objects from the
953    code generated when compiling objects to the Logtalk runtime, making the
954    implementation of this feature easier to maintain and contributing to
955    smaller code sizes of the intermediate Prolog files.
956
957    Corrected a typo in the exception term throw by the built-in database
958    method assertz/1 when an error occurs while trying to assert a fact.
959
960    Restored the redefined entity warnings for back-end Prolog compilers
961    that support multifile predicates (broken in the final version of 2.32.1).
962
963    Changed the format of the Logtalk compiler informative messages for
964    better readability.
965
966    Improved simplification of the clauses generated by the compilation of
967    object and category predicate clauses.
968
969    Corrected a bug that prevented asserting and retracting clauses in "this"
970    from within a category.
971
972    Corrected a bug in the implementation of the built-in database method
973    retractall/1 when retracting clauses in an object compiled in debug mode.
974    Thanks to Parker Jones for the bug report.
975
976    Updated all config files due to changes to the predicate used to declare
977    proprietary meta-predicates, '$lgt_pl_meta_predicate'/1. Added a second
978    argument to represent if the meta-predicate is either a built-in predicate
979    or a built-in control construct. This is necessary in order to properly
980    compile calls to these proprietary meta-predicates when in debug mode.
981    Thanks to Victor Noel for the bug report.
982
983    Corrected a bug in the config files hooks used in handling proprietary
984    Prolog directives for the SWI-Prolog, B-Prolog YAP, SICStus, and XSB
985    Prolog compilers. Added a new internal predicate for constructing
986    predicate indicators for compiled entity predicates that simplifies the
987    config files hooks used in handling proprietary Prolog directives.
988
989    Changed the valid values of the read-only compiler flag "break_predicate"
990    to "supported" and "unsupported" for consistency with other read-only
991    compiler flags.
992
993    Updated the SWI-Prolog config file to set the Prolog flag "optimise" to
994    true. Added declaration for the setup_and_call_cleanup/3 meta-predicate.
995    Removed setting of the deprecated "prompt_alternatives_no_bindings"
996    Prolog flag. Oldest SWI-Prolog compatible version is now 5.6.44.
997
998    Updated the GNU-Prolog config file, adding a declaration for the
999    call_det/2 proprietary meta-predicate. GNU-Prolog version 1.3.0 or
1000    later is now required.
1001
1002    Added list mapping predicates map/4 and map/5 to the "metap" library
1003    protocol and the "meta" library object.
1004
1005    Added a proper definition for the predicate select/3 to the "varlist"
1006    library object.
1007
1008    Added a new example, "logging", of using a category to define a set of
1009    predicates that handle a dynamic predicate in the context of "this"
1010    (i.e. in the context of the objects importing the category).
1011
1012    Added a new multi-threading example, "integration2d", implementing methods
1013    for numerical integration for functions of two variables, contributed by
1014    Paul Crocker.
1015
1016    Updated the "integration" multi-threading example by bringing all example
1017    functions under the same object in order to allow for static binding. This
1018    is essential for good results in operating-systems with poor mutex thread
1019    synchronization performance such as MacOS X.
1020
1021    Added experimental support for the GeSHi syntax highlighter, contributed
1022    by Clara Dimene.
1023
1024    Improved support for the Pygments syntax highlighter, correcting coloring
1025    bugs when there are single line comments in the same lines of an opening
1026    entity directive.
1027
1028
10292.32.1 - July 7, 2008
1030
1031    Restored the redefined entity warnings for back-end Prolog compilers
1032    that support multifile predicates. Simplified updating of the runtime
1033    tables when compiling and loading source files with back-end Prolog
1034    compilers that don't support multifile predicates.
1035
1036    Changed the representation of the runtime tables for loaded entities
1037    in order to drop the need of a "functors clause" per entity. This avoids
1038    some redundancy on the representation of entity functors and also helps
1039    reducing a bit the size of the generated Prolog files.
1040
1041    When reloading an object, also clean all entries in the event handlers
1042    table where the object plays the role of a monitor.
1043
1044    Modified the Logtalk runtime to clean all lookup caches when compiling
1045    and loading source files (instead of doing it only when the files
1046    redefine existing entities).
1047
1048    Corrected a bug that prevented using predicate aliases with the :/1
1049    control construct without static binding.
1050
1051    Updated the CxProlog config file to take advantage and require the new
1052    0.97.1 version (which implements some more ISO Prolog predicates and
1053    expands support for text encodings).
1054
1055    Updated the B-Prolog config file to take advantage and require the new
1056    7.1 version (which adds support for the multifile/1 predicate directive).
1057
1058    Updated the SWI-Prolog config file notes about possible compatibility
1059    issues with the default setting of the proprietary "iso" Prolog flag
1060    to "true".
1061
1062    Updated the SWI-Prolog hook file, "swihook.pl", to avoid hijacking the
1063    arguments of use_module/1-2 calls (which resulted in wrongly loading
1064    Logtalk libraries with the same name as the SWI-Prolog library modules
1065    we intended to load).
1066
1067    Updated the "k6.config" config file for the K-Prolog 6.0.3 release.
1068    Renamed the K-Prolog 5.1.x config file from "k.config" to "k5.config"
1069    to avoid being mistaken for the K-Prolog 6.0.x config file. Updated
1070    the "plclgt.sh" integration script to work with both K-Prolog 5.1.x
1071    and 6.0.x versions.
1072
1073    Renamed the SICStus Prolog 3 config file from "sicstus.config" to
1074    "sicstus3.config" to avoid being mistaken for the SICStus Prolog 4
1075    config file.
1076
1077    Updated the POSIX integration scripts and the Windows installer script
1078    to detect outdated versions of the Logtalk user folder (setting the
1079    compatibility version to 2.32.0 or later).
1080
1081    Improved the Prolog migration guide on converting code that makes use
1082    of multifile predicates.
1083
1084    Added note on licensing conditions to several files. Clarified copyright
1085    and license conditions for files on the "contributions" folder. Clarified
1086    dual-licensing conditions for text editor and syntax highlighter
1087    supporting files. Added license file to the TextMate bundle.
1088
1089    Updated support for the Vim text editor (changed the Logtalk file type
1090    plug-in to set the path to the completion dictionary and updated the
1091    installation instructions).
1092
1093    Updated the support for the Pygments syntax highlighter to avoid marking
1094    as errors non-standard directives.
1095
1096
10972.32.0 - June 16, 2008
1098
1099    Updated the Logtalk compiler and runtime to use multifile predicates for
1100    the runtime tables of loaded entities and entities relations. This is
1101    necessary to generate sensible intermediate Prolog code for large files
1102    with tens of thousands of objects. The workaround of using the directive
1103    initialization/1 is still available (for now) for Prolog compilers that
1104    fail to support the thirteen years old ISO Prolog standard.
1105
1106    Updated the Logtalk runtime error handler to test for non-instantiated
1107    exception terms. Thanks to Joerg Schuster for the bug report.
1108
1109    Corrected two bugs in the implementation of the built-in meta-predicate
1110    threaded/1 when canceling individual threads. The first bug resulted from
1111    out-of-order thread status messages. The second bug resulted from a leak
1112    of thread results between calls to the threaded/1 predicate. Changed the
1113    thread cancellation process to not automatically releasing any locks,
1114    leaving that task to a catcher associated to the thread goal.
1115
1116    Added a new default compiler option, multifile_directive, to all config
1117    files. Possible values are "supported" and "unsupported".
1118
1119    Added instructions on how to patch the Logtalk compiler in order to use
1120    Quintus Prolog as the back-end compiler.
1121
1122    Removed from the YAP POSIX integration script the command-line options
1123    setting the initial stack, heap, and tail data area sizes. These settings
1124    are no longer necessary for recent YAP versions.
1125
1126    Updated the Windows installer script to search the registry for the
1127    location of the YAP installation (for YAP 5.1.3 or later versions).
1128
1129    Added missing implementation of the predicate as_dictionary/2 to the
1130    "bintree" library object. Thanks to Victor Noel for the bug report.
1131
1132    Updated all the search methods in the "searching" example to delegate
1133    checking for cycles to the state space being searched (thus allowing
1134    state descriptions to carry additional information that should not be
1135    taken into account when comparing states). Updated the "salt" example
1136    to support heuristics.
1137
1138    Updated the "mtbatch" example to include a benchmark test for competitive
1139    or-parallelism applied to state-space search (using the resources from the
1140    "searching" example). Improved the example documentation.
1141
1142    Added a filetype plugin for the Vim text editor. Updated the installation
1143    instructions. Updated the syntax coloring support to properly highlight
1144    quoted atoms and strings in the opening directive of parametric objects.
1145    Fixed an auto-indentation bug when opening and closing a conditional
1146    block in a single line in the last goal a predicate clause body. Thanks
1147    to Victor Noel for the bug report.
1148
1149    Corrected missing installation of the "VERSION.txt" file when building
1150    Linux RPMs.
1151
1152
11532.31.6 - May 26, 2008
1154
1155    Fixed a Logtalk runtime bug when using the :/1 control construct to
1156    call a predicate defined in a category extended by a category that
1157    is imported by the object making the call.
1158
1159    Fixed a Logtalk compiler bug when compiling an alias/3 predicate
1160    directive within a category that extends other categories.
1161
1162    Fixed a Logtalk compiler bug when compiling a class that imports a 
1163    category that extends other categories. Thanks to Victor Noel for
1164    the bug report.
1165
1166    Small performance improvement to the caching of category predicates
1167    when using static binding.
1168
1169    Removed from the YAP config file the definition of the forall/2
1170    predicate, which have been added as a built-in predicate in YAP
1171    version 5.1.3 (the current YAP CVS version must be used; the last
1172    stable version, 5.1.2, is broken on Windows). Added support for
1173    the proprietary if/1, else/0, elif/1, and endif/0 directives (when
1174    used outside Logtalk entities).
1175
1176    Updated the SWI-Prolog config file with support for the proprietary
1177    if/1, else/0, elif/1, and endif/0 directives (when used outside
1178    Logtalk entities).
1179
1180    Improved the "complements" example, moving the category initialization
1181    goal to the beginning of the example source file.
1182
1183    Added support for the Pygments syntax highlighter (co-developed with
1184    Clara Dimene).
1185
1186    Added a new sample Logtalk source file for testing syntax coloring
1187    support.
1188
1189    Added missing auto-completion keywords for the ISO Prolog standard
1190    arithmetic functions to the SubEthaEdit, TextMate, Notepad++, jEdit,
1191    Vim, and Smultron text editors.
1192
1193    Corrected a bug in the SubEthaEdit syntax coloring support for the
1194    imports_category/2-3 built-in predicate. Added some missing files
1195    (license and mode settings) to the SubEthaEdit mode bundle.
1196
1197    Corrected a bug in the Vim syntax coloring support for the ISO Prolog
1198    built-in predicate current_char_conversion/2 and added missing support
1199    for for quoted atom escape sequences.
1200
1201    Corrected a bug in the jEdit syntax coloring support for hexadecimal
1202    numbers and added missing support for the extends_category/2-3 and
1203    at_end_of_stream/0 built-in predicates.
1204
1205    Added missing support for the syntax coloring of the external call
1206    Logtalk control construct, {}/1, to the Highlight package. Corrected
1207    a bug with 0'Char constants and with octal and hexadecimal escape
1208    sequences.
1209
1210    Added missing support for the syntax coloring of the external call
1211    Logtalk control construct, {}/1, and for quoted atom escape sequences
1212    to the TextMate text editor.
1213
1214    Added missing support for the syntax coloring of quoted atom escape
1215    sequences and of the built-in predicate at_end_of_stream/0 to the
1216    Source-highlight package.
1217
1218    Added missing support for the syntax coloring of the built-in predicate
1219    at_end_of_stream/0 and of the scope operator ::/2 to the Kate text editor.
1220    Improved syntax coloring of parametric object opening directives.
1221
1222    Added missing support for the syntax coloring of the built-in predicate
1223    unify_with_occurs_check/2 to the Emacs text editor. Corrected a bug in
1224    the syntax coloring of arithmetic comparison operators.
1225
1226    Added missing support for the syntax coloring of quoted atom escape
1227    sequences and of the built-in control construct call/1 to the
1228    GtkSourceView 2.x text widget.
1229
1230    Added missing support for the syntax coloring of variables, of quoted
1231    atom escape sequences, of the built-in method clause/2, of the external
1232    call Logtalk control construct {}/1, and of variables to the Nedit text
1233    editor. Corrected a bug with 0'Char constants and corrected some typos
1234    in the support for the current_event/2, implements_protocol/2-3, and
1235    abolish_category/1 built-in predicates.
1236
1237
12382.31.5 - April 29, 2008
1239
1240    Added support for checking arithmetic expressions for calls to
1241    non-portable functions when using the "portability" compiler flag.
1242
1243    Updated the implementation of the threaded/1 built-in predicate to
1244    ensure that thread creation errors (usually, virtual memory address
1245    space exhaustion) result in the corresponding exception rather than
1246    in a non-terminating call. Improved cancellation of all individual
1247    threads when one of them terminates with an exception or a failure.
1248
1249    Simplified the terms used to post individual results from threaded/1
1250    calls to the queue associated to the call.
1251
1252    Corrected a bug in the built-in predicate threaded/1 when its argument
1253    is a conjunction (disjunction) of conjunctions (disjunctions).
1254
1255    Added a workaround for a mutex creation error when reloading a source
1256    file with entities defining synchronized predicates.
1257
1258    Updated the Logtalk runtime to unlock all mutexes hold by a thread when
1259    upon thread cancellation.
1260
1261    Corrected a Logtalk compiler bug that allowed a predicate to be declared
1262    both dynamic and synchronized. Thanks to Paul Crocker for the bug report.
1263
1264    Corrected a Logtalk compiler bug where local definition clauses for
1265    dynamic predicates are being generated for categories. Thanks to Victor
1266    Noel for the bug report.
1267
1268    Updated the YAP and SWI-Prolog config files to set the default value of
1269    the "tmpdir" flag depending on the host operating-system. Added missing
1270    declaration for the multi-threading predicate thread_initialization/1.
1271
1272    Added missing declarations for some proprietary built-in meta-predicates
1273    to the B-Prolog config file.
1274
1275    Corrected a bug in the SWI-Prolog config file in the declaration of the
1276    proprietary built-in meta-predicate "soft cut". Thanks to Victor Noel
1277    for the bug report.
1278
1279    Updated the XSB config file to use the new optimized call/N predicates
1280    found on the current XSB CVS version.
1281
1282    Added an integration script, "xsbmt64lgt", for using Logtalk with the
1283    multi-threaded, 64 bits version of XSB.
1284
1285    Simplified building of MacOS X Installer packages. Updated the Windows
1286    installation script to use the "C:\lgtsvn" as base. Simplified manual
1287    installation instructions.
1288
1289    Updated the definitions of the predicate valid/1 for the library objects
1290    "list", "list(Type)", "numberlist", "set", "set(Type)", "varlist" to fail
1291    for lists with unbound tails after discussion with Jan Wielemaker and
1292    Ulrich Neumerkel.
1293
1294    Corrected a bug in the library object "lgtunit" when running "throws"
1295    tests (make sure the generated exception is subsumed by the expected
1296    exception). Added a "lgtunit_loader" loader utility file for loading
1297    the Logtalk unit test library.
1298
1299    Added a simple example, "debug_hooks", of using compilation hooks and
1300    term expansion for conditional compilation of debug statements.
1301
1302    Updated the "primes" multi-threading example to allow any number of
1303    threads to be used in the computation of primes numbers.
1304
1305    Added a new multi-threading example, "integration", implementing
1306    Recursive Gaussian Quadrature Methods for Numerical Integration for
1307    functions of a single variable, contributed by Paul Crocker.
1308
1309    Added a new multi-threading example, "mtbatch", for benchmarking
1310    multi-threading performance.
1311
1312    Added a new example, "ack", implementing the Ackermann function (general
1313    recursive function).
1314
1315    Added support for using the Highlight package (version 2.6.9 or later)
1316    by Andre Simon with Logtalk source files.
1317
1318    Updated the TextMate Logtalk bundle and its configuration instructions
1319    to make the "Compile" and "Generate ..." commands more general, making
1320    it compatible with most Prolog compilers. Added syntax coloring for
1321    standard arithmetic functions. Added a command for generating plain text
1322    files from XML documenting files.
1323
1324    Corrected a syntax coloring bug with character codes using the 0'Char
1325    notation in the SubEthaEdit 2.x and Vim text editors and in the
1326    source-highlight package.
1327
1328    Removed some redundant regular expressions from the jEdit text editor
1329    syntax coloring support files.
1330
1331    Corrected syntax coloring bugs with variables starting with underscores
1332    (including anonymous variables) and with atoms containing an underscore
1333    in the Emacs text editor. Thanks to Joerg Schuster for the bug report.
1334
1335    Updated the Logtalk grammar documentation to reflect the changes to
1336    category relations introduced in version 2.31.0.
1337
1338    Added a "lgttxt.xsl" XSLT style-sheet and two shell scripts, "lgt2txt.sh"
1339    and "lgt2txt.js", for converting XML documenting files into text files.
1340    Updated the "lgt2*.sh" shell scripts for POSIX compliance, removing
1341    dependencies on bash shell features.
1342
1343    Updated the "lgtxml.xsl" XSLT style-sheet to ensure that the generated
1344    HTML files are fully compliant with the HTML 4.01 standard.
1345
1346    Updated the Debian installer package shell scripts for POSIX compliance,
1347    removing dependencies on bash shell features.
1348
1349
13502.31.4 - February 20, 2008
1351
1352    Optimized the performance of threaded/1 calls by using a per-call
1353    message queue for collecting the individual call results and by
1354    using the message queue identifier as a tag for the individual
1355    calls. This solution avoids runtime synchronization of a large
1356    number of threads on the same message queue, simplifies compilation
1357    and runtime handling of threaded/1 calls, and simplifies thread
1358    cancellation, eliminating any risk of dangling individual thread
1359    results.
1360
1361    Removed two redundant calls to the built-in predicate thread_exit/1
1362    on the Logtalk compiler.
1363
1364    Corrected a bug where a competitive or-parallelism call would
1365    prematurely fail with one or more individual calls still pending.
1366
1367    Corrected a bug where a competitive or-parallelism call would succeed
1368    when all the individual calls had failed.
1369
1370    Corrected a bug when compiling calls to the Logtalk multi-threading
1371    built-in predicates made from the top-level interpreter, i.e. from
1372    within the pseudo-object "user".
1373
1374    Added foreach/3, forto/5, and fordownto/5 meta-predicates to the
1375    library object "loop". Updated the definitions of the forto/3-4
1376    and fordownto/3-4 meta-predicates to allow the use of arithmetic
1377    expressions as arguments for convenience and clarity.
1378
1379    Corrected a bug in the implementation of the predicate lookup/3 in
1380    the library object "bintree".
1381
1382    Added a multi-threading example of the Fast Fourier Transform, "fft",
1383    contributed by Paul Crocker.
1384
1385    Corrected a bug in the implementation of the bisection algorithm in
1386    the multi-threading example "functions". Added an implementation of
1387    the MATLAB humps function (contributed by Paul Crocker).
1388
1389    Updated the multi-threading example "sorting" to workaround a mutex
1390    performance issue with XSB when generating lists of random numbers.
1391
1392    Updated support for the TextMate text editor. Added a command for
1393    generating the PDF documentation of open source files. Added missing
1394    tab triggers to the Logtalk snippets. Updated installation notes.
1395
1396    Corrected a bug in the jEdit syntax coloring support for the is/2
1397    operator.
1398
1399
14002.31.3 - January 28, 2008
1401
1402    Added a "VERSION.txt" file that is used to check compatibility between
1403    an existing Logtalk user folder (whose path is stored in the LOGTALKUSER
1404    environment variable) and a new Logtalk version.
1405
1406    Updated the POSIX Prolog integration scripts to check for an outdated
1407    Logtalk user folder, creating a new one if necessary by running the
1408    "cplgtdirs" script (a backup is automatically made of the old directory).
1409
1410    Updated the Windows installer to create a registry key with the Logtalk
1411    version number and to check for an outdated Logtalk user folder.
1412
1413    Changed the predicate used to load Prolog files, adding an additional
1414    argument that represents a list of load/compile options (notably,
1415    encoding/1, which is necessary for supporting source files encodings
1416    such as ISO-8859-X).
1417
1418    Updated the SICStus Prolog 4 config file to also accept UCS-2 encodings
1419    when using the encoding/1 directive (UCS-2 is subsumed by UTF-16).
1420
1421    Added a workaround to the Quintus Prolog integration scripts for its
1422    lack of support for expanding environment variables in file names.
1423
1424
14252.31.2 - January 21, 2008
1426
1427    Extended compatibility of the experimental Logtalk encoding/1 directive
1428    to CxProlog 0.96.3 and SICStus Prolog 4.0.2 and improved support for YAP
1429    and SWI-Prolog.
1430
1431    Improved source file encoding handling by ensuring that a BOM present
1432    in a source file being compiled is inherited by the generated Prolog
1433    and XML files.
1434
1435    Changed the atoms used to represent different encodings when using the
1436    encoding/1 directive; Logtalk now uses the encoding names specified by
1437    IANA (using the preferred MIME name whenever available).
1438
1439    Updated the Logtalk compiler to throw an exception when the specified
1440    encoding is not supported by the used back-end Prolog compiler.
1441
1442    Updated the "encodings" example to use the new encoding names and added
1443    new source files using UTF-16 and UTF-32 text encodings.
1444
1445    Added POSIX and Windows integration scripts for Quintus Prolog.
1446
1447
14482.31.1 - January 3, 2008
1449
1450    Duplicated the range of threaded_call/2 tags for multi-threading Prolog
1451    compilers with bounded integers.
1452
1453    Updated the YAP config file to set the flag "language" to "iso". This
1454    is not strictly necessary to run Logtalk with YAP but it helps prevent
1455    nasty surprises when writing portable applications that rely on ISO
1456    Prolog semantics.
1457
1458    Updated the SWI-Prolog integration script to test for the availability of
1459    the XPCE library before trying to load the "xpcehook.pl" XPCE hook file.
1460
1461    Updated the Linux (RMP and Debian) and MacOS X package build scripts to
1462    include Prolog version compatibility information.
1463
1464    Updated the "tak" multi-threading example to allow parameterization of
1465    the number of threads to use.
1466
1467    Updated the "sorting", "hanoi", and "fibonacci" multi-threading examples
1468    to interpret the object parameter as the number of leaf threads (i.e.
1469    working threads that will not recursively create additional threads).
1470
1471    Updated the TextMate text editor support to include commands to compile
1472    and to automatically generate the XHTML documentation of open source
1473    files.
1474
1475
14762.31.0 - December 21, 2007
1477
1478    Added a new built-in protocol, "expanding", declaring goal_expansion/2
1479    and term_expansion/2 public predicates.
1480
1481    Added compiler support for user-defined goal expansion hooks. Changed
1482    the implementation of compiler term and goal expansion hooks to use
1483    object-defined predicates term_expansion/2 and goal_expansion/2.
1484    Changed the compiler option "hook" to accept object identifiers.
1485
1486    Allow a category to explicitly complement an existing object, thus
1487    providing functionality similar to Objective-C categories. Added
1488    complements_object/2 built-in predicate. Added a new example,
1489    "complements", illustrating the new category functionality.
1490
1491    When constructing a new category from other categories, the relation
1492    "extends" is now used instead of the relation "imports". The relation
1493    "imports" is now only used when an object imports a category. Added 
1494    extends_category/2-3 built-in predicates.
1495
1496    Modified the built-in predicate define_events/5 to throw an existence
1497    error instead of failing when the specified monitor object does not
1498    exists.
1499
1500    Updated the Logtalk compiler to convert version numbers to atoms when
1501    generating XML documenting files (thus avoiding problems with some
1502    Prolog compilers that resulted in version numbers with a large number
1503    of fractional digits).
1504
1505    Improved updating of runtime bookkeeping tables when loading source
1506    files.
1507
1508    Renamed the predicate property "alias/1" to "alias_of/1" in order to
1509    disambiguate its meaning.
1510
1511    Added a new config file, "k6.config", for the K-Prolog 6.0 beta
1512    version.
1513
1514    Updated the B-Prolog config file to recognize mode/1 directives.
1515    Added some missing meta-predicate specifications to the config files
1516    of XSB and YAP.
1517
1518    Updated the Windows GUI installer to support running Logtalk with
1519    CxProlog 0.96.1 and later versions.
1520
1521    Added two new multi-threading examples, "fibonacci" and "hanoi", and
1522    corrected a bug in the recursive creation of threads on the "sorting"
1523    example. Updated the "primes" multi-threading example to also support
1524    eight threads.
1525
1526    Updated the "hooks" example for illustrating goal expansion hooks in
1527    addition to term expansion hooks.
1528
1529    Updated the "engines" example for compliance with the changes made
1530    to category relations.
1531
1532    Added syntax coloring support for the new goal_expansion/1,
1533    complements_object/2, and extends_category/2-3 predicates to all
1534    supported text editors.
1535
1536    Updated the TextMate code snippets to use the TM_FULLNAME variable
1537    instead of the deprecated "niutil" command to retrieve the user full
1538    name. Thanks to Michael Sheets for the update.
1539
1540
15412.30.8 - November 9, 2007
1542
1543    Fixed bug in the compilation of synchronized predicates that breaks
1544    Logtalk on single-threaded Prolog compilers.
1545
1546
15472.30.7 - November 5, 2007
1548
1549    Updated the multi-threading built-in predicates threaded_notify/1 and
1550    threaded_wait/1 to accept lists of notifications.
1551
1552    Added a new read-only compiler flag, "context_switching_calls", allowing
1553    context switching calls to be disabled (they are enabled by default).
1554
1555    Updated the B-Prolog config file to recognize eager_consume/1 directives.
1556    Updated the XSB config file to recognize use_subsumptive_tabling/1,
1557    use_variant_tabling/1, index/1, thread_private/1, and thread_shared/1
1558    directives.
1559    Updated the YAP config file to recognize thread_local/1 directives.
1560    Updated the SICStus Prolog config files to recognize volatile/1 directives.
1561    Updated the SWI-Prolog config file to recognize thread_local/1, index/1,
1562    and hash/1 directives.
1563
1564    Changed the backup directory names generated by the "cplgtdirs.*" shell
1565    scripts to not include whitespace characters.
1566
1567    Updated the "xsbmtlgt.sh" integration script to start XSB-MT using the
1568    new command-line option "--shared_predicates" (requires current XSB CVS
1569    version). Updated the Windows GUI installer to support running Logtalk
1570    with XSB-MT.
1571
1572    Added a multi-threading example, "barriers", of barrier synchronization.
1573
1574    Updated the "functions" example sample queries for compatibility with the
1575    ISO Prolog standard regarding representation of float numbers.
1576
1577    Added a workaround for a parsing bug in XSB while compiling the "sicstus"
1578    example.
1579
1580
15812.30.6 - October 21, 2007
1582
1583    Replaced calls to the proprietary current_thread/2 predicate in the
1584    Logtalk runtime by calls to the thread_property/2 predicate as per
1585    the ISO DTR on multi-threading predicates. Added a goal_expansion/2
1586    clause to the SWI-Prolog config file to automatically switch between
1587    the current_thread/2 and thread_property/2 predicates depending on
1588    availability.
1589
1590    Changed handling of the encoding/1 directive by the Logtalk compiler in
1591    order to improve compatibility with YAP and SICStus Prolog. Removed from
1592    the config files the now obsolete '$lgt_set_stream_encoding'/2 predicate
1593    definition. Renamed the compiler option "supports_encoding_dir" to
1594    "encoding_directive" and changed its possible values to "unsupported",
1595    "full" (used in both Logtalk source files and compiler generated Prolog
1596    files), and "source" (used only in Logtalk source files).
1597
1598    Renamed compiler option "underscore_vars" to "underscore_variables".
1599    Renamed compiler option "supports_break_predicate" to "break_predicate".
1600
1601    Improved the performance of recursive predicate definitions synchronized
1602    by mutexes. Explicitly create all mutexes used by an entity at load time
1603    for compatibility with XSB. Several changes to multi-threading support in
1604    order to improve compatibility with current and forthcoming versions of
1605    YAP, SWI-Prolog, and XSB.
1606
1607    Updated the Logtalk compiler for compatibility with both logical and
1608    immediate update semantics when compiling synchronized predicates.
1609
1610    Updated the meta-predicate compilation sanity checks to verify the
1611    existence of the minimum number of normal arguments in a clause head
1612    required by the closure of maximum arity.
1613
1614    Added a workaround for the lack of built-in support for character
1615    unbuffered input when using the Logtalk built-in debugger to the config
1616    files of ALS Prolog, B-Prolog, Ciao, CxProlog, IF/Prolog, JIProlog,
1617    Prolog II+, SICStus Prolog, XSB, and YAP. Thanks to Parker Jones for the
1618    bug report.
1619
1620    Updated the YAP config file to auto-detect working Unicode support when
1621    setting the "encoding_directive" compiler option.
1622
1623    Updated the XSB config file to auto-detect multi-threading support
1624    when setting the "threads" compiler option. Added an integration script
1625    (xsbmtlgt.sh) and supporting files for the multi-threaded version of XSB
1626    (requires current development version, available from the XSB CVS server).
1627
1628    Added a MacPorts portfile for building MacOS X installer packages.
1629
1630    Added a BOM to the "babel.lgt" UTF-8 file in the "encodings" example in
1631    order to improve compatibility with SICStus Prolog.
1632
1633    Updated the library object "random" by replacing the synchronized/0
1634    directive by a synchronized/1 directive listing only the predicates
1635    that modify the random number seed.
1636
1637    Added syntax coloring support for the GtkSourceView 2.x text widget
1638    (used e.g. on the Gnome's Gedit text editor and on the MonoDevelop IDE).
1639    Removed syntax coloring for the obsolete atomic/1 predicate directive
1640    from the support files of Source-highlight, Emacs, SubEthaEdit, jEdit,
1641    and Kate. Optimized the regular expressions used in most syntax coloring
1642    configuration files of supported text editors.
1643
1644
16452.30.5 - September 19, 2007
1646
1647    Added new multi-threading built-in predicates threaded_call/2,
1648    threaded_once/2, threaded_exit/2, and threaded_peek/2. These new
1649    predicates support the use of threaded call identifier tags in order to
1650    link specific threaded_call/2 and threaded_once/2 calls to specific
1651    threaded_exit/2 and threaded_peek/2 calls. Extended the "nondet" example
1652    in order to illustrate the new functionality.
1653
1654    Changed the implementation of the built-in predicate threaded_exit/1 in
1655    order to avoid blocking when its argument is subsumed by the argument of
1656    the corresponding threaded_call/1 call instead of being a variant.
1657
1658    Updated the Logtalk compiler to encapsulate resource errors inside
1659    error/2 exception terms (as specified in the ISO Prolog core standard).
1660
1661    Corrected a bug in the library object "lgtunit" (wrong arity on two
1662    failed_test/2 predicate calls).
1663
1664    Corrected two problems with the "testing" example: a wrong call on the
1665    object "dyn_tests" and a missing entry in the "libpaths.pl" file. Removed
1666    two pointless dynamic predicate directives in the "buffer" example.
1667
1668    Improved documentation of multi-threading programming and predicate
1669    properties. Corrected the reference manual page describing the threaded/0
1670    directive.
1671
1672    Simplified installation scripts by moving shared distribution cleaning
1673    code into the "cleandist.sh" script. Updated the "install.sh" script to
1674    set the installation prefix to "/usr" on Debian systems. Updated the
1675    Linux RPM spec file in order to clean the building directory after the
1676    package creation.
1677
1678
16792.30.4 - August 22, 2007
1680
1681    Allow the argument of {}/1 calls to be a variable at compile time.
1682
1683    Updated the Qu-Prolog config file to match and require version 8.1 and
1684    added a "qplgt" integration script.
1685
1686    Updated the XSB config file to match and require version 3.1 and to
1687    take advantage of the compiler option optimize/1 when loading Logtalk
1688    generated Prolog intermediate files.
1689
1690    Added a new library object, "lgtunit", providing preliminary support for
1691    writing and running unit tests. Added a new example, "testing", defining
1692    sample unit tests.
1693
1694    Added a new multi-threading example, "threads/tak", implementing the
1695    Takeuchi function (recursive arithmetic).
1696
1697    Updated the "threads/philosophers" example to use notifications instead
1698    of a dynamic predicate for representing chopstick availability. Added an
1699    alternative implementation using a parametric object. Improved example
1700    documentation.
1701
1702    Updated the "benchmarks" example to allow comparisons between calls to
1703    imported category predicates and calls to local object predicates.
1704
1705    Updated Emacs support in order to fix problems with the syntax-coloring
1706    of some Logtalk built-in predicates and applied a patch contributed by
1707    Nicolas Pelletier to workaround a compatibility problem with XEmacs.
1708
1709    Updated jEdit support in order to fix a problem with the syntax-coloring
1710    of the :/1 control construct.
1711
1712
17132.30.3 - July 9, 2007
1714
1715    Updated the multi-threading built-in predicate threaded/1 to support
1716    both conjunctions of goals (akin to and-parallelism) and disjunctions
1717    of goals (akin to or-parallelism) as an argument.
1718
1719    Removed the experimental threaded_race/1 multi-threading built-in
1720    predicate (its or-parallelism functionality is subsumed by the updated
1721    threaded/1 predicate).
1722
1723    Corrected a bug in the implementation of the multi-threading built-in
1724    predicate threaded_exit/1 when there are more than one thread running
1725    the same non-deterministic goal (the fix ensures that all alternative
1726    solutions per threaded_exit/1 call come from the same computing thread).
1727    Thanks to Paul Crocker for the suggested bug fix solution.
1728
1729    Updated the sample queries in the "threads/buffer"/SCRIPT.txt" file to
1730    match the updated entities in the example.
1731
1732    Updated the "threads/functions" example to use the new version of the
1733    threaded/1 multi-threading built-in predicate.
1734
1735
17362.30.2 - June 24, 2007
1737
1738    Updated the Logtalk compiler to throw a compilation error when duplicated
1739    or conflicting predicate scope directives are found.
1740
1741    Updated the Logtalk compiler to correct a cosmetic glitch when reporting
1742    compilation errors.
1743
1744    Updated the Logtalk compiler to check for mismatches between the argument
1745    of this/1 calls and the parametric object identifier.
1746
1747    Corrected a bug in the implementation of the multi-threading built-in
1748    predicate threaded_ignore/1.
1749
1750    Revamped the "threads/buffer" example to support setting the buffer
1751    maximum number of items.
1752
1753    Added a new DCG example, "dcgs/morse.lgt", for parsing messages in Morse
1754    code.
1755
1756    Extended the "parametric" example to illustrate a solution for dealing
1757    with inheritance when defining "setter" predicates/methods that return
1758    updated object identifiers.
1759
1760
17612.30.1 - June 12, 2007
1762
1763    Added a new, experimental control construct, :/1, for calling imported
1764    category predicates without using message sending mechanisms.
1765
1766    Added preliminary support for static binding when calling imported
1767    category using the new :/1 control construct for categories compiled
1768    and loaded using the compiler option "reload(skip)".
1769
1770    Added a new control construct, <</2, which allows proving a goal within
1771    the context of a specified object. Useful for debugging and for writing
1772    object unit tests.
1773
1774    Improved multi-threading support in order to make the built-in predicate
1775    threaded_exit/1 generate an exception instead of blocking indefinitely
1776    waiting for a reply from a non-existing thread.
1777
1778    Updated the Logtalk compiler to generate an error when compiling from a
1779    source file new definitions for built-in entities.
1780
1781    Updated the Logtalk compiler to generate simpler clauses for the book-
1782    keeping table of local predicate definitions for parametric entities.
1783
1784    Updated the config files for ECLiPSe, Ciao Prolog, SICStus Prolog,
1785    SWI-Prolog, and YAP to use the renamed hook predicates introduced in
1786    Logtalk 2.30.0 for parsing Prolog proprietary directives.
1787
1788    Updated the "benchmarks" example to compare the performance of calls to
1789    imported category predicates when using a message to "self" and a direct
1790    call.
1791
1792
17932.30.0 - May 28, 2007
1794
1795    Added preliminary support for static binding when sending messages to
1796    objects compiled and loaded using the compiler option "reload(skip)".
1797
1798    Allow non-instantiated arguments at compile time for the multi-threading
1799    built-in predicate threaded/1.
1800
1801    Simplified and optimized the implementation of Logtalk multi-threading
1802    support. Use a single dispatcher thread for all objects instead of each
1803    object running its own dispatcher in order to minimize the number of
1804    created threads (which can be problematic on 32 bits systems). Updated
1805    the built-in predicate threaded/1 to make it deterministic and opaque to
1806    cuts (similar to once/1).
1807
1808    Updated the Logtalk built-in database methods to always interpret rules
1809    whose body is the control construct true/0 as facts. Corrected a bug when
1810    compiling dynamic predicates that would prevent using of the clause/2
1811    built-in database method. Corrected a bug when using the Logtalk built-in
1812    database method clause/2 with entities compiled in debug mode. Improved
1813    predicate lookup caching when asserting and retracting dynamic facts.
1814
1815    Improved detection and reporting of entity existence errors.
1816
1817    Added a quit option, "q", to the Logtalk built-in debugger. Modified
1818    the debugger behavior to automatically switch to trace mode when a spy
1819    point is found.
1820
1821    Added two new compiler options, "xmldir" and "tmpdir", allowing per
1822    project definition of directories for storing XML documenting files
1823    and for storing intermediate compilation files (e.g. Prolog files).
1824    Removed the config file predicate '$lgt_alt_directory'/2.
1825    Older config files are incompatible with this new Logtalk version.
1826
1827    Added a shortcut to the Logtalk built-in predicate logtalk_load/1, {}/1,
1828    to all config files (defined there in order to be easy to comment it out
1829    in case of conflict with some Prolog native feature or lack of compliance
1830    with the ISO Prolog standard regarding the definition of the {}/1 syntax.
1831
1832    Allow the compiler flag "misspelt" to be set to "error".
1833
1834    Updated the Logtalk compiler to not try to clean-up the dynamic predicates
1835    of redefined entities when reloading source files. Most Prolog compilers
1836    already behave as expected when reloading the intermediate Prolog files
1837    generated by the Logtalk compiler. For those Prolog compilers that do not
1838    replace old definitions for dynamic predicates with the new ones, it is
1839    not possible for Logtalk to implement a workaround that would work
1840    correctly in all cases. Consult the "configs/NOTES.txt" file for more
1841    information.
1842
1843    Corrected a bug that prevents abolishing a dynamic entity loaded from a
1844    source file. Thanks to Victor Noel for the bug report.
1845
1846    Renamed the '$lgt_copy_pl_directive'/1 and '$lgt_rewrite_pl_directive'/2
1847    config files predicates to '$lgt_rewrite_and_copy_pl_directive'/2 and
1848    '$lgt_rewrite_and_recompile_pl_directive'/2.
1849
1850    Updated the config file for B-Prolog to match (and require) the new 7.0
1851    version; updated and simplified the corresponding integration scripts.
1852
1853    Updated the XSB POSIX integration script to automatically detect if we
1854    are running the XSB stable version of the XSB CVS version.
1855
1856    Added basic support for tabling to the config files of B-Prolog, XSB,
1857    and YAP. Added a simple example of using tabling directives within
1858    objects.
1859
1860    Updated the SWI-Prolog and YAP config files to automatically detect if
1861    the Prolog systems have been compiled with multi-threading support and
1862    to set the Logtalk compiler flag "threads" accordingly.
1863
1864    Corrected a bug when running Logtalk with SWI-Prolog that prevented the
1865    use of alternative compilation directories (i.e. turning on the "altdirs"
1866    compiler flag). Corrected a bug when running Logtalk with SWI-Prolog that
1867    can prevent make/0 from recompiling and reloading modified Logtalk source
1868    files. Updated the SWI-Prolog integration script, "swilgt.sh", to more
1869    reliably detect the compiler executable name.
1870
1871    Added a "configs/swi_set_logtalk_context.pl" file defining a useful but
1872    fragile hack implementing a set_logtalk_context/1 built-in predicate for
1873    switching the Logtalk top-level execution context to objects other than
1874    the default pseudo-object "user" (you may use it as a debugging tool).
1875
1876    Updated the CxProlog config file to use the new built-in predicates in
1877    version 0.95. Added a shell script, "cxlgt.sh", for easy integration of
1878    Logtalk with CxProlog on POSIX systems (with the help of Artur Miguel
1879    Dias, CxProlog author).
1880
1881    Updated the Ciao, K-Prolog, and ECLiPSe config files to set the default
1882    value for the compiler flag "underscore_vars" to "dont_care" in order to
1883    avoid spurious warnings with some of the provided examples.
1884
1885    Added a config file and integration scripts for the current XSB CVS
1886    version (3.0.1+), which supports some features needed by Logtalk not
1887    present in the current stable version (namely, expansion of environment
1888    variables).
1889
1890    Added predicates depth/2 and variant/2 to the library object "term".
1891
1892    Much improved "benchmarks" example, updated to allow running tests in
1893    three different scenarios: event support on, event support off, and
1894    using static binding. Moreover, metacalls are no longer used to run
1895    the benchmark goals, resulting in more meaningful and accurate results.
1896
1897    Removed all the "make_*lgt.*" and "makeall_lgt.*" shell scripts, replaced
1898    by pre-made integration scripts that can be found on the new "integration"
1899    directory. Removed the "lgt_install.js" script. Renamed the POSIX install
1900    and uninstall scripts to, respectively, "install.sh" and "uninstall.sh".
1901    Updated the integration, uninstall, and user-setup POSIX shell scripts
1902    to use "$prefix/share/logtalk" as the default installation directory to
1903    better comply with the Filesystem Hierarchy Standard 2.3 for UNIX-like
1904    operating systems.
1905
1906    Updated the integration scripts to automatically call the "cplgtdirs"
1907    script when the Logtalk user directory cannot be located.
1908
1909    Updated the integration, documentation, uninstall, and user-setup POSIX
1910    shell scripts to try to locate the Logtalk installation directory and the
1911    Logtalk user directory when the environment variables LOGTALKHOME and
1912    LOGTALKUSER are not set.
1913
1914    Updated the "install.sh" POSIX shell script to better clean and sanitize
1915    the file permissions on the installation directory.
1916
1917    Updated the "build_release.sh" POSIX shell script to also build a Debian
1918    binary installer package (experimental).
1919
1920    The Windows GUI installer no longer spans command-line shells running
1921    JScript scripts to build the Prolog integration shortcuts. This hopefully
1922    solves issues with security software silently blocking and breaking the
1923    Logtalk installation.
1924
1925    Added basic syntax coloring support for the GNU Nano 2.x text editor.
1926
1927
19282.29.5 - March 28, 2007
1929
1930    Added a new built-in predicate, threaded/1, for proving each goal in
1931    a conjunction in its own thread, simplifying common multi-threading
1932    tasks that previously required sequences of calls to the built-in
1933    predicates threaded_call/1 and threaded_exit/1.
1934
1935    Simplified and optimized the implementation of Logtalk multi-threading
1936    support.
1937
1938    Simplified implementation of the database built-in methods. Simplified
1939    caching of dynamic predicate lookups. Improved performance of the
1940    built-in methods retract/1 and retractall/1.
1941
1942    Simplified the code generated when compiling entities in debugging mode.
1943
1944    Corrected a bug in the built-in debugger when processing actions at a
1945    port that implies reading a port action again (e.g. print exception term,
1946    print debugging status, and help options). Allow the debugger command
1947    "skip" to work as the command "creep" in ports other than "call" and
1948    "redo". Added a new debugger command, "ignore". Suspend debugging when
1949    using the "break" debugger command.
1950
1951    Generate a compilation error instead of just printing a warning when
1952    compiling calls to the multi-threading built-in predicates within an
1953    object with no threaded/0 directive present.
1954
1955    Corrected a bug when compiling entities containing synchronization
1956    directives on single-threaded Prolog configurations.
1957
1958    Improving reporting of working directory when loading or compiling source
1959    files by expanding any environment variables occurring in the path.
1960
1961    Added a new compiler option, "reload", for defining the Logtalk behavior
1962    when reloading source files. Valid values are "always" (default value;
1963    defined in the config files) and "skip".
1964
1965    Updated the programming examples to use the new "reload" compiler option
1966    when loading library entities. Simplified loading of example source files
1967    (by updating the utility loader files to automatically load all required
1968    library files).
1969
1970    Updated GNU Prolog config file to take advantage of some built-in list
1971    predicates (requires version 1.2.14 or later); changed the compiler flag
1972    "underscore_vars" value to "dont_care" to avoid spurious warnings with
1973    some examples.
1974
1975    Added a config file for B-Prolog 7.0b1.
1976
1977    Updated the POSIX integration shell scripts to pass along any command
1978    line options to the corresponding Prolog compiler and to prevent some
1979    problems with paths containing spaces.
1980
1981    Much improved syntax coloring and code completion support for the jEdit
1982    text editor.
1983
1984    Updated the "threads/primes" example to use the new "threaded/1" built-in
1985    predicate. Updated the "threads/birthdays" example to better illustrate
1986    the use of the built-in multi-threading predicates. Added a new
1987    multi-threading example, "msort", implementing single-threaded and
1988    multi-threaded versions of the merge sort algorithm.
1989
1990    Expanded the "operators" example to illustrate a simple solution for
1991    making operators local to source files (but global to all entities
1992    defined within the source files).
1993
1994
19952.29.4 - February 19, 2007
1996
1997    Added a new library category, "listing", defining listing/0 and
1998    listing/1 methods for helping in debugging tasks.
1999
2000    Added two new experimental multi-threading predicates, threaded_wait/1
2001    and threaded_notify/1, which allows suspension of a thread's goal until 
2002    a notification is received. Added two new examples, "threads/buffer" and
2003    "threads/blackboard", illustrating the use of these predicates.
2004
2005    Simplified and changed implementation of the threaded built-in
2006    predicates in order to ensure that the threaded/0 directive is only
2007    required on objects calling these predicates.
2008
2009    Only print a warning for a missing threaded/0 directive for objects.
2010
2011    Corrected a ordering bug on the entity initialization goal that
2012    prevented using an object initialization goal that make use of
2013    the object thread.
2014
2015    Corrected a bug when asserting rules into an object's database that   
2016    resulted in only the first asserted rule being visible when calling
2017    the predicate through message sending. Thanks to Parker Jones for
2018    the bug report.
2019
2020    Corrected a bug when compiling dynamic entities (defined in source
2021    files using the dynamic/0 directive) where declared predicates would
2022    be wrongly compiled as static instead of dynamic.
2023
2024    Updated the "make_xsblgt.sh" integration script again to fix an
2025    additional problem resulting from the lack of support in XSB for
2026    using environment variables in file paths.
2027
2028    Added minimal support for using Exuberant Ctags with Logtalk.
2029
2030    Added auto indent support to the jEdit text editor.
2031
2032    Added support for listing public predicates in the "Functions" window
2033    of the SuperEdi text editor.
2034
2035    Converted TextMate code snippets from the old Property List format
2036    to XML in order to provide compatibility with the "e" Windows text
2037    editor.
2038
2039    New example: 99 bottles of beer on the wall! Sing along!
2040
2041
20422.29.3 - January 15, 2007
2043
2044    Corrected a bug in the Logtalk compiler optimizer code which was
2045    discarding some declaration and definition catchall clauses needed
2046    by the Logtalk built-in database methods when there is no initial
2047    declaration and definition for the referenced dynamic predicates.
2048    Thanks to Parker Jones for the bug report.
2049
2050    Corrected a bug in the compilation of empty, standalone protocols
2051    and categories.
2052
2053    Updated the "make_xsblgt.sh" integration script to workaround
2054    the lack of support in XSB for using environment variables in
2055    the argument of the reconsult/1 predicate.
2056
2057    Corrected a bug in the "potions.lgt" example puzzle that prevented
2058    its solution of being found.
2059
2060
20612.29.2 - January 10, 2007
2062
2063    Silently compile synchronized predicates as normal predicates on
2064    single-threaded Prolog compilers.
2065
2066    When using the threaded_race/1 predicate, competing threads are
2067    now created detached.
2068
2069    Corrected a bug that resulted in a loading error when reloading
2070    source files defining threaded objects.
2071
2072    Corrected a bug in the implementation of the built-in predicate
2073    threaded_peek/1 that prevented alternative solutions from being
2074    retrieved using the built-in predicate threaded_exit/1. Removed
2075    the built-in predicate threaded_discard/1.
2076
2077    The library object "random" is now a synchronized object. Updated
2078    the "philosophers" multi-threading example accordingly.
2079
2080    Dropped loading of broken "cleanup" library from the YAP config file
2081    (the call_cleanup/2 predicate, required for Logtalk multi-threading,
2082    is now available as a built-in predicate in the YAP CVS version).
2083
2084
20852.29.1 - December 28, 2006
2086
2087    Added a Logtalk version of John Fletcher's Prolog XML parser (see the
2088    folder "contributions/xml_parser").
2089
2090    Added shell scripts for helping building the distribution files of a
2091    new Logtalk release. Updated the MacOS X installer package to set
2092    default values for the Logtalk environment variables. Corrected a bug
2093    in the "logtalk.spec" file where the default value for the LOGTALKUSER
2094    environment variable only worked for the user doing the RPM installation.
2095
2096    Corrected a bug in the reporting of the line number where a compilation
2097    error (or warning) occurred. Extended support for reporting warning and
2098    error line numbers to Quintus Prolog, Ciao Prolog, Qu-Prolog, and
2099    ECLiPSe.
2100
2101    Corrected a bug when using partial lists with the predicates nth0/3-4
2102    and nth1/3-4 provided by the "list" library object.
2103
2104    Improved "philosophers" multi-threading programming example.
2105
2106
21072.29.0 - December 18, 2006
2108
2109    Added a new built-in, empty object named "logtalk", which can play the
2110    role of both a class and a prototype. It may be used to define class
2111    hierarchies without forcing the use of metaclasses or reflective
2112    designs.
2113
2114    Added a built-in protocol named "monitoring" with declarations for
2115    the before/3 and after/3 public event handler predicates. Updated
2116    the Logtalk compiler to print a warning when defining an event handler
2117    with no reference to the "monitoring" protocol.
2118
2119    The default value of the compiler flag events/1 is now off. As most
2120    applications do not use events, this setting ensures the best possible
2121    message processing performance for those applications.
2122
2123    Removed the experimental threaded_call/2 and threaded_exit/2 thread
2124    predicates, replaced by new threaded_once/1, threaded_ignore/1,
2125    threaded_race/1, threaded_peek/1, and threaded_discard/1 predicates.
2126    Renamed predicate directive atomic/1 to synchronized/1. Added new
2127    entity directive synchronized/0. Added support for new "synchronized"
2128    and "threaded" entity properties.
2129
2130    Corrected a bug when using threaded calls as initialization goals
2131    within threaded objects.
2132
2133    Corrected an elusive bug in the Logtalk compiler where a source file
2134    may not be properly closed when it contains a syntax error (thanks
2135    to Robert Shiplett for the bug report).
2136
2137    Corrected a bug in the implementation of the built-in methods retract/1
2138    and retractall/1 that could result in unexpected exceptions. Updated
2139    the built-in method assertz/1 to always use the lookup cache.
2140
2141    Corrected a bug in the compilation of empty classes that are not
2142    instances of a metaclass.
2143
2144    Corrected a bug in the built-in method predicate_property/2 where some
2145    predicate properties may not be returned when enumerating properties
2146    using backtracking.
2147
2148    Modified the SWI-Prolog config file and integration scripts to set
2149    the flag "iso" to "true". Corrected an elusive bug in the definition
2150    of predicate '$lgt_directory_exists'/1 that resulted in "library not
2151    found" errors when loading Logtalk source files from within the
2152    SWI-Prolog initialization file (thanks to Robert Shiplett for the bug
2153    report).
2154
2155    Updated the K-Prolog config file to workaround a problem when using
2156    library notation due to failure to check directory existence with the
2157    provided "libpaths.pl" file.
2158
2159    Added a RELAX NG file describing the structure of the XML documenting
2160    files generated by Logtalk.
2161
2162    Corrected a bug in the Logtalk DTD file (missing "copyright" tag
2163    declaration).
2164
2165    Corrected a bug in the lgt2*.js scripts where the "custom.ent" file
2166    was not being copied when generating (X)HTML and PDF files.
2167
2168    Added a new multi-threading example, "philosophers", illustrating a
2169    possible implementation of the "dining philosophers" problem.
2170
2171    Improved the "metapredicates" example in order to illustrate the use
2172    of closures instead of goals as meta-arguments.
2173
2174    Added a reference to the "e" Windows text editor, which supports
2175    the MacOS X TextMate 1.x text editor syntax configuration files.
2176   
2177    Updated the manuals index pages in order to workaround browsers bugs
2178    with parsing of empty "span" tags (e.g. Internet Explorer and Opera).
2179
2180
21812.28.2 - November 6, 2006
2182
2183    Corrected a compiler bug where unknown entities will not be report when
2184    compiling a source file whenever an entity with the same name but of a
2185    different type is already known.
2186
2187    Added a XPCE hook file ("configs/xpcehook.pl") supporting Logtalk message
2188    sending goals as XPCE call-back goals. The XPCE library is now loaded by
2189    default by the SWI-Prolog integration scripts.
2190
2191    Added support for generating single PDF files of the User and Reference
2192    Manuals. Removed the PDF versions of the individual manual XHTML pages.
2193
2194    The ECLiPSe config files now require release 5.10#26 or a later version.
2195
2196    Added support for listing Logtalk entity names (objects, categories, and
2197    protocols) in the SubEthaEdit symbols menu.
2198
2199    Added a Vim dictionary file for Logtalk keyword completion and support
2200    for automatic indentation.
2201
2202    Added basic support for the MacOS X Smultron text editor. Added basic
2203    support for the Notepad++, SuperEdi, and ConTEXT Windows text editors.
2204
2205
22062.28.1 - October 10, 2006
2207
2208    Added support for using XML entities using the notation "{entity name}"
2209    in info/1 documenting directives for the "author", "copyright", and
2210    "license" keywords. The XML entities are defined on a "custom.ent" file.
2211
2212    Updated Logtalk bibliographic references (in file "BIBLIOGRAPHY.bib").
2213
2214    Added a "lgt_uninstall.sh" shell script for uninstalling Logtalk on POSIX
2215    operating systems.
2216
2217    Improved RPM install-time messages on the defined Logtalk environment
2218    variables.
2219
2220    Updated the ECLiPSe integration scripts and config files to work with
2221    and require version 5.10 (the first open source version of ECLiPSe).
2222
2223    Corrected a typo on the "logtalk.dtd" file that prevents validation of
2224    XML documenting files that use a local reference to the DTD.
2225
2226
22272.28.0 - September 28, 2006
2228
2229    Updated the Logtalk license to the final version of the "The Artistic
2230    License 2.0" (see http://www.perlfoundation.org/legal/ for details).
2231
2232    Added experimental support for multi-threading programming on selected
2233    Prolog compilers. Added a new object directive, threaded/0, a new
2234    predicate directive, atomic/1, and four new built-in predicates,
2235    threaded_call/1-2 and threaded_exit/1-2. Added a new set of examples,
2236    "threads". Thanks to Paulo Nunes for helping developing and testing
2237    these new features.
2238
2239    Expanded support for meta-predicates by allowing the declaration of meta-
2240    arguments as closures instead of goals.
2241
2242    Added the generalized call/N predicate as a built-in method. This built-in
2243    method must be used in the implementation of meta-predicates which work
2244    with closures instead of goals.
2245
2246    The metapredicate/1 directive should be considered deprecated. Use the
2247    meta_predicate/1 directive instead.
2248
2249    Updated the Logtalk compiler to generate an error whenever a non-variable
2250    meta-argument is found in a clause head of a user-defined meta-predicate.
2251
2252    Improved compilation of meta-predicate meta-arguments. Corrected a bug
2253    in the compilation of user meta-predicates that allowed illegal calls
2254    to non-public predicates on the caller object to be made from the object
2255    defining the meta-predicates. Thanks to Rémy Haemmerlé and François
2256    Fages for reporting the problem.
2257
2258    Improved performance for non-cached messages, notably when running with
2259    YAP, GNU Prolog, and SWI-Prolog on all operating systems and with SICStus
2260    Prolog 4.0 on POSIX operating systems.
2261
2262    Updated the Logtalk compiler to generate an error whenever a predicate
2263    directive appears in a source file after predicate clauses that call the
2264    predicate specified in the directive.
2265
2266    Added support for "copyright" and "license" keys to the info/1 entity
2267    documenting directive.
2268
2269    Improved compiler error messages to also report source file line number
2270    for selected Prolog compilers.
2271
2272    Added PDF versions of all the manual XHTML pages. Added links to all the
2273    manual XHTML pages to the corresponding PDF versions.
2274
2275    Corrected a bug (introduced in version 2.27.0) in the built-in predicates
2276    abolish_object/1, abolish_protocol/1, and abolish_category/1 that resulted
2277    in some clauses not being retracted when an object is abolished (thanks to
2278    Neng-Fa Zhou for the bug report).
2279
2280    Corrected a bug (introduced in version 2.27.1) in the processing of the
2281    term_expansion/2 predicate.
2282
2283    Corrected a bug in the compilation of redefined built-in predicates with
2284    no clauses.
2285
2286    Added an experimental config file for CxProlog 0.93.1.
2287
2288    Updated the SWI-Prolog config and hook files in order to support the
2289    edit/1 and make/0 development predicates.
2290
2291    Changed the Logtalk - SWI-Prolog integration scripts to load the hook
2292    file "swihook.pl" after the other files in order to avoid some possible
2293    errors at startup.
2294
2295    Updated the config file for the forthcoming SICStus Prolog 4.0 version
2296    to work in the current beta version. Modified the "make_sicstuslgt.*"
2297    shell scripts to work with both SICStus Prolog 3.12 and 4.0 versions.
2298
2299    Updated the config file for YAP to workaround a problem on the Windows
2300    version where testing for directory existence fails if the path ends with
2301    a slash (or a double backslash); this problem prevents the use of library
2302    notation to load source files (problem already fixed in the current YAP
2303    CVS version).
2304
2305    Updated the config file for B-Prolog to match (and require) the new 6.9
2306    version; added integration shell scripts (for both Windows and POSIX
2307    systems).
2308
2309    Updated the config files and the integration scripts for ECLiPSe in order
2310    to workaround bugs on the predicates abolish/1 and canonical_path_name/2.
2311    Modified the "make_eclipselgt.js" script to work with both ECLiPSe 5.8
2312    and 5.9 versions.
2313
2314    Dropped support for versions of XSB older than 3.0. Added support for
2315    smart compilation of source files to the XSB config file.
2316
2317    Updated the config file for IF/Prolog 5.1 by adding a missing definition
2318    for predicate retractall/1 and avoiding some harmless singleton warnings.
2319
2320    Add a ".txt" extension to all "NOTES" and "SCRIPT" files.
2321
2322    Extended "dcgs", "parametric", and "metainterpreters" examples.
2323
2324    Added Inno Setup GUI Windows installer script.
2325
2326    Update all the JScript scripts to check if a compatible version of WSH
2327    is installed and to workaround some problems with spaces in file paths.
2328
2329    Updated the "lgt_install.js" JScript script to copy the scripts/*.bat and
2330    the xml/*.bat batch scripts to the system's Windows directory instead of
2331    modifying the PATH environment variable.
2332
2333    Updated the "cplgtdirs.*" shell scripts to make a backup copy of any
2334    previous LOGTALKUSER directory.
2335
2336    Added post-install scripts to the LINUX RPM "logtalk.spec" file for
2337    setting the environment variable LOGTALKHOME for all users, defining
2338    a default value for the environment variable LOGTALKUSER, and running
2339    the Prolog integration scripts.
2340
2341    Split the installation and customization instructions in two files,
2342    "INSTALL.txt" and "CUSTOMIZE.txt".
2343
2344    Added shell scripts for converting the manual XHTML pages into PDF files
2345    using CSSToXSLFO.
2346
2347
23482.27.1 - March 27, 2006
2349
2350    Allow calls to the built-in method parameter/2 with the first argument
2351    not instantiated at compile time. Detect and report as a compilation
2352    error parameter/2 indexes that are out of range.
2353
2354    Optimized generation of predicate definition and declaration linking
2355    clauses, resulting in small lookup performance improvements and in space
2356    savings for the Prolog code generated when compiling Logtalk entities.
2357
2358    Many minor code and documentation improvements to the Logtalk compiler.
2359
2360    Added an object version of the tokenizer described in the Michael
2361    Covington's paper "Tokenization using DCG Rules" to the "dcgs" example.
2362
2363    Improved integration code for Qu-Prolog and Logtalk ("configs/qphook.ql").
2364
2365    Improved library hierarchy methods that return lists of objects in order
2366    to avoid duplicated elements (library objects "proto_hierarchy.lgt" and
2367    "class_hierarchy.lgt"). Added new methods extension/1 and extensions/1 to
2368    the library object "proto_hierarchy.lgt".
2369
2370    Documented the concept of "parametric object proxy". Added a new example,
2371    "proxies", illustrating the use of parametric object proxies.
2372
2373    Added support for code completion and for listing entity names on the
2374    symbol pop-up menu to the MacOS X TextMate text editor.
2375
2376    Updated the "cplgtdirs.*" scripts to also create an alias/shortcut to the
2377    "wenv" directory.
2378
2379    Renamed the alternative compilation and documentation directory names on
2380    all config files to be compatible across operating-systems. Removed unused
2381    predicate '$lgt_reverse'/2 from all config files.
2382
2383    Updated HTML manuals "print.css" CSS file for compatibility with the
2384    latest version of CSSToXSLFO.
2385
2386
23872.27.0 - February 9, 2006
2388
2389    Improved performance for local calls to the built-in methods phrase/2-3.
2390    Allow the built-in methods phrase/2-3 to accept both partial and proper
2391    lists of terminals.
2392
2393    Improved grammar rule translator. Report calls to undefined non-terminals
2394    when translating grammar rules.
2395
2396    Added support for declaring grammar rule non-terminal aliases using the
2397    alias/3 directive.
2398
2399    Added a new predicate property, non_terminal/1, for predicates resulting
2400    from the compilation of grammar rule non-terminals.
2401
2402    Improved support for the built-in method expand_term/2 in order to allow
2403    bypassing of the default Logtalk grammar rule translator by defining
2404    clauses for the term_expansion/2 predicate. Added a "term_expansionp"
2405    protocol to the Logtalk library. Added a new example, "expansion",
2406    illustrating the use of the term_expansion/2 predicate.
2407
2408    Added a new compiler flag, hook/1, allowing the specification of a
2409    compiler hook that is called for which term read from a source file.
2410    Added a simple example, "hooks", of using the Logtalk compiler hook
2411    to expand author abbreviations in info/1 directives into full names
2412    and email addresses.
2413
2414    Added support for XSB 3.x to the runtime error handler. Updated the XSB
2415    3.x config file with declarations for multi-threading meta-predicates.
2416   
2417    Removed a few choice-points when checking validity of entity directives.
2418
2419    Added two new objects, list(Type) and set(Type), to the standard library
2420    supporting the validation of lists and ordered sets whose elements are
2421    restricted to a single type.
2422
2423    Added a new DCG example for solving enigmas encoded using a cellphone
2424    keypad.
2425
2426    Added a missing library dependency to the "puzzles" example SCRIPT file.
2427
2428    Removed the experimental "systemp.lgt" protocol from the list of files
2429    loaded by the "library/all_loader.lgt" loader utility files to avoid
2430    compilation errors on some Prolog systems.
2431
2432    Corrected a bug that prevented dynamic creation of categories using the
2433    built-in predicate create_category/4.
2434
2435    Corrected a bug in the reporting of singleton variables, which failed to
2436    write an accurate message for facts and grammar rules.
2437
2438    Corrected a bug in passing the correct calling context ("this") when
2439    processing meta-calls in objects.
2440
2441    Corrected a bug in scope checking with local calls to reflection and
2442    database methods.
2443
2444    Corrected a bug in checking the validity of the arguments of the op/3
2445    directive appearing inside entities.
2446
2447    Added predicates for testing if a term is a partial list or a proper list
2448    to all config files.
2449
2450    Added a definition for missing open/4 ISO Prolog predicate to the config
2451    file of Bin Prolog.
2452
2453    Added a workaround for a B-Prolog bug to this compiler config file.
2454
2455
24562.26.2 - December 20, 2005
2457
2458    Improved error-checking for the Logtalk compiler and for the grammar rule
2459    translator.
2460
2461    Small performance improvements for message sending and for the built-in
2462    database methods.
2463
2464    Corrected a bug on the implementation of the built-in methods phrase/2-3
2465    for negated grammar rule bodies (thanks to Mats Carlsson for pointing the
2466    error).
2467
2468    Removed the read-only compiler flag "iso_initialization_dir".
2469
2470    Corrected a compilation bug on the "metapredicates" example source file.
2471    Corrected several bugs on the performance monitor of the "searching"
2472    example.
2473
2474    Switched off default generation of XML documenting files for the "symdiff"
2475    example in order to avoid file names compatibility problems on Windows.
2476
2477    Updated compatibility notes on B-Prolog 6.8 and Qu-Prolog 7.0. Added a
2478    config file for the forthcoming SICStus Prolog 4.0 version (based only
2479    on publicly available information). Updated the config file for Amzi!
2480    Prolog to solve issues with predicate properties and to ensure that file
2481    system utility predicates are loaded.
2482
2483    Added a config file for the current XSB CVS version and the corresponding
2484    integration shell scripts (for both Windows and POSIX systems). Modified
2485    the "cplgtdirs.*" shell scripts in order to make either links or copies of
2486    the config files and the "libpaths.pl" file with the required ".P" file
2487    name extension.
2488
2489    Improved integration scripts documentation and help screens.
2490
2491    Added a predicate for checking directory existence to the config files.
2492
2493
24942.26.1 - November 28, 2005
2495
2496    Added a CSS style-sheet to the Logtalk XHTML documentation that can be
2497    used with CSSToXSLFO to generate nicely formatted PDF files suitable for
2498    printing with running headers and page numbers.
2499
2500    Updated the Logtalk XHTML documentation for compliance with the XHTML 1.1
2501    standard.
2502
2503    Updated the "lgtxhtml.xsl" XSLT file in order to generate XHTML 1.1 files.
2504
2505    Added a new, generic "lgtpdf.xsl" XSLT file. Redefined the "lgtpdfa4.xsl"
2506    and "lgtpdfus.xsl" files to import the "lgtpdf.xsl" file.
2507
2508    Added support for the Lunasil XSL-FO processor to the "lgt2pdf.*" shell
2509    scripts.
2510
2511    Updated the "lgt2pdf.sh", "lgt2xml.sh", and "lgt2html.sh" shell scripts
2512    in order to write a warning message when the current directory does not
2513    contain any XML documenting file.
2514
2515    Added a definition for missing open/4 ISO Prolog predicate to the config
2516    files of Open Prolog, LPA Prolog compilers, and MasterProlog.
2517
2518
25192.26.0 - November 7, 2005
2520
2521    Added support for defining predicate aliases when using uses/2 directives
2522    (using the format Predicate::Alias).
2523
2524    Added Prolog modules migration code allowing modules to be compiled as
2525    objects and allowing messages to be sent to modules. Added a new "modules"
2526    example.
2527
2528    Added a "Prolog Integration and Migration Guide" to the Logtalk
2529    documentation.
2530
2531    Added support for syntax coloring of common Prolog module directives to
2532    the configuration files of the supported text editors.
2533
2534    Added support for using library aliases on the second argument of the
2535    logtalk_library_path/2 predicate (using the format alias(path)).
2536
2537    Added support for ignoring, copying as-is, or rewriting proprietary Prolog
2538    directives. The action to be taken is defined on a per-directive basis on
2539    the config files.
2540
2541    Updated the config files of CIAO, ECLiPSe, SWI-Prolog, and YAP to define
2542    actions for some proprietary directives in order to allow some or most of
2543    the module libraries distributed with these compilers to be compiled as
2544    objects.
2545
2546    Renamed some XML documentation-related compiler flags to more meaningful
2547    names: "xml" -> "xmldocs", "xsl" -> "xslfile", and "doctype" -> "xmlsref".
2548    No changes to the other flags or flag valid values.
2549
2550    Updated documenting scripts to use system-wide resources from LOGTALKHOME
2551    and user-modifiable resources from LOGTALKUSER.
2552
2553    Updated "cplgtdirs.*" shell scripts to create links to the documenting
2554    scripts and to the DTD and XML Schema specifications instead of making
2555    local copies. Updated the "cplgtdirs.js" Windows JScript script to create
2556    a link to the Logtalk manuals.
2557
2558    Changed generation of predicate compiled functors to add an underscore
2559    between the original predicate functor and arity (further minimizing the
2560    chance of name conflicts).
2561
2562    Improved compilation warning messages (separately handling plural and
2563    singular forms).
2564
2565    Improved documentation of Windows JScript installation and integration
2566    scripts.
2567
2568    Corrected a bug on the Logtalk built-in debugger on the processing of the
2569    abort option at a leashed port (option was ignored instead of aborting the
2570    debugging session).
2571
2572    Added an option to choose between a "verbose" or "compact" listing of the
2573    default compilation flags at Logtalk startup (defined on the config files).
2574
2575    Improved CIAO integration scripts in order to suppress some (harmless)
2576    warnings which are generated at first run.
2577
2578    Updated SWI-Prolog hook file ("swihook.pl") in order to support Logtalk
2579    library notation when loading Logtalk files using the SWI-Prolog consult/1
2580    predicate.
2581
2582    Corrected a bug on the implementation of the built-in method abolish/1
2583    that prevented abolishing of dynamic predicates with arity zero.
2584
2585    Corrected a bug on the "gplgt" shell script generated by the make_gplgt.sh
2586    shell script where the value of the LOGTALKHOME environment variable would
2587    not be retrieved at runtime.
2588
2589    Removed config file for older versions of XSB (up to 2.6). Renamed the
2590    config file for XSB 2.7.1 to simply "xsb.config".
2591
2592    Consolidated the source files of the "birds", "errors", "lpa", "lo",
2593    "metainterpreters", "poem", "relations", "roots", and "symdiff" examples
2594    into single source files. Updated the "searching" example to take advantage
2595    of the uses/2 directive.
2596
2597    Removed outdated documenting shell scripts from the "xml" directory.
2598
2599    Corrected a bug when compiling a source file where the generated Prolog
2600    file might not be properly closed when a compilation error occurs.
2601
2602
26032.25.3 - September 12, 2005
2604
2605    Consolidated the source files of the examples "bricks", "dynpred", "mi",
2606    "parametric", "points", "polygons", "reflection", "shapes", "sicstus",
2607    and "viewpoints" into single source files.
2608
2609    Improved documentation on most example source files. Improved "parametric"
2610    example by adding a new parametric objects and by illustrating alternative
2611    ways of accessing object parameters.
2612
2613    Updated several config files with declarations for some more non-standard
2614    Prolog meta-predicates.
2615
2616    Corrected some omissions and typos on the B-Prolog - Logtalk integration
2617    instructions.
2618
2619    Small performance optimization for messages and super-calls with not yet
2620    cached method lookups.
2621
2622
26232.25.2 - August 11, 2005
2624
2625    Updated Logtalk installation and Prolog integration scripts in order to
2626    detect a wrongly defined LOGTALKHOME environment variable.
2627
2628    Corrected a bug on the lgt_install.sh and make*lgt.sh shell scripts where
2629    the wrong variable was being referenced when testing the existence of the
2630    installation directory prefix.
2631
2632    Corrected a bug on the makeall_lgt.sh shell script that failed to properly
2633    detect unsuccessful completion of individual Prolog integration scripts.
2634
2635
26362.25.1 - August 8, 2005
2637
2638    Added support for using the "source-highlight" package (version 2.0 or
2639    later) by Lorenzo Bettini with Logtalk source files.
2640
2641    Several optimizations to the syntax coloring configuration files of most
2642    of the supported text editors. Added support for code folding to the Vim,
2643    Kate, and TextMate text editors.
2644
2645    Updated the SWI-Prolog shell integration script (make_swilgt.sh) to use
2646    either "swipl" or "pl" as the name of the Prolog executable, depending
2647    on the host operating system.
2648
2649    Modified the way entity prefixes are generated for compiled code in order
2650    to further minimize possible conflicts resulting from the same prefix being
2651    used for different entities (bug report and fix by Brian Hulley). Changes
2652    to the prefix format are also reflected on the names of the automatically
2653    generated XML documenting files.
2654
2655    Updated the lgt2html.* and lgt2xml.* documenting scripts in order to index
2656    parametric objects using the notation <entity>/<number of parameters>.
2657
2658    Corrected a bug on the lgtxml.xsl XSLT file where links to related files
2659    pointed to .html files instead of .xml files.
2660
2661    Updated the lgt_install.sh and the make_*lgt.sh shell scripts to check and
2662    report invalid installation directory prefixes.
2663
2664    Added a new state-space search problem, "salt3.lgt", contributed by Paula
2665    Marisa Sampaio, to the "searching" example.
2666
2667
26682.25.0 - May 23, 2005
2669
2670    Logtalk compiler is now source file-based instead of entity-based. Thus,
2671    a source file may now contain any number of entities, without the need of
2672    using source metafiles. Therefore, this version drops support for source
2673    metafiles and the .mlgt file name extension.
2674
2675    The experimental encoding/1 directive, when used, must be the first term
2676    on a source file.  Added an entry to the reference manual describing the
2677    directive. Improved "encodings" example.
2678
2679    Added a new method, debugging/1, to the "debugger" pseudo-object for
2680    querying the system about entities compiled in debug mode.
2681
2682    Improved source file and entity compilation and loading reporting. In
2683    particular, when using library notation for source files, the Logtalk
2684    compiler now prints the library path containing the source files being
2685    compiled or loaded.
2686
2687    Added new shell scripts, makeall_lgt.*, which run all the make_*lgt.*
2688    shell scripts in sequence.
2689
2690    Simplified compiler reporting of singleton variables in directives and
2691    clauses.
2692
2693    Added an adaption of the "timetables" LPA Prolog++ example.
2694
2695    Updated B-Prolog config file for the new 6.7 #2 version. Dropped support
2696    for older versions of B-Prolog.
2697
2698
26992.24.0 - April 22, 2005
2700
2701    Added experimental support for a encoding/1 directive for declaring the
2702    text character encoding of a source file. This directive is fully based
2703    on a directive with the same name and with similar semantics found on
2704    recent development versions of SWI-Prolog. For now, this directive only
2705    works with SWI-Prolog as most Prolog compilers lack support for dealing
2706    with different text encodings. Added new flag "supports_encoding_dir".
2707    Added a new example, "encodings", of using the new encoding/1 directive.
2708
2709    When a source file contains an encoding/1 directive, the XML documenting
2710    files will use the same encoding. When no encoding/1 directive is present,
2711    the XML documenting files will assume UTF-8 encoding.
2712
2713    Added new info/1 documenting directive key, "parameters", allowing the
2714    declaration of both parameter names and parameter descriptions. Added new
2715    info/1 documenting directive key, "remarks", allowing general remarks
2716    about an entity to be stated. Added new info/2 documenting directive key,
2717    "arguments", allowing declaration of both predicate argument names and
2718    predicate argument descriptions. Added new info/2 documenting directive
2719    key, "examples", allowing the representation of predicate call examples.
2720
2721    Much improved and accurate reporting of non-portable predicate calls when
2722    using the "portability" flag.
2723
2724    Added a new directory to the Logtalk distribution, "contributions", which
2725    will be used for user-contributed code. On this release, it contains an
2726    implementation of the ISO 8601 standard by Daniel L. Dudley, providing a
2727    library of useful date predicates.
2728
2729    Added new lgt2xml.* shell scripts for generating (X)HTML indexes of XML
2730    documenting files.
2731
2732    Rewritten the lgtxhtml.xsl, lgthtml.xsl, lgtxml.xsl XSLT scripts in order
2733    to make it easier to define alternative CSS files for the generated HTML
2734    files. Rewritten the lgtpdfa4.xsl and lgtpdfus.xsl XSLT scripts in order
2735    to improve appearance of the generated PDF files.
2736
2737    Improved the documentation of the "benchmarks" example and added new
2738    predicates for running batches of benchmark tests and for generating
2739    lists of known size for the benchmark tests of static code.
2740
2741    Corrected a bug in the lgt2html.*, lgt2pdf.*, and cplgtdirs.sh shell
2742    scripts which resulted in failed transformations whenever the LOGTALKHOME
2743    and LOGTALKUSER environment variables or the output directory contained
2744    spaces or accented characters.
2745
2746    Added workaround for Prolog compilers that define operators other than
2747    ','/2 that cannot be redefined (such as new B-Prolog 6.7).
2748
2749    Added a Logtalk "clip" file for the TextPad Windows text editor.
2750
2751    Renamed directory "misc" to the more meaningful name "scripts".
2752
2753    Corrected a bug in the implementation of the built-in database methods
2754    asserta/1 and assertz/1 when asserting facts on objects compiled in debug
2755    mode.
2756
2757    Corrected a bug in the method leash/1 of the built-in pseudo-object
2758    "debugger", which failed to accept an empty list as a valid argument.
2759
2760    Corrected a bug in the header of the automatically generated XML
2761    documenting files when using the XML Schema specification (logtalk.xsd),
2762    which could prevented validation when the compiler flag "doctype" is set
2763    to "web".
2764
2765    Corrected a compilation bug where Prolog clauses written outside entities
2766    on source metafiles would have their order reversed. Simplified splitting
2767    of source metafiles.
2768
2769    Corrected a compilation bug where Prolog clauses written before an entity
2770    opening directive would not be copied to the generated Prolog file.
2771
2772    Corrected a bug on the "roots" example in the object "class" which failed
2773    to properly test the validity of new object identifiers.
2774
2775    Corrected a bug in the syntax coloring file for the Vim text editor, which
2776    resulted in an error message when opening a Logtalk source file for the
2777    first time.
2778
2779
27802.23.1 - March 7, 2005
2781
2782    Simplified message sending compilation, improving performance of both
2783    entity compilation and runtime top-level message sending.
2784
2785    Simplified implementation and improved performance of the built-in method
2786    current_predicate/2.
2787
2788    Updated the runtime error handler for top-level ::/2 calls to recognize
2789    non-existing predicate exceptions thrown by XSB, SICStus Prolog, CIAO,
2790    B-Prolog, and recent development versions of SWI-Prolog. Rewritten the
2791    ::/2 predicate in order to minimize the overhead of the catch/3 calls
2792    associated with the runtime error handler, thus improving performance.
2793
2794    Expanded the benchmarks example to test performance of the built-in
2795    database methods.
2796
2797    Lookup caches are now cleaned before loading a redefined entity in order
2798    to avoid potential problems with entity initialization goals containing
2799    message sending calls (previous versions cleaned the caches only after
2800    entity loading).
2801
2802    When reloading an object, its tables of dynamic predicate declarations
2803    and dynamic predicate definitions are now reseted.
2804
2805    Corrected a compatibility problem with the "birds" example due to the use
2806    of an operator not available in some Prolog compilers.
2807
2808
28092.23.0 - February 21, 2005
2810
2811    Optimized the code generated for local calls to the built-in predicates
2812    asserta/1, assertz/1, retract/1, and retractall/1, when the argument is
2813    a dynamic predicate declared by a scope directive in the object making
2814    the calls.
2815
2816    Added caching of predicate compiled forms for dynamic facts when used
2817    with the database built-in methods clause/2, asserta/1, assertz/1,
2818    retract/1, and retractall/1, resulting in a significant performance
2819    improvement when using an object's dynamic database. Improved performance
2820    of the database built-in methods abolish/1, asserta/1, assertz/1, clause/2,
2821    retract/1, and retractall/1 when the cache is not used.
2822
2823    Corrected a bug on the implementation of the built-in methods asserta/1
2824    and assertz/1 that prevented asserting of rules.
2825
2826    Corrected a bug on the implementation of built-in methods retractall/1,
2827    retract/1, and clause/2 that allowed access to local dynamic predicates
2828    from outside the container object.
2829
2830    Added a runtime error handler for top-level ::/2 calls which tries to deal
2831    with exceptions thrown by calling non-existing predicates by translating
2832    Logtalk generated internal predicate names to user names.
2833
2834    Print the total number of warnings after a call to the Logtalk built-in
2835    predicates logtalk_compile/1-2 and logtalk_load/1-2.
2836
2837
28382.22.5 - February 9, 2005
2839
2840    Added scripts for easy integration of Logtalk with K-Prolog. Updated the
2841    K-Prolog config file, correcting a show-stopper bug and enabling support
2842    for using the "library" notation for loading source files.
2843
2844    Updated JIProlog config file in order to allow smart compilation of source
2845    files.
2846
2847    Changed format of preprocessor and runtime dynamic predicates that deal
2848    with predicate indicators for better performance.
2849
2850    Simplified implementation of Logtalk built-in methods asserta/1 and
2851    assertz/1.
2852
2853    Corrected a performance bug with calls to built-in predicates from objects
2854    and categories.
2855
2856    Corrected spurious backtracking occurring on some calls to the built-in
2857    predicate define_events/5.
2858
2859    Updated shell script "misc/cplgtdirs.sh" to prevent copy of Logtalk files
2860    when the destination directory already exists (thus avoiding overriding
2861    any user-modified files when upgrading Logtalk).
2862
2863    Added syntax coloring for the predicate logtalk_library_path/2 to the
2864    supported text editors. Updated the syntax coloring file for the TextMate
2865    text editor, adding some missing ISO Prolog predicates.
2866
2867    Improved printing of lists of unknown referenced entities, misspelt calls,
2868    and singleton variables when compiling source files. Simplified handling
2869    of references to unknown entities.
2870
2871    Added workaround for Prolog compilers with broken read_term/3 singletons/1
2872    option.
2873
2874    Updated the Logtalk compiler/runtime and the documentation to always
2875    use the expression "compiler flag" instead of "compiler option" for
2876    consistency. Other minor documentation improvements.
2877
2878    Corrected a bug with the abolishing of dynamic entities where the clauses
2879    corresponding to the alias/3 directive are not being abolished.
2880
2881    Added new predicates '$lgt_call'/9 and '$lgt_once'/9 to all config files.
2882
2883    Simplified and improved performance of compilation of directives containing
2884    predicate indicators.
2885
2886
28872.22.4 - January 12, 2005
2888
2889    Simplified method lookup cache tables, resulting in a small message
2890    sending performance speedup. Improved method lookup caching for
2891    parametric objects. Added support for caching method lookups for
2892    parametric objects whose parameters contain cyclic terms.
2893
2894    Added a new category, "assignvars", to the Logtalk standard library,
2895    containing an adaptation of the implementation of logical assignable
2896    variables developed by Nobukuni Kino. Added a new example, "assignvars",
2897    illustrating some possible uses of assignable variables in the context
2898    of parametric objects.
2899
2900    Simplified compilation of op/3 directives: there is no longer need to
2901    repeat the directives both before and inside an entity in order to make
2902    the operators global and also use them in the compilation process.
2903
2904    Simplified installation instructions.
2905
2906    Corrected a compiler bug in the code that checks and prints a warning
2907    when redefined parametric objects.
2908
2909    Corrected a bug in the built-in predicate abolish_category/1, which
2910    failed to delete import relation clauses between the category being
2911    abolished and other categories.
2912
2913
29142.22.3 - December 30, 2004
2915
2916    Added a configuration file for XSB 2.7.
2917
2918    Corrected a bug where the use of alternative compilation directories
2919    would fail the first time the logtalk_compile/1-2 or logtalk_load/1-2
2920    predicates are used for a given file or library.
2921
2922    Corrected a bug in the built-in methods asserta/1 and assertz/1 when
2923    asserting facts into an object being debugged, which resulted in wrong
2924    execution context information being printed when tracing calls to
2925    the asserted facts.
2926
2927    Corrected a bug in the built-in methods asserta/1 and assertz/1 when
2928    asserting rules into an object being debugged, which resulted in rule
2929    bodies compiled with no information being printed for the rule head
2930    when tracing calls to the asserted rules.
2931
2932    Corrected a bug in the dynamic creation of objects, protocols, and
2933    categories when the debug flag is on, which resulted in the table of
2934    entities being debugged not being updated.
2935
2936    Corrected a bug in the handling of exceptions thrown when using the
2937    built-in debugger, which resulted in exceptions always being turned
2938    into failures.
2939
2940
29412.22.2 - December 24, 2004
2942
2943    Improved performance of dynamic creation and compilation of objects,
2944    protocols, and categories.
2945
2946    Improved error-checking code of methods asserta/1 and assertz/1 to
2947    prevent asserting of non-callable terms as facts.
2948
2949    Improved error checking for documenting directives (info/1 and info/2).
2950
2951    Improved the XSB integration script (make_xsblgt.sh) in order to use the
2952    configuration file and the libpaths file available from the $LOGTALKUSER
2953    directory.
2954
2955    Improved installation instructions and installation scripts documentation.
2956
2957    Added documentation to the user manual on describing predicate exceptions
2958    using the info/2 directive.
2959
2960    Corrected a bug in the predicate_property/2 built-in method when called
2961    with the second argument instantiated to the alias/1 property.
2962
2963
29642.22.1 - December 6, 2004
2965
2966    Improved installation instructions. Updated the Windows installation
2967    JScript script to add the Logtalk directories "misc" and "xml" to the
2968    system PATH environment variable and to reuse the environment variable
2969    LOGTALKUSER if already defined.
2970
2971    Added helper batch scripts (misc/cplgtdirs.bat, xml/lgt2html.bat, and
2972    xml/lgt2pdf.bat) for easily running the corresponding Windows JScript
2973    scripts from the command-line (the two xml/lgt2*.bat scripts run the
2974    corresponding *.js scripts stored in the %LOGTALKUSER%/xml directory
2975    in order to support user customization).
2976
2977    Updated the lgt2html.* and lgt2pdf.* shell scripts to use the environment
2978    variable LOGTALKUSER instead of LOGTALKHOME for finding supporting files,
2979    thus allowing for end-user customization of the scripts and their related
2980    files.
2981
2982    Added documentation on read-only compiler flags (which are defined in the
2983    configuration files) to the User Manual.
2984
2985    Updated the misc/lgt_install.js JScript installer script to workaround a
2986    Windows Scripting Host bug which may result in broken shortcuts in the
2987    created "Logtalk" program group.
2988
2989
29902.22.0 - November 29, 2004
2991
2992    Implemented a notion of library as simply a directory containing source
2993    files. Added a new dynamic predicate, logtalk_library_path/2, for
2994    specifying library paths. Added a sample file (libpaths/libpaths.pl) for
2995    setting library paths for the Logtalk standard library and for all the
2996    supplied examples.
2997
2998    Added support for using the notation <library>(<entity>) with the built-in
2999    predicates logtalk_compile/1-2 and logtalk_load/1-2 for compiling and
3000    loading source files contained on a library, without the need to first
3001    change the current working directory.
3002
3003    Changed the library and the examples loading instructions to use the new
3004    notation <library>(<entity>).
3005
3006    Improved installation instructions and installation scripts. Added a new
3007    environment variable, LOGTALKUSER, for defining the location of the copies
3008    of the user-modifiable Logtalk files in a multiple users setup environment.
3009
3010    Added utility predicates to most configuration files for querying and
3011    changing the current working directory (needed for the <library>(<entity>)
3012    notation to work).
3013
3014    Corrected a bug in the code that checks for file existence when compiling
3015    or loading source files and source metafiles.
3016
3017
30182.21.6 - November 15, 2004
3019
3020    Added support for using alternative directories for storing the Prolog files
3021    and the XML documenting files resulting from entity compilation. A new read-
3022    only flag, "altdirs", allows the support for alternative directories to be
3023    turned on the configuration files of Prolog compilers providing the necessary
3024    operating-system access predicates for implementing this feature.
3025
3026    Improved installation instructions and reporting of default compilation flags
3027    at startup.
3028
3029    Added a sorely missing "Hello World!" example :-)
3030
3031
30322.21.5 - November 2, 2004
3033
3034    Added a new optimization compiler flag, "events", which can be used to switch
3035    off event-driven programming support when not needed, on a per-object basis,
3036    resulting in improved message sending performance.
3037
3038    Small performance optimization to the runtime creation of dynamic objects,
3039    protocols, and categories.
3040
3041    Updated the error handling code of the built-in predicates create_object/4,
3042    create_protocol/3, and create_category/4 in order to throw an instantiation
3043    error when called with a non-instantiated argument.
3044
3045    Updated the benchmarks example to calculate and subtract the benchmark loop
3046    time in order to print absolute timings for the benchmarked goals.
3047
3048    Updated the Qu-Prolog patching instructions to also convert Logtalk source
3049    metafiles.
3050
3051    Fixed a typo on the XSB compatibility notes in the configs/NOTES file.
3052
3053
30542.21.4 - October 26, 2004
3055
3056    Corrected a silly bug in the definition of the predicate repeat/1 on the
3057    new "benchmarks" example.
3058
3059
30602.21.3 - October 25, 2004
3061
3062    Corrected a silly bug in message translation which resulted in a small
3063    performance loss. Simplified implementation of message sending predicate
3064    ::/2, resulting in a small performance improvement.
3065
3066    Added a new section on message sending performance to the user manual.
3067
3068    Added a new example, "benchmarks", for helping measuring performance of
3069    Logtalk message sending between Prolog compilers and for comparing message
3070    sending with predicate calls in plain Prolog and with calls to modules
3071    predicates.
3072
3073    Updated the YAP configuration file to hide some of the book-keeping tables
3074    of the Logtalk runtime engine and to use statistics/2 instead of cputime/0
3075    for more accurate timings.
3076
3077    Updated the Logtalk shell installation script to create the $prefix/bin
3078    directory if it does not exist.
3079
3080    The lgt2pdf.sh and lgt2html.sh shell scripts now use "rm -f" when removing
3081    the DTD and XSD files in order to avoid prompting the the user about the file
3082    permissions.
3083
3084    Updated the cplgtdirs.sh shell script to make all copied files user writable.
3085
3086
30872.21.2 - October 18, 2004
3088
3089    Added support for declaring grammar rule non-terminals as public, protected,
3090    private, dynamic, or discontiguous using the notation Functor//Arity. Added
3091    support for documenting non-terminals using the info/2 and mode/2 directives.
3092
3093    Added support for a new alias/1 predicate property.
3094
3095    New experimental config file for JIProlog 3.0 (see the configs/NOTES file
3096    for details).
3097
3098    Added a mode bundle for the TextMode 1.0.x (MacOS X) text editor providing
3099    syntax highlighting, folding, and code snippets for editing Logtalk source
3100    files. Corrected a bug in the syntax coloring of the :-/1-2 operator on the
3101    SubEthaEdit 2.x text editor.
3102
3103
31042.21.1 - September 27, 2004
3105
3106    Added experimental support for a new built-in method, expand_term/2, which
3107    allows access to the Logtalk grammar rule translator. Corrected bug in the
3108    expansion of \+/1 in grammar rule bodies. Optimized code generated for
3109    message sending calls in the body of grammar rules. Improved error handling
3110    of the built-in methods phrase/2 and phrase/3. Added new section on definite
3111    clause grammars to the user manual. Added two new objects to the "dcgs"
3112    example, dcgtest and bypass, containing test cases for the Logtalk DCG
3113    translator and illustrating some programming techniques with grammar rules.
3114
3115    Corrected a bug in the implementation of the built-in method clause/2 which
3116    prevented access to clauses of local dynamic predicates.
3117
3118    Corrected some dead links on the XHTML manuals.
3119
3120    Corrected a bug in the syntax coloring of numbers on the SubEthaEdit 2.x
3121    text editor.
3122
3123
31242.21.0 - September 14, 2004
3125
3126    Added a new predicate directive, alias/3, which allows the definition of
3127    alternative predicate names in order to improve readability of inherited
3128    features and to solve conflicts between implemented, imported, or inherited
3129    predicates.
3130
3131    Added new example, "aliases", illustrating the use of the new alias/3
3132    predicate directive for improving readability of inherited features.
3133
3134    Added new example, "diamonds", illustrating problems and solutions for the
3135    "diamond problem" (multi-inheritance conflicts and ambiguities) using the
3136    new alias/3 predicate directive.
3137
3138    Allow categories to import other categories, i.e. allow categories to be
3139    defined as a composition of other categories. This feature should only be
3140    used when extending a category without breaking its functional cohesion
3141    (for example, when a modified version of a category is needed for importing
3142    into several unrelated objects).
3143
3144    Added new example, "engines", illustrating importing a category from another
3145    category.
3146
3147    Updated the syntax coloring configuration files for the supported text
3148    editors for the new alias/3 predicate directive.
3149
3150    Added auto-complete strings for Logtalk methods and for Logtalk and Prolog
3151    built-in predicates and directives to the SubEthaEdit 2.x text editor.
3152
3153    Corrected a bug which prevented compilation of metafiles containing
3154    parametric entities.
3155
3156
31572.20.2 - August 31, 2004
3158
3159    Added a Windows JScript script for installing Logtalk. Improved the Windows
3160    JScript scripts used for easy integration of Logtalk with selected Prolog
3161    compilers.
3162
3163    Improved user manual section on defining object and category metapredicates
3164    and on calling non-standard Prolog built-in metapredicates. Improved the
3165    description of some compiler options.
3166
3167    Added some files missing from the "errors" example (which should have been
3168    included in the previous release).
3169
3170    Added basic syntax coloring support for the BBEdit 8.x text editor.
3171
3172
31732.20.1 - August 19, 2004
3174
3175    Added Windows JScript scripts for easy integration of Logtalk with CIAO and
3176    GNU Prolog.
3177
3178    Added encoding attribute (set to UTF-8) to the xsl:output tag in the
3179    lgtxml.xsl, lgthtml.xsl, and lgtxhtml.xsl files.
3180
3181    Replaced the Windows JScript scripts lgt2pdf.js and lgt2html.js by their
3182    final versions (the wrong ones shipped with Logtalk version 2.20.0).
3183
3184    Updated the "errors" example to illustrate possible conflict errors when
3185    using the uses/2 directive.
3186
3187    Updated the RPM logtalk.spec file to use the .tgz archive extension.
3188
3189
31902.20.0 - August 16, 2004
3191
3192    Added support for the uses/2 predicate directive (whose semantics is similar
3193    to C++ using-declarations). Updated the uses/1 entity directive to accept as
3194    argument a single object identifier.
3195
3196    Improved installation instructions for Windows users.
3197
3198    Added four new sample bash shell scripts and Windows JScript scripts for
3199    converting XML documenting files to PDF, HTML, and XHTML using several XSL
3200    processors.
3201
3202    Added missing namespace to XSL files in order to generated valid (X)HTML
3203    files with recent versions of XSLT processors.
3204
3205    Updated the User Manual documentation on converting XML documenting files
3206    to other formats.
3207
3208    Removed the texml.xsl XSLT file as the TeXMLatte application it depends on
3209    is no longer available.
3210
3211    Added Windows JScript script for copying the Logtalk examples, library, and
3212    xml directories to the user directory.
3213
3214    Added Windows JScript scripts for easy integration of Logtalk with ECLiPSe,
3215    SWI-Prolog, SICStus Prolog, and YAP.
3216
3217    Added missing extension for source metafiles to the SWI-Prolog hook file.
3218   
3219    Corrected a bug in the lgtxhtml.xsl XSLT file where a wrong reference to
3220    the Logtalk CSS file is being used in the xml-stylesheet tag.
3221
3222    The iso_initialization_dir/1 compiler option is now a read only flag,
3223    defined in the configuration files.
3224
3225
32262.19.1 - August 2, 2004
3227
3228    Corrected a bug where entities could not be reloaded if they depend on
3229    other, not yet loaded entities.
3230
3231    Corrected a bug where compiler options would not be used when compiling
3232    source metafiles.
3233
3234    Corrected several typos on the Logtalk manuals.
3235
3236
32372.19.0 - July 26, 2004
3238
3239    Added support for defining more than one entity per file using Logtalk
3240    source metafiles (*.mlgt), which the runtime engine automatically splits
3241    on single entity source files plus loading and compiling helper files.
3242
3243    Updated the URL used on the automatically generated XML documenting files
3244    when compiling entities with the option doctype(web).
3245
3246    Improved error checking when compiling calls to the {}/1 control construct.
3247
3248    Corrected several typos and some outdated links on the Logtalk manuals.
3249
3250
32512.18.0 - July 9, 2004
3252
3253    Added caching of method lookups in order to improve message processing
3254    performance (including messages to self and super calls). Applied several
3255    optimizations to runtime translation of messages in order to further
3256    improve performance.
3257
3258    Improved error checking while parsing and compiling messages to self.
3259
3260    Update ECLiPSe config files to compile the Prolog files generated by Logtalk
3261    (when compiling source files) in optimized mode instead of traceable mode.
3262
3263    Updated description of patches needed for running Logtalk with XSB, added
3264    a shell script for easy integration of Logtalk with this Prolog compiler,
3265    and corrected a problem with its corresponding config file.
3266
3267    Added multifile/1 directive to the syntax coloring configuration files of the
3268    supported text editors.
3269
3270
32712.17.2 - June 14, 2004
3272
3273    Updated the Logtalk compiler to allow compilation of source files which
3274    contain only directives and no entity definition.
3275
3276    Simplified loading of library and example entities by using Logtalk source
3277    files as loader files.
3278
3279    Some improvements to the documentation, including the QUICK_START file and
3280    the User Manual for first-time users, and to the example descriptions.
3281
3282    Corrected a bug in handling of local object operators that are also global
3283    operators.
3284
3285    Corrected a bug where dynamic directives are not being generated for dynamic
3286    predicates that lack a scope directive or an initial set of clauses.
3287
3288    Corrected a bug where local dynamic predicates would need a private scope
3289    directive in order to allow clauses of the predicate to be retracted.
3290
3291    Simplified compilation of dynamic and discontiguous predicate directives.
3292
3293    Added new "logic" example implementing a translator from logic propositions
3294    to conjunctive normal form.
3295
3296    Corrected a problem with wrong end-on-lines on some files.
3297
3298    Added a shell script for easy integration of Logtalk with CIAO Prolog.
3299
3300
33012.17.1 - June 7, 2004
3302
3303    Added custom handling of specification of predicate exceptions in info/2
3304    documenting directives when writing XML documenting files (declared as
3305    "exceptions is [Cond1-Term1, Cond2-Term2, ...]"; each pair (Condi, Termi)
3306    represents an error condition and its respective exception).
3307
3308    Changed debugger command "e" to print exception terms instead of exiting
3309    Logtalk session.
3310
3311    Corrected a compilation error with B-Prolog due to operator priorities.
3312
3313    Corrected a possible problem with the redefinition of loaded entities that
3314    define (possibly at runtime) dynamic predicates. All clauses for an entity
3315    dynamic predicates are retracted before loading the new entity definition.
3316
3317    Corrected a potential bug when pretty printing terms with variables in the
3318    debugger and in the created XML documenting files.
3319
3320    Added four more DCGs examples ("walker movements", "iterative shell command
3321    parsing", "bill of materials", and "command language").
3322   
3323    New "puzzles" and "metainterpreters" examples.
3324
3325    Added a mode bundle for the SubEthaEdit 2.x (MacOS X) text editor providing
3326    syntax coloring for editing Logtalk source files. Optimized some of the
3327    regular expressions in the syntax coloring files for the Kate/Kwrite and Vim
3328    text editors.
3329
3330    Removed predicate nth/3 from library entities listp, list, and difflist.
3331    Replaced by the predicates nth0/3 and nth1/3. Added new predicates nth1/4
3332    and nth0/4.
3333
3334    Updated the config file for Quintus Prolog to make use of the "files"
3335    library.
3336
3337    Added experimental implementations for some Prolog compilers of the library
3338    portable protocol for operating system access (systemp.lgt). See the file
3339    library/experimental/NOTES for details.
3340
3341
33422.17.0 - April 26, 2004
3343
3344    Added built-in debugging support implemented through the definition of a
3345    new pseudo-object named "debugger". Added "debug" compiler option. Renamed
3346    library entities "debuggerp" and "debugger" to, respectively, "event_dbgp"
3347    and "event_dbg".
3348
3349    Improved installation instructions for multi-user environments. Added
3350    a shell script for installing Logtalk in Unix and Unix-like operating
3351    systems. Added a shell script for copying Logtalk xml, examples, and
3352    library directories to the user home directory.
3353
3354    Added a logtalk.spec file for building Linux RPMs from sources.
3355
3356    Added a set of shell scripts for easy integration of Logtalk with ECLiPSe,
3357    GNU Prolog, Qu-Prolog, SICStus Prolog, SWI-Prolog, and YAP.
3358
3359    Corrected bug in the definition of the pseudo-object "user" that resulted
3360    in mixed up metapredicate and type predicate properties.
3361
3362    Removed config files for outdated versions of Qu-Prolog, SWI-Prolog, ECLiPSe,
3363    K-Prolog, CIAO, YAP, Amzi! Prolog, LPA Win-Prolog, SICStus Prolog, and XSB.
3364
3365
33662.16.2 - April 2, 2004
3367
3368    Corrected a bug in the library category monitor (file library/monitor.lgt)
3369    that prevents its compilation.
3370
3371    Changed the possible values of the read-only flag startup_message (defined
3372    in the config files) to "flags" (print banner and flag values), "banner"
3373    (print only the banner), and "none" (do not print neither the banner nor the
3374    flag values). Default value is "flags".
3375
3376    Updated the "errors" example to illustrate the error messages thrown when
3377    trying to redefine Logtalk built-in control constructs.
3378
3379    Corrected a small problem with the Logtalk language specification file for
3380    Apple's Xcode IDE.
3381
3382    Added preliminary support for syntax coloring using the Windows text editor
3383    Crimson Editor.
3384
3385
33862.16.1 - March 23, 2004
3387
3388    The local built-in method parameter/2 can now be used inside categories
3389    (but please read the warnings about such practice on the user manual).
3390
3391    Updated the Logtalk compiler to report an error when the user tries to
3392    redefine a message sending or external call control construct inside an
3393    object or category.
3394
3395    Corrected a bug in the compilation of metacalls whose meta-arguments are
3396    variables.
3397
3398    Removed references to file sax.jar from the scripts used to convert XML
3399    documenting files into (X)HTML. Updated scripts html.sh, htmlnt.cmd, and
3400    htmldos.bat to use XT 20020426a or later version.
3401
3402    Improved syntax coloring accuracy of built-in predicates and methods for
3403    the SubEthaEdit text editor.
3404
3405    Updated config file for Qu-Prolog 6.4.
3406
3407
34082.16.0 - March 3, 2004
3409
3410    Logtalk is now distributed under the Artistic License 2.0.
3411
3412    Operators declared inside an entity are now local to the entity, not
3413    affecting the global operator table (complying with the Logtalk language
3414    specification). Input and output of terms from inside objects and
3415    categories now work as expected in the presence of local operator
3416    declarations. Added a new example named "operators".
3417
3418    Updated built-in method predicate_property/2 for returning metapredicate/1
3419    properties for both Logtalk and Prolog metapredicates.
3420
3421    Added support for calls to non-ISO Prolog standard built-in metapredicates
3422    inside objects and categories. Added support for the declaration of non-ISO
3423    Prolog standard metapredicates in the config files.
3424
3425    Small change to the way the Logtalk compiler reports the compilation of
3426    entities. Small optimizations to the compilation of Logtalk source files.
3427
3428    Corrected a bug where calls to Logtalk built-in predicates would be
3429    reported as non-portable when the value of compiler option portability is
3430    set to warning.
3431
3432    New config file for Qu-Prolog 6.4 (see the configs/NOTES file for details).
3433
3434    Corrected a problem with the syntax coloring of quoted atoms and strings
3435    in the SubEthaEdit text editor. Added more accurate syntax highlight for
3436    built-in methods and built-in predicates.
3437
3438    Updated the syntax coloring configuration files for all supported text
3439    editors to recognize the file extension used by the config files.
3440
3441
34422.15.6 - February 9, 2004
3443
3444    Added "xmlspec" compiler option in order to specify the extension (dtd
3445    or xsd) of the file describing the XML documenting files specification.
3446
3447    Renamed compiler option "named_anonymous_vars" to the more appropriated
3448    name "underscore_vars". Changed possible option values to "dont_care" and
3449    "singletons" (default).
3450
3451    Added XSLT file for converting XML documenting files to XHTML 1.0 Strict
3452    files. Set the default encoding of all XSLT files to UTF-8.
3453
3454    Added syntax coloring support for the KDE Kate and Kwrite text editors.
3455
3456    Improved syntax coloring configuration files for VIM, jEdit, NEdit,
3457    SubEthaEdit, and Emacs text editors.
3458
3459    Removed outdated support for MacOS X Project Builder and added support
3460    for the new MacOS X Xcode developer tool.
3461
3462    Corrected bug in the built-in predicate current_logtalk_flag/2 that
3463    prevented some flag values from being returned after using the built-in
3464    predicate set_logtalk_flag/2.
3465
3466    Corrected bug in the shapes example (wrong placement of the declaration
3467    of the predicate side/1).
3468
3469
34702.15.5 - December 30, 2003
3471
3472    Make operator ^^/1 right-associative for consistency with remaining
3473    operator declarations.
3474
3475    Added file BIBLIOGRAPHY containing a list of Logtalk publications in
3476    BibTeX format.
3477
3478    Added a font-lock file for Emacs providing syntax coloring for editing
3479    Logtalk source files.
3480
3481    Added an implementation of the Smalltalk dependent mechanism to the
3482    standard Logtalk library.
3483
3484    Updated the config file for ECLiPSe 5.4~5.7 with missing ISO Prolog
3485    predicate definitions needed for successful compilation of all entities
3486    in the Logtalk standard library.
3487
3488    Updated manual pages to comply with XHTML 1.0 Strict and to provide
3489    better navigation.
3490
3491
34922.15.4 - July 9, 2003
3493
3494    Corrected a spurious backtracking bug in the DCG rule translator. Added
3495    two more examples of DCGs.
3496
3497    New config file for XSB 2.6. Updated Logtalk compiler to compile cleanly
3498    under XSB after applying the patch described in configs/NOTES.
3499
3500    Updated SWI-Prolog config file to hide compiled entity predicates (requires
3501    SWI-Prolog 5.2.3 or later version). New optional file configs/swihook.pl
3502    contains hook code that allows Logtalk entities to be compiled and loaded
3503    using SWI-Prolog load_files/2 and consult/1 predicates.
3504
3505    Syntax definition file for the Hydra 1.1 (MacOS X) text editor providing
3506    syntax coloring for editing Logtalk source files.
3507
3508    Updated syntax coloring files for jEdit, NEdit, Vim, and TextPad in order
3509    to recognize character code constants (0'x) and the DCG operator -->/2.
3510
3511
35122.15.3 - June 27, 2003
3513
3514    Updated experimental support for DCG rules to prevent over-simplification
3515    of unification goals in the compilation of rules to clauses. Push-back
3516    lists can now be used on rule heads.
3517
3518    The compilation mode of an entity (static/dynamic) is now stored in the
3519    corresponding entity table (implying recompilation of all entities).
3520
3521    Updated GNU Prolog config file to hide compiled entity predicates.
3522
3523    Updated SWI-Prolog config file for better integration of Logtalk with
3524    this compiler.
3525
3526
35272.15.2 - April 2, 2003
3528
3529    Experimental support for DCG rules inside categories and objects. Added
3530    built-in methods phrase/2 and phrase/3.
3531
3532    Updated GNU Prolog config file to not hide compiled entity predicates in
3533    order to avoid incompatibilities with dynamic entities.
3534
3535
35362.15.1 - March 8, 2003
3537
3538    New example, msglog, of using events and monitors to record, replay, and
3539    print user messages.
3540
3541    Corrected a typo on the jEdit templates that resulted in syntax errors.
3542    Corrected wrong year format in info/1 directive in all entity templates.
3543    Added missing version info key to jEdit prototype template.
3544
3545    Corrected documentation of built-in local methods self/1 and sender/1.
3546    Updated documentation of built-in local methods parameter/2 and this/1.
3547
3548
35492.15.0 - February 5, 2003
3550
3551    Changed "authors" key in info/1 directive to "author".
3552
3553    Corrected documentation of built-in local method this/1.
3554
3555    New geometric shapes example implemented in two versions, one
3556    prototype-based and the other one class-based.
3557
3558    Improved support for jEdit text editor by adding a set of programming
3559    templates for use with the editor Templates plug-in.
3560
3561    Added basic support for syntax highlighting and programming templates
3562    for MacOS X Project builder.
3563
3564
35652.14.7 - January 10, 2003
3566
3567    Corrected a bug in the built-in methods asserta/1 and assertz/1 when
3568    asserting predicate rules.
3569
3570    The built-in predicates logtalk_compile/1-2 and logtalk_load/1-2 now
3571    accept both an entity (an atom) or a list of entities (a list of atoms).
3572
3573    Optimized the code generated when compiling or asserting clauses for
3574    dynamic predicates.
3575
3576    Optimized protected inheritance performance on some Prolog compilers.
3577
3578
35792.14.6 - December 31, 2002
3580
3581    Corrected a bug where the opening directive of an object that,
3582    simultaneously, implements a protocol, imports a category, instantiates
3583    a class, and specializes a superclass, will not be recognized.
3584
3585
35862.14.5 - December 20, 2002
3587
3588    Simplified dynamic table of predicate declarations by removing two
3589    redundant arguments.
3590   
3591    Corrected a bug where sending messages such as true/0 or !/0 to an
3592    unknown object succeeded instead of throwing the correct exception.
3593
3594    Simplified the code used to generate links in the lgtpdfa4.xsl and
3595    lgtpdfus.xsl XSLT files.
3596
3597
35982.14.4 - November 5, 2002
3599
3600    Removed definition of deprecated built-in predicate logtalk_version/3.
3601
3602    Show flag names when printing at startup the default flag values.
3603
3604    Small change to messages printed on console with smart compilation of
3605    source files turned on.
3606
3607    Updated YAP 4.3.x config file to use the YAP "system" library to access
3608    the operating system for time, date, and file properties (enabling smart
3609    source code compilation).
3610
3611    Updated the lgtpdfa4.xsl and lgtpdfus.xsl XSLT files to workaround a bug
3612    in the PassiveTeX 1.21 XSL:FO processor.
3613
3614
36152.14.3 - September 16, 2002
3616
3617    New compiler option, doctype, to set the doctype reference (if any)
3618    in the XML documenting files. Default value is "local" for backward
3619    compatibility. Updated the user manual section on compiler options.
3620
3621    The Logtalk built-in predicate logtalk_version/3 should be considered
3622    deprecated (use current_logtalk_flag/3 instead). All references to this
3623    predicate have been removed from the manuals.
3624
3625    Updated the jEdit syntax coloring config file for the new jEdit 4.1
3626    version.
3627
3628    Updated the lgtpdfa4.xsl and lgtpdfus.xsl XSLT files for compatibility
3629    with the XSL:FO processors Apache FOP 0.20.4, PassiveTeX, and RenderX
3630    and with the XSL W3C Recommendation of October 15, 2001. Updated the
3631    pdf.bat and pdf.sh scripts to reference the latest version of the
3632    Apache FOP processor (0.20.4).
3633
3634    Changed the shell scripts html.sh and pdf.sh for compatibility with the
3635    sh, bash, and zsh shells.
3636
3637
36382.14.2 - August 26, 2002
3639
3640    Calls to built-in method parameter/2 are now compiled inline, improving
3641    call performance.
3642
3643    Updated Logtalk compiler to clean temporary compilation predicates after
3644    compiling an entity instead of only before compilation.
3645
3646    Updated YAP 4.3.x config file for better Logtalk integration by hiding
3647    all internal compiler, runtime, and compiled entities static predicates.
3648
3649    Updated GNU Prolog config file for better Logtalk integration by hiding
3650    all internal compiler, runtime, and compiled entities predicates.
3651
3652    Updated the XSLT conversion scripts lgtxml.xsl and lgthtml.xsl to correct
3653    some HTML conformance errors in the generated pages.
3654
3655    Corrected some XHTML conformance errors in the manual pages.
3656
3657
36582.14.1 - July 31, 2002
3659
3660    New Windows NT script and updated Unix shell script for batch converting
3661    XML documenting files to HTML. Both scripts also generate an index.html
3662    file containing links to all converted XML documenting files.
3663
3664    Corrected wrong XHTML DOCTYPE declaration in manual pages.
3665
3666
36672.14.0 - July 26, 2002
3668
3669    Renamed all compiler and runtime internal predicates and all auxiliary
3670    predicates in the config files to start with a "$" character.
3671   
3672    New compiler option, code_prefix, to set a prefix for all Prolog code
3673    functors generated by Logtalk when compiling entities. Default is ''.
3674
3675    New compiler option, named_anonymous_vars, that instructs the compiler to
3676    interpret variables that start with an underscore as anonymous variables
3677    (and to not report them as singleton variables). Default value is "off".
3678
3679    Directive info/2 was wrongly declared as a entity directive instead of a
3680    predicate directive.
3681
3682    Converted all manual pages to XHTML 1.0 format. Corrected a wrong link in
3683    the reference manual. Replaced GIF images by PNG versions.
3684
3685    Updated BProlog 6.x config file to workaround the new 6.2 built-in
3686    predicate ::/2 that conflicts with the same named Logtalk message sending
3687    operator.
3688
3689    Removed call to the obsolete built-in predicate nodbgcomp/0 from all
3690    ECLiPSe config files.
3691
3692
36932.13.0 - June 15, 2002
3694
3695    Logtalk now outputs Prolog code using write_canonical/2 instead of
3696    write_term/3. Goals are better portability of the generated Prolog files
3697    and avoid issues with clauses with long bodies for Prolog compilers that
3698    use a term print depth limit to prevent problems with cyclic terms.
3699
3700    Added report of default flag values at Logtalk startup.
3701
3702    Logtalk now prints a warning when redefining parametric objects.
3703
3704    Removed need of an abort/0 predicate from the Logtalk debugger example.
3705    Removed any definition of this predicate from the config files.
3706
3707    Added missing definitions for some ISO built-in predicates to the Amzi!
3708    Prolog 6.2.2 config file.
3709
3710
37112.12.0 - May 25, 2002
3712
3713    New read-only Logtalk flag "version". Corrected exception term generated
3714    when trying to modify a read-only flag using the set_logtalk_flag/2
3715    built-in predicate.
3716
3717    Updated config file for OpenProlog 1.1b5.
3718
3719    New config file for ECLiPSe 5.4.
3720
3721    Renamed config files for CIAO 1.7 (beta of 1.8) to "ciao_aux18.config"
3722    and "ciao18.config".
3723
3724    Updated config file for Amzi! Prolog 6.2.2.
3725
3726    New example of using some of the built-in database handling methods
3727    (dynpred).
3728
3729    Syntax configuration files for jEdit 4.0, VIM 6.1, NEdit 5.2, and
3730    TextPad 4.5 text editors providing syntax highlighting for editing
3731    Logtalk source files.
3732
3733
37342.11.0 - April 22, 2002
3735
3736    Added a "smart compilation" feature to the Logtalk compiler, controlled
3737    by a "smart_compilation" flag. Only available in Prolog compilers that
3738    provide access to file modification dates.
3739
3740    Added a "startup_message" flag to control printing of the Logtalk banner
3741    at startup.
3742
3743    Reworked Logtalk pre-processor compilation and loading reports. Compiler
3744    option "report" now toggles between normal reporting (as specified by the
3745    other flags) and silent compilation/loading of source files.
3746
3747
37482.10.0 - April 5, 2002
3749
3750    Scope of object asserted predicates for which there is no declaration is
3751    now a function of the context instead of always being declared public.
3752    Asserting in this, the predicate is declared private, asserting in self,
3753    the predicate is declared protected, otherwise the predicate is declared
3754    public.
3755
3756    Throw an error if a category contains clauses for dynamic predicates.
3757
3758    Updated documentation on categories and built-in methods for database
3759    handling.
3760
3761    Retracting all clauses for a dynamic predicate from an object now allows
3762    an inherited definition to be called when sending the corresponding
3763    message. In previous versions the message just failed.
3764
3765    Added missing entries for the built-in predicates current_logtalk_flag/2
3766    and set_logtalk_flag/2 to the Logtalk compiler built-in predicates table.
3767
3768    Updated config file for Amzi! Prolog 6.1.74.
3769
3770    Updated notes on patching XSB to work with Logtalk.
3771
3772
37732.9.3 - February 9, 2002
3774
3775    New current_logtalk_flag/2 and set_logtalk_flag/2 built-in predicates.
3776
3777    Updated documentation on new built-in predicates.
3778
3779    Renamed SWI-Prolog config file swi330.config to swi.config.
3780
3781    Renamed config file predicate lgt_default_compiler_option/2 to lgt_flag/2.
3782
3783    New XSL style-sheets and shell scripts to convert Logtalk XML entity
3784    documenting files to PDF format using XSL Formating Objects.
3785
3786
37872.9.2 - January 4, 2002
3788
3789    The Logtalk compiler can now print a warning when compiling source files
3790    that use non-ISO defined built-in predicates using a new portability/1
3791    compiler option. Updated the relevant sections of the user manual and the
3792    errors example.
3793
3794    Corrected a compiler bug where the entity relation tables only recorded
3795    the last entry per entity relation type.
3796   
3797    Updated config file for CIAO 1.7#162.
3798
3799
38002.9.1 - December 5, 2001
3801
3802    Logtalk compiler now prints a warning when redefining or replacing an
3803    existing entity.
3804
3805    Corrected a compiler bug in the error checking code for the info/1
3806    and info/2 directives.
3807
3808    Changed the order of object loading in the "mi" example to avoid
3809    spurious warning messages.
3810   
3811    Added a new problem ("bridge") to the "searching" example. Improved
3812    "performance" monitor to give correct reports on alternative solutions.
3813    Corrected a bug in the "water jug" state space example.
3814
3815
38162.9.0 - October 22, 2001
3817
3818    Added config files for CIAO Prolog 1.7p115 and B-Prolog 6.0.
3819
3820    Compiling and loading an entity that contains references to unknown
3821    entities (by default) prints a warning. Updated user and reference
3822    manuals.
3823
3824    Rewritten all the compiler warning/error code and output messages.
3825
3826    Changed compiled code functors postfixes from "_sdcl" and "_sdef" to
3827    "_idcl"    and "_idef" (implies recompilation of all objects, protocols,
3828    and categories).
3829
3830    Changed all occurrences and references to the term "entity_scope" to
3831    "scope".
3832
3833    Removed some redundant productions from the Logtalk grammar.
3834
3835    Updated documentation on the xml directory. Renamed some of the .xsl
3836    files. Added sample scripts to batch convert .xml files to .html files.
3837   
3838    Added a new loader utility file, all.loader, to load all library files
3839    loaded by the other loader files.
3840
3841    Started work on documenting the Logtalk pre-processor/compiler source
3842    file.
3843
3844    New "errors" example. Updated the "inheritance" example.
3845
3846
38472.8.4 - March 9, 2001
3848
3849    Updated config files for BinProlog 8.0, K-Prolog 5.01, XSB 2.3, and
3850    Amzi! Prolog 4.103~5.0.
3851   
3852    New config file for Amzi! Prolog 6.1 beta.
3853
3854    Corrected an incomplete entity definition in the Logtalk XML DTD.
3855    Rewrite the Logtalk XSLT files for improved compatibility with XSLT
3856    processors regarding handling of whitespace.
3857
3858    A first cut of a XML Schema for the Logtalk XML documentation files
3859    (file xml/logtalk.xsd).
3860
3861    Small improvements to the documentation.
3862
3863
38642.8.3 - November 21, 2000
3865
3866    Corrected a bug where sending a message for a built-in method to an
3867    unknown object fails instead of generating the expected exception.
3868
3869    Put some occurrences of atoms public, mode, and type between ()'s to
3870    avoid compilation errors in BinProlog 8.0 and other Prolog compilers
3871    that declare these atoms as operators.
3872
3873    Corrected the definition of the state space of the "Missionaries and
3874    Cannibals" problem in the "searching" example that resulted in some
3875    wrong solutions.
3876
3877
38782.8.2 - November 5, 2000
3879
3880    New .xsl file to convert .xml files to TeXML files.
3881
3882    Fixed a problem with explicit compilation options being correctly parsed
3883    but not processed.
3884
3885    Corrected a bug regarding default init options definition for the
3886    points, polygons, and bricks examples. Updated category initialization
3887    in roots example.
3888
3889
38902.8.1 - October 28, 2000
3891
3892    New config file for K-Prolog 5.0.
3893
3894    Improved compiler error detection and reporting of invalid directives
3895    and clauses.
3896   
3897    Corrected a problem with some Prolog compilers where compiling a file
3898    containing syntax errors may not close the file after the errors are
3899    reported.
3900
3901    Many small improvements to all documentation.
3902   
3903    Small improvements to the .xsl files and to the output of .xml files.
3904
3905
39062.8.0 - October 1, 2000
3907
3908    I have found just a few days ago that I have uploaded to the Logtalk web
3909    server a development version of Logtalk 2.7.0 instead of the final one!
3910    To avoid confusions I decided to release a new version.
3911
3912    Changed implementation of the logtalk_compile/1-2 and logtalk_load/1-2
3913    predicates to only accept a list of entities instead of either an entity
3914    or a list of entities, simplifying and improving the performance of these
3915    predicates. Improved error reporting for the logtalk_compile/1 and
3916    logtalk_load/1 predicates. Updated relevant sessions in the user and
3917    reference manuals.
3918
3919    Simplified the implementation of the following predicates, by sharing
3920    the error checking code with the corresponding extended versions:
3921    implements_protocol/2, imports_category/2, instantiates_class/2,
3922    specializes_class/2, extends_protocol/2, and extends_object/2.
3923
3924    Completed some missing library file dependencies documentation in some
3925    examples.
3926
3927    New version of the QUICK_START help file. Updated tutorial.
3928
3929
39302.7.0 - August 24, 2000
3931
3932    First release of the Logtalk standard library of objects, protocols and
3933    categories.
3934
3935    Rewritten all examples to use the new Logtalk standard library.
3936
3937    New logtalk_load/2 and logtalk_compile/2 Logtalk built-in predicates,
3938    accepting a list of compiler options. See the User and Reference Manuals
3939    for details.
3940
3941    New XSLT file for viewing .xml files in Microsoft Internet Explorer 5.5
3942    for Windows after installing the latest Microsoft XML Parser Preview
3943    Release. Small improvements in all XSLT files.
3944
3945    Starting with this version all config files need to provide a definition
3946    for the compare/3 predicate if it is not built-in in the corresponding
3947    Prolog compiler. Also, default Logtalk compiler options are now also set
3948    in the config files using the lgt_default_compiler_option/2 predicate.
3949
3950    Updated config file for CIAO 1.6p1. See the configs/NOTES file for
3951    details.
3952
3953
39542.6.2 - July 4, 2000
3955
3956    Improved performance and error checking for the built-in predicates
3957    create_object/4, create_protocol/3 and create_category/4.
3958
3959    Updated config file for BinProlog 7.83.
3960
3961    Many small updates to all documentation.
3962
3963    New PDF versions of the documentation formated for printing (with page
3964    numbers, table of contents and index)are now available in both A4 and
3965    US letter formats.
3966
3967
39682.6.1 - May 5, 2000
3969
3970    Modified the structure of the automatically generated XML documenting
3971    files to improve XSL translation performance. Added a new, more standard
3972    compliant, XSL file to generate HTML files and renamed the old one to
3973    ie5.xsl. See the xml/NOTES file for details. Corrected an error in the
3974    logtalk.css CSS file.   
3975
3976    Modified the definitions of predicates lgt_file_extension/2 and
3977    lgt_file_name/2 in all config files.
3978
3979    Updated all the user manual sessions related to automatic documentation.
3980
3981    Updated all HTML documentation for future XHTML 1.0 conformance.
3982
3983    Start adding documenting directives to most examples.
3984
3985
39862.6.0 - April 27, 2000
3987
3988    Added support for documentation of objects, protocols, and categories,
3989    using automatic generation of XML files.
3990
3991    Added info/1 and info/2 directives for documenting objects, protocols,
3992    categories, and predicates. Added definition of documentation file name
3993    extension and default file names for the DTD and XSL files to the config
3994    files.
3995
3996    Improved error checking for the built-in predicates create_object/4,
3997    create_protocol/3 and create_category/4 to also detect invalid entity
3998    identifiers.
3999
4000    Updated the user and reference manuals to describe the new automatic
4001    documenting features.
4002
4003    Updated all HTML documentation to conform to HTML 4.01 strict standard.
4004
4005    Corrected some wrong cross-reference links and titles in the reference
4006    and user manuals HTML pages.
4007
4008    PDF versions of the manuals and tutorial are now available in both A4
4009    and US letter formats.
4010
4011    Corrected two errors in the searching example, one in the definition of
4012    the farmer problem state space and the other when backtracking over
4013    performance reports.
4014
4015
40162.5.2 - March 7, 2000
4017
4018    Updated manuals to clarify some limitations of declaring and defining
4019    dynamic predicates inside categories and documented a way of using the
4020    built-in local method this/1 to access object parameters.
4021
4022    Removed references to parametric categories from the Logtalk
4023    documentation (at runtime we can only access object parameters,
4024    not category parameters).
4025
4026    Corrected two wrong declarations of built-in methods (forall/2 and
4027    retractall/1) in the Logtalk pre-processor.
4028
4029    Corrected bug where predicates declared in dynamic entities may have
4030    a "static" instead of a "dynamic" property.
4031
4032    Corrected a bug in category compilation that prevented a dynamic category
4033    from being abolished. Speedup predicate definition lookups for categories.
4034
4035
40362.5.1 - February 18, 2000
4037
4038    Two new examples: birds, a bird identification expert system adopted
4039    (with permission) from an Amzi example, and viewpoints, a set of
4040    prototypes showing how to do property sharing and value sharing in
4041    Logtalk.
4042
4043    Renamed config file yap421.config to yap430.config to match the name of
4044    the new YAP 4.3.0 public release (named 4.2.1 while on beta testing).
4045
4046    Partial config file for Trinc Prolog R3.
4047
4048
40492.5.0 - December 29, 1999
4050
4051    The Logtalk pre-processor now accepts arbitrary clauses and directives
4052    to appear in a file before an opening entity directive. The clauses and
4053    directives are added unchanged to the compiled file.
4054
4055    Improved performance for all kinds of message sending.
4056
4057    Two new examples: reflection, showing how to implement a simple
4058    class-based reflective system, and symdiff, showing how to use
4059    parametric objects to implement symbolic expression differentiation
4060    and simplification.
4061
4062    Updated config file for the beta 8 release of SWI-Prolog 3.3.0.
4063
4064
40652.4.0 - December 1, 1999
4066
4067    Logtalk is now an Open Source project, available under Perl's Artistic
4068    license.
4069
4070    Two new examples: instmethods, illustrating the use of instance defined
4071    methods, and classvars, showing how to implement class variables.
4072
4073    Updated Logtalk grammar to explicitly allow for user-defined types
4074    in mode/2 directives.
4075
4076    New config files for SWI-Prolog 3.3.0, SICStus Prolog 3.8 and CIAO
4077    Prolog 1.4p0 (incomplete).
4078
4079    Updated config file for B-Prolog 4.0.
4080
4081    Updated config file for GNU Prolog to use the new call_with_args()
4082    built-in predicate added in version 1.1.0.
4083
4084    Updated config file for YAP Prolog to use the new call_with_args()
4085    built-in predicate added in version 4.2.1.
4086
4087
40882.3.1 - September 22, 1999
4089
4090    Logtalk pre-processor updated to only report one warning per redefined
4091    Logtalk or Prolog built-in predicate.
4092
4093    Changed some occurrences of atom "public" to "(public)" in
4094    compiler/logtalk.pl file to avoid syntax errors in Prolog compilers
4095    (like BinProlog) that define "public" as an operator. Also put some
4096    terms between ()'s to avoid syntax errors with ALS Prolog 3.1
4097
4098    Update config file for ALS Prolog to work with version 3.1.
4099
4100    Updated configs/NOTES file include a workaround to use Logtalk with
4101    XSB 2.0, some guidelines on how to write loader utility files for
4102    BinProlog 7.50, and a bug in ALS Prolog 3.1 that affects Logtalk.
4103
4104
41052.3.0 - September 12, 1999
4106
4107    Metapredicate information is now stored with the other predicate
4108    properties, instead of being discarded after compiling the clauses of
4109    a metapredicate. Added predicate property metapredicate/1. It is now
4110    possible to assert clauses for dynamic metapredicates.
4111
4112    Corrected a bug in the processing of metacalls in pseudo-object user.
4113
4114    Corrected a bug in the implementation of private inheritance.
4115    Improved performance of protected inheritance.
4116
4117    Corrected failure of processing initialization/1 and op/3 directives in
4118    create_object/4, create_category/4 and create_protocol/3 built-in
4119    predicates.
4120
4121    Corrected a bug when calling private static category predicates from
4122    importing objects. Simplified code generated for categories.
4123
4124    Rewrite code for the built-in method current_predicate/1 to avoid
4125    duplicated or wrong results when overriding predicate declarations
4126    and to ensure that all possible argument type errors are detected.
4127
4128    Changed compilation of classes that do not instantiate any (meta)class
4129    in order to throw the correct exception when a message is sent to them.
4130
4131    Changed compilation of root objects (that do not instantiate, specialize
4132    or extend other objects) so that calls to "super" (^^/1) fail (as they
4133    should) instead of generating a "predicate does not exist" error message.
4134
4135    Changed implementation of "super" calls (^^/1) to avoid a potential
4136    endless loop problem when using these calls from the inheritance root
4137    object of a reflexive class-based systems.
4138
4139    Pre-processor now checks for callable and object identifier errors.
4140    Runtime now checks for non-instantiated messages.
4141
4142    Added new example (inheritance) about public, protected and private
4143    inheritance.
4144
4145    Updated metapredicates, lo, kernel, and types examples. Most of the
4146    code in the last two examples is being updated to form the basis of an
4147    upcoming Logtalk standard library.
4148
4149    Small changes in the pre-processor/runtime code for compatibility with
4150    ECLiPSe 4.2.2. Updated config files for this Prolog compiler.
4151
4152    Rewrite some predicates in the config files for SWI-Prolog and LPA
4153    Mac & WIN Prologs for improved performance.
4154
4155    New tutorial session about events and monitors.
4156
4157    Updated documentation to match the changes made in this version.
4158
4159
41602.2.0 - July 10, 1999
4161
4162    Implemented public, protected and private object inheritance, protocol
4163    implementation and category importation.
4164   
4165    New Logtalk built-in predicates instantiates_class/3, extends_object/3,
4166    extends_protocol/3, specializes_class/3, imports_category/3 and
4167    implements_protocol/3. The third argument returns the relation scope.
4168
4169    Pre-processor now checks most directive errors.
4170
4171    Changed ^^/1 (super call) implementation to only allow the use of a
4172    single predicate call for argument and to retain the original sender
4173    of the message (see the updated sicstus example).
4174
4175    Fixed bug that prevented directives with a variable number of arguments
4176    (like dynamic(), public(), uses(), ...) being recognized.
4177
4178    Changed definition of predicate read_term/3 in the configs files of Amzi!,
4179    Aquarius, Arity, Eclipse, IC, K, LPA Mac&WIN, Master and XSB to always
4180    instantiates the singleton variables list to the empty list. Needed to
4181    prevent backtracking problems in logtalk_load/1 and logtalk_compile/1
4182    predicates.
4183
4184    Removed choice-point in processing metacalls in predicate definitions.
4185
4186    A banner with the Logtalk version is printed after loading the runtime/
4187    pre-processor.
4188
4189    Removed variables example. The category attributes is now part of the
4190    kernel example. Corrected some harmless syntax errors in directives in
4191    kernel/attributes.lgt, kernel/monitor.lgt and miscellaneous/queens.lgt.
4192
4193    Changed name of blocks example to bricks and object "block" to "brick"
4194    in order to avoid problems with some Prolog compilers that use the atom
4195    "block" for operators or built-in predicates.
4196
4197
41982.1.0 - May 11, 1999
4199
4200    Fixed some bugs in the definition of the pseudo-object user when sending
4201    the message predicate_property/2.
4202
4203    Renamed config file for Calypso to GNU Prolog.
4204
4205    New config file for LPA WinProlog 4.0.
4206
4207    Corrected the omission in the documentation of the Logtalk grammar of the
4208    built_in entity property.
4209
4210    New tutorial pages about building reflective class-based systems.
4211
4212    Modified pre-processor to compile throw/1 as a control structure to
4213    ensure compatibility with the GNU-Prolog compiler.
4214
4215    Modified pre-processor to ensure compatibility with Prolog compilers that
4216    use immediate update semantics instead of the ISO logical database update.
4217
4218    Improved simplification of compiled object and category clauses.
4219
4220    Rewrite and clean up pre-processor code for better compiler performance.
4221
4222    Several updates to the examples files.
4223
4224    Changed all example loader files to wrap the call to logtalk_load/1 inside
4225    an initialization/1 directive for ISO standard compliance.
4226
4227
42282.0 GM - February 9, 1999
4229
4230    Removed some redundant choice-points that are being created when
4231    compiling Logtalk entities.
4232
4233    Small compilation speed optimizations.
4234
4235    Logtalk compiled files now contain the declarations for the message
4236    sending operators to ensure compatibility with some Prolog compilers.
4237
4238    Changed the way Logtalk pre-processor writes directives to ensure
4239    compatibility with some Prolog compilers. Corrected a bug in the
4240    processing of the op/3 directive.
4241
4242    Updated PrologII+ config file for version 4.5.
4243
4244    Changed the definitions of catch/3 and throw/1 in the config files for
4245    LPA Prolog compilers.
4246
4247    New config file for MasterProlog 4.1; removed config file for the
4248    old BIM Prolog 4.0.
4249
4250    Corrected an error in the config file for OpenProlog in the definition
4251    of the write_term/3 predicate.
4252
4253    Added a safer definition for write_term/3 predicate in the config 
4254    files for Amzi, Aquarius, Arity, Eclipse, IC, K, LPA Mac, LPA Win,
4255    and XSB Prolog compilers.
4256
4257    Added a QUICK_START file.
4258
4259
42602.0 Beta 3 - February 1, 1999
4261
4262    Closed some encapsulation holes in the implementation of super calls.
4263
4264    Changed Logtalk pre-processor to use write_term/3 instead of write/2 and
4265    writeq/2 to workaround some compatibility problems with some Prolog
4266    compilers.
4267
4268    Changed mode operators priority and type to be compatible with the ISO
4269    standard.
4270
4271    Modified definition of predicate read_term/3 in the config file for Amzi
4272    compiler to return the atom end_of_file instead of '!EOF' at the end of
4273    a file (this prevented Logtalk to complete compilation any file under
4274    this compiler). Improved detection of built-in predicates while compiling.
4275
4276    Removed config file for wamcc. This compiler have been replaced by
4277    Calypso (developed by the same author).
4278
4279    Updated K-Prolog config file for version 4.50.
4280
4281    Improved documentation of template config file.
4282
4283    Added SCRIPT files to the kernel and types examples.
4284
4285    Updated Tutorial and User and Reference Manuals.
4286
4287    New end user license.
4288
4289
42902.0 Beta 2 - November 16, 1998
4291
4292    Built-ins logtalk_compile/1 and logtalk_load/1 updated to match
4293    the documentation regarding thrown errors and to accept a list of
4294    entities to compile/load.
4295
4296    Modified the examples loader utility files to make only a call to
4297    logtalk_load/1 by using a list of entities. This should make it easy to
4298    modify these files for compilers that don't support arbitrary queries
4299    in a file.
4300
4301    Logtalk runtime no longer tries to catch some of the errors thrown
4302    by ::/2.
4303
4304    Added to all config files a Logtalk predicate to check if a file
4305    exists in the current working directory (used by the logtalk_load/1
4306    and logtalk_compile/1 Logtalk built-in predicates).
4307
4308    New configs files for the K-Prolog 4.14 and Calypso 1.0b6 Prolog
4309    compilers.
4310
4311    Completed the config file for Open Prolog 1.03d38 (with the exception
4312    of lgt_current_date/3 that still have a dummy definition).
4313
4314    Added a missing definition for Logtalk predicate forall/2 to the config
4315    file for Prolog II+ 4.4.
4316
4317    Modified Logtalk pre-processor/runtime to avoid syntax errors when
4318    running on Open Prolog or Calypso and to remove some redundant
4319    choice-points that are being created when compiling categories and
4320    protocols.
4321
4322    Modified some examples that use operators to avoid syntax errors in
4323    some Prolog compilers.
4324
4325    Modified the implementation of the built-in method
4326    predicate_property/2 to avoid duplicate answers and to throw an
4327    instantiation error if the first argument is not bound.
4328
4329    Modified definition of the pseudo-object user to hide Logtalk pre-
4330    processor predicates from the current_predicate/1 built-in method and
4331    to ensure that the predicate_property/2 built-in method returns
4332    Logtalk defined predicate properties for built-in Logtalk and Prolog
4333    predicates.
4334
4335    Modified Prolog code generated by the pre-processor to further minimize
4336    possible conflicts with user defined predicates.
4337
4338    Added a lgt_predicate_property/2 predicate to the config files to
4339    improve Logtalk portability.
4340
4341    Updated Tutorial and User and Reference Manuals.
4342
4343
43442.0 Beta 1 - October 18, 1998
4345
4346    Added basic support for implementation multi-inheritance.
4347
4348    Logtalk pre-processor updated to try to detect misspelt local
4349    predicate calls.
4350
4351    First public beta.
4352
4353
43542.0 Alpha 1 - July, 1998
4355
4356    First release for registered users.
Note: See TracBrowser for help on using the browser.