root/trunk/RELEASE_NOTES.txt @ 5037

Revision 5037, 184.0 KB (checked in by pmoura, 15 months ago)

Added support for translating queries used as directives as initialization goals when compiling a module as an object.

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