root/trunk/RELEASE_NOTES.txt @ 5055

Revision 5055, 185.2 KB (checked in by pmoura, 15 months ago)

Updated text editor configuration files in order to remove references to the no longer used ".config" file name extension and to support syntax coloring and code completion of the multifile/1 and use_module/1-2 directives.

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