root/trunk/RELEASE_NOTES.txt @ 5047

Revision 5047, 184.6 KB (checked in by pmoura, 15 months ago)

The "lgt2*.sh" documentation shell scripts have been updated to ignore XML files that are not XML documenting files generated by the Logtalk compiler.

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