root/trunk/RELEASE_NOTES.txt @ 5048

Revision 5048, 184.7 KB (checked in by pmoura, 15 months ago)

Corrected a bug when compiling an object or category normal predicate that redefines a built-in Prolog meta-predicate.

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