root/trunk/RELEASE_NOTES.txt @ 5040

Revision 5040, 184.2 KB (checked in by pmoura, 15 months ago)

Added missing dynamic directives in the definition of the pseudo-object "debugger".

Allow the "debugger" built-in object to play the role of both a class and a prototype when being specialized or extended.

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