root/trunk/RELEASE_NOTES.txt

Revision 4338, 130.9 kB (checked in by pmoura, 8 hours ago)
Updated the "k6.config" config file for the K-Prolog 6.0.3 release. Renamed the K-Prolog 5.1.x config file from "k.config" to "k5.config" to avoid being mistaken for the K-Prolog 6.0.x config file.
  • 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.32.1
4
5Copyright (c) 1998-2008 Paulo Moura.  All Rights Reserved.
6================================================================
7
8
9RELEASE NOTES
10=============
11
12
132.32.1 - July 7, 2008
14
15    Restored the redefined entity warnings for back-end Prolog compilers
16    that support multifile predicates. Simplified updating of the runtime
17    tables when compiling and loading source files with back-end Prolog
18    compilers that don't support multifile predicates.
19
20    Changed the representation of the runtime tables for loaded entities
21    in order to drop the need of a "functors clause" per entity. This avoids
22    some redundancy on the representation of entity functors and also helps
23    reducing a bit the size of the generated Prolog files.
24
25    When reloading an object, also clean all entries in the event handlers
26    table where the object plays the role of a monitor.
27
28    Modified the Logtalk runtime to clean all lookup caches when compiling
29    and loading source files (instead of doing it only when the files
30    redefine existing entities).
31
32    Corrected a bug that prevented using predicate aliases with the :/1
33    control construct without static binding.
34
35    Updated the CxProlog config file to take advantage and require the new
36    0.97.1 version (which implements some more ISO Prolog predicates and
37    expands support for text encodings).
38
39    Updated the B-Prolog config file to take advantage and require the new
40    7.1 version (which adds support for the multifile/1 predicate directive).
41
42    Updated the SWI-Prolog config file notes about possible compatibility
43    issues with the default setting of the proprietary "iso" Prolog flag
44    to "true".
45
46    Updated the SWI-Prolog hook file, "swihook.pl", to avoid hijacking the
47    arguments of use_module/1-2 calls (which resulted in wrongly loading
48    Logtalk libraries with the same name as the SWI-Prolog library modules
49    we intended to load).
50
51    Updated the "k6.config" config file for the K-Prolog 6.0.3 release.
52    Renamed the K-Prolog 5.1.x config file from "k.config" to "k5.config"
53    to avoid being mistaken for the K-Prolog 6.0.x config file.
54
55    Renamed the SICStus Prolog 3 config file from "sicstus.config" to
56    "sicstus3.config" to avoid being mistaken for the SICStus Prolog 4
57    config file.
58
59    Improved the Prolog migration guide on converting code that makes use
60    of multifile predicates.
61
62    Updated the support for the Pygments syntax highlighter to avoid marking
63    as errors non-standard directives.
64
65
662.32.0 - June 16, 2008
67
68    Updated the Logtalk compiler and runtime to use multifile predicates for
69    the runtime tables of loaded entities and entities relations. This is
70    necessary to generate sensible intermediate Prolog code for large files
71    with tens of thousands of objects. The workaround of using the directive
72    initialization/1 is still available (for now) for Prolog compilers that
73    fail to support the thirteen years old ISO Prolog standard.
74
75    Updated the Logtalk runtime error handler to test for non-instantiated
76    exception terms. Thanks to Joerg Schuster for the bug report.
77
78    Corrected two bugs in the implementation of the built-in meta-predicate
79    threaded/1 when canceling individual threads. The first bug resulted from
80    out-of-order thread status messages. The second bug resulted from a leak
81    of thread results between calls to the threaded/1 predicate. Changed the
82    thread cancellation process to not automatically releasing any locks,
83    leaving that task to a catcher associated to the thread goal.
84
85    Added a new default compiler option, multifile_directive, to all config
86    files. Possible values are "supported" and "unsupported".
87
88    Added instructions on how to patch the Logtalk compiler in order to use
89    Quintus Prolog as the back-end compiler.
90
91    Removed from the YAP POSIX integration script the command-line options
92    setting the initial stack, heap, and tail data area sizes. These settings
93    are no longer necessary for recent YAP versions.
94
95    Updated the Windows installer script to search the registry for the
96    location of the YAP installation (for YAP 5.1.3 or later versions).
97
98    Added missing implementation of the predicate as_dictionary/2 to the
99    "bintree" library object. Thanks to Victor Noel for the bug report.
100
101    Updated all the search methods in the "searching" example to delegate
102    checking for cycles to the state space being searched (thus allowing
103    state descriptions to carry additional information that should not be
104    taken into account when comparing states). Updated the "salt" example
105    to support heuristics.
106
107    Updated the "mtbatch" example to include a benchmark test for competitive
108    or-parallelism applied to state-space search (using the resources from the
109    "searching" example). Improved the example documentation.
110
111    Added a filetype plugin for the Vim text editor. Updated the installation
112    instructions. Updated the syntax coloring support to properly highlight
113    quoted atoms and strings in the opening directive of parametric objects.
114    Fixed an auto-indentation bug when opening and closing a conditional
115    block in a single line in the last goal a predicate clause body. Thanks
116    to Victor Noel for the bug report.
117
118    Corrected missing installation of the "VERSION.txt" file when building
119    Linux RPMs.
120
121
1222.31.6 - May 26, 2008
123
124    Fixed a Logtalk runtime bug when using the :/1 control construct to
125    call a predicate defined in a category extended by a category that
126    is imported by the object making the call.
127
128    Fixed a Logtalk compiler bug when compiling an alias/3 predicate
129    directive within a category that extends other categories.
130
131    Fixed a Logtalk compiler bug when compiling a class that imports a 
132    category that extends other categories. Thanks to Victor Noel for
133    the bug report.
134
135    Small performance improvement to the caching of category predicates
136    when using static binding.
137
138    Removed from the YAP config file the definition of the forall/2
139    predicate, which have been added as a built-in predicate in YAP
140    version 5.1.3 (the current YAP CVS version must be used; the last
141    stable version, 5.1.2, is broken on Windows). Added support for
142    the proprietary if/1, else/0, elif/1, and endif/0 directives (when
143    used outside Logtalk entities).
144
145    Updated the SWI-Prolog config file with support for the proprietary
146    if/1, else/0, elif/1, and endif/0 directives (when used outside
147    Logtalk entities).
148
149    Improved the "complements" example, moving the category initialization
150    goal to the beginning of the example source file.
151
152    Added support for the Pygments syntax highlighter (co-developed with
153    Clara Dimene).
154
155    Added a new sample Logtalk source file for testing syntax coloring
156    support.
157
158    Added missing auto-completion keywords for the ISO Prolog standard
159    arithmetic functions to the SubEthaEdit, TextMate, Notepad++, jEdit,
160    Vim, and Smultron text editors.
161
162    Corrected a bug in the SubEthaEdit syntax coloring support for the
163    imports_category/2-3 built-in predicate. Added some missing files
164    (license and mode settings) to the SubEthaEdit mode bundle.
165
166    Corrected a bug in the Vim syntax coloring support for the ISO Prolog
167    built-in predicate current_char_conversion/2 and added missing support
168    for for quoted atom escape sequences.
169
170    Corrected a bug in the jEdit syntax coloring support for hexadecimal
171    numbers and added missing support for the extends_category/2-3 and
172    at_end_of_stream/0 built-in predicates.
173
174    Added missing support for the syntax coloring of the external call
175    Logtalk control construct, {}/1, to the Highlight package. Corrected
176    a bug with 0'Char constants and with octal and hexadecimal escape
177    sequences.
178
179    Added missing support for the syntax coloring of the external call
180    Logtalk control construct, {}/1, and for quoted atom escape sequences
181    to the TextMate text editor.
182
183    Added missing support for the syntax coloring of quoted atom escape
184    sequences and of the built-in predicate at_end_of_stream/0 to the
185    Source-highlight package.
186
187    Added missing support for the syntax coloring of the built-in predicate
188    at_end_of_stream/0 and of the scope operator ::/2 to the Kate text editor.
189    Improved syntax coloring of parametric object opening directives.
190
191    Added missing support for the syntax coloring of the built-in predicate
192    unify_with_occurs_check/2 to the Emacs text editor. Corrected a bug in
193    the syntax coloring of arithmetic comparison operators.
194
195    Added missing support for the syntax coloring of quoted atom escape
196    sequences and of the built-in control construct call/1 to the
197    GtkSourceView 2.x text widget.
198
199    Added missing support for the syntax coloring of variables, of quoted
200    atom escape sequences, of the built-in method clause/2, of the external
201    call Logtalk control construct {}/1, and of variables to the Nedit text
202    editor. Corrected a bug with 0'Char constants and corrected some typos
203    in the support for the current_event/2, implements_protocol/2-3, and
204    abolish_category/1 built-in predicates.
205
206
2072.31.5 - April 29, 2008
208
209    Added support for checking arithmetic expressions for calls to
210    non-portable functions when using the "portability" compiler flag.
211
212    Updated the implementation of the threaded/1 built-in predicate to
213    ensure that thread creation errors (usually, virtual memory address
214    space exhaustion) result in the corresponding exception rather than
215    in a non-terminating call. Improved cancellation of all individual
216    threads when one of them terminates with an exception or a failure.
217
218    Simplified the terms used to post individual results from threaded/1
219    calls to the queue associated to the call.
220
221    Corrected a bug in the built-in predicate threaded/1 when its argument
222    is a conjunction (disjunction) of conjunctions (disjunctions).
223
224    Added a workaround for a mutex creation error when reloading a source
225    file with entities defining synchronized predicates.
226
227    Updated the Logtalk runtime to unlock all mutexes hold by a thread when
228    upon thread cancellation.
229
230    Corrected a Logtalk compiler bug that allowed a predicate to be declared
231    both dynamic and synchronized. Thanks to Paul Crocker for the bug report.
232
233    Corrected a Logtalk compiler bug where local definition clauses for
234    dynamic predicates are being generated for categories. Thanks to Victor
235    Noel for the bug report.
236
237    Updated the YAP and SWI-Prolog config files to set the default value of
238    the "tmpdir" flag depending on the host operating-system. Added missing
239    declaration for the multi-threading predicate thread_initialization/1.
240
241    Added missing declarations for some proprietary built-in meta-predicates
242    to the B-Prolog config file.
243
244    Corrected a bug in the SWI-Prolog config file in the declaration of the
245    proprietary built-in meta-predicate "soft cut". Thanks to Victor Noel
246    for the bug report.
247
248    Updated the XSB config file to use the new optimized call/N predicates
249    found on the current XSB CVS version.
250
251    Added an integration script, "xsbmt64lgt", for using Logtalk with the
252    multi-threaded, 64 bits version of XSB.
253
254    Simplified building of MacOS X Installer packages. Updated the Windows
255    installation script to use the "C:\lgtsvn" as base. Simplified manual
256    installation instructions.
257
258    Updated the definitions of the predicate valid/1 for the library objects
259    "list", "list(Type)", "numberlist", "set", "set(Type)", "varlist" to fail
260    for lists with unbound tails after discussion with Jan Wielemaker and
261    Ulrich Neumerkel.
262
263    Corrected a bug in the library object "lgtunit" when running "throws"
264    tests (make sure the generated exception is subsumed by the expected
265    exception). Added a "lgtunit_loader" loader utility file for loading
266    the Logtalk unit test library.
267
268    Added a simple example, "debug_hooks", of using compilation hooks and
269    term expansion for conditional compilation of debug statements.
270
271    Updated the "primes" multi-threading example to allow any number of
272    threads to be used in the computation of primes numbers.
273
274    Added a new multi-threading example, "integration", implementing
275    Recursive Gaussian Quadrature Methods for Numerical Integration for
276    functions of a single variable, contributed by Paul Crocker.
277
278    Added a new multi-threading example, "mtbatch", for benchmarking
279    multi-threading performance.
280
281    Added a new example, "ack", implementing the Ackermann function (general
282    recursive function).
283
284    Added support for using the Highlight package (version 2.6.9 or later)
285    by Andre Simon with Logtalk source files.
286
287    Updated the TextMate Logtalk bundle and its configuration instructions
288    to make the "Compile" and "Generate ..." commands more general, making
289    it compatible with most Prolog compilers. Added syntax coloring for
290    standard arithmetic functions. Added a command for generating plain text
291    files from XML documenting files.
292
293    Corrected a syntax coloring bug with character codes using the 0'Char
294    notation in the SubEthaEdit 2.x and Vim text editors and in the
295    source-highlight package.
296
297    Removed some redundant regular expressions from the jEdit text editor
298    syntax coloring support files.
299
300    Corrected syntax coloring bugs with variables starting with underscores
301    (including anonymous variables) and with atoms containing an underscore
302    in the Emacs text editor. Thanks to Joerg Schuster for the bug report.
303
304    Updated the Logtalk grammar documentation to reflect the changes to
305    category relations introduced in version 2.31.0.
306
307    Added a "lgttxt.xsl" XSLT style-sheet and two shell scripts, "lgt2txt.sh"
308    and "lgt2txt.js", for converting XML documenting files into text files.
309    Updated the "lgt2*.sh" shell scripts for POSIX compliance, removing
310    dependencies on bash shell features.
311
312    Updated the "lgtxml.xsl" XSLT style-sheet to ensure that the generated
313    HTML files are fully compliant with the HTML 4.01 standard.
314
315    Updated the Debian installer package shell scripts for POSIX compliance,
316    removing dependencies on bash shell features.
317
318
3192.31.4 - February 20, 2008
320
321    Optimized the performance of threaded/1 calls by using a per-call
322    message queue for collecting the individual call results and by
323    using the message queue identifier as a tag for the individual
324    calls. This solution avoids runtime synchronization of a large
325    number of threads on the same message queue, simplifies compilation
326    and runtime handling of threaded/1 calls, and simplifies thread
327    cancellation, eliminating any risk of dangling individual thread
328    results.
329
330    Removed two redundant calls to the built-in predicate thread_exit/1
331    on the Logtalk compiler.
332
333    Corrected a bug where a competitive or-parallelism call would
334    prematurely fail with one or more individual calls still pending.
335
336    Corrected a bug where a competitive or-parallelism call would succeed
337    when all the individual calls had failed.
338
339    Corrected a bug when compiling calls to the Logtalk multi-threading
340    built-in predicates made from the top-level interpreter, i.e. from
341    within the pseudo-object "user".
342
343    Added foreach/3, forto/5, and fordownto/5 meta-predicates to the
344    library object "loop". Updated the definitions of the forto/3-4
345    and fordownto/3-4 meta-predicates to allow the use of arithmetic
346    expressions as arguments for convenience and clarity.
347
348    Corrected a bug in the implementation of the predicate lookup/3 in
349    the library object "bintree".
350
351    Added a multi-threading example of the Fast Fourier Transform, "fft",
352    contributed by Paul Crocker.
353
354    Corrected a bug in the implementation of the bisection algorithm in
355    the multi-threading example "functions". Added an implementation of
356    the MATLAB humps function (contributed by Paul Crocker).
357
358    Updated the multi-threading example "sorting" to workaround a mutex
359    performance issue with XSB when generating lists of random numbers.
360
361    Updated support for the TextMate text editor. Added a command for
362    generating the PDF documentation of open source files. Added missing
363    tab triggers to the Logtalk snippets. Updated installation notes.
364
365    Corrected a bug in the jEdit syntax coloring support for the is/2
366    operator.
367
368
3692.31.3 - January 28, 2008
370
371    Added a "VERSION.txt" file that is used to check compatibility between
372    an existing Logtalk user folder (whose path is stored in the LOGTALKUSER
373    environment variable) and a new Logtalk version.
374
375    Updated the POSIX Prolog integration scripts to check for an outdated
376    Logtalk user folder, creating a new one if necessary by running the
377    "cplgtdirs" script (a backup is automatically made of the old directory).
378
379    Updated the Windows installer to create a registry key with the Logtalk
380    version number and to check for an outdated Logtalk user folder.
381
382    Changed the predicate used to load Prolog files, adding an additional
383    argument that represents a list of load/compile options (notably,
384    encoding/1, which is necessary for supporting source files encodings
385    such as ISO-8859-X).
386
387    Updated the SICStus Prolog 4 config file to also accept UCS-2 encodings
388    when using the encoding/1 directive (UCS-2 is subsumed by UTF-16).
389
390    Added a workaround to the Quintus Prolog integration scripts for its
391    lack of support for expanding environment variables in file names.
392
393
3942.31.2 - January 21, 2008
395
396    Extended compatibility of the experimental Logtalk encoding/1 directive
397    to CxProlog 0.96.3 and SICStus Prolog 4.0.2 and improved support for YAP
398    and SWI-Prolog.
399
400    Improved source file encoding handling by ensuring that a BOM present
401    in a source file being compiled is inherited by the generated Prolog
402    and XML files.
403
404    Changed the atoms used to represent different encodings when using the
405    encoding/1 directive; Logtalk now uses the encoding names specified by
406    IANA (using the preferred MIME name whenever available).
407
408    Updated the Logtalk compiler to throw an exception when the specified
409    encoding is not supported by the used back-end Prolog compiler.
410
411    Updated the "encodings" example to use the new encoding names and added
412    new source files using UTF-16 and UTF-32 text encodings.
413
414    Added POSIX and Windows integration scripts for Quintus Prolog.
415
416
4172.31.1 - January 3, 2008
418
419    Duplicated the range of threaded_call/2 tags for multi-threading Prolog
420    compilers with bounded integers.
421
422    Updated the YAP config file to set the flag "language" to "iso". This
423    is not strictly necessary to run Logtalk with YAP but it helps prevent
424    nasty surprises when writing portable applications that rely on ISO
425    Prolog semantics.
426
427    Updated the SWI-Prolog integration script to test for the availability of
428    the XPCE library before trying to load the "xpcehook.pl" XPCE hook file.
429
430    Updated the Linux (RMP and Debian) and MacOS X package build scripts to
431    include Prolog version compatibility information.
432
433    Updated the "tak" multi-threading example to allow parameterization of
434    the number of threads to use.
435
436    Updated the "sorting", "hanoi", and "fibonacci" multi-threading examples
437    to interpret the object parameter as the number of leaf threads (i.e.
438    working threads that will not recursively create additional threads).
439
440    Updated the TextMate text editor support to include commands to compile
441    and to automatically generate the XHTML documentation of open source
442    files.
443
444
4452.31.0 - December 21, 2007
446
447    Added a new built-in protocol, "expanding", declaring goal_expansion/2
448    and term_expansion/2 public predicates.
449
450    Added compiler support for user-defined goal expansion hooks. Changed
451    the implementation of compiler term and goal expansion hooks to use
452    object-defined predicates term_expansion/2 and goal_expansion/2.
453    Changed the compiler option "hook" to accept object identifiers.
454
455    Allow a category to explicitly complement an existing object, thus
456    providing functionality similar to Objective-C categories. Added
457    complements_object/2 built-in predicate. Added a new example,
458    "complements", illustrating the new category functionality.
459
460    When constructing a new category from other categories, the relation
461    "extends" is now used instead of the relation "imports". The relation
462    "imports" is now only used when an object imports a category. Added 
463    extends_category/2-3 built-in predicates.
464
465    Modified the built-in predicate define_events/5 to throw an existence
466    error instead of failing when the specified monitor object does not
467    exists.
468
469    Updated the Logtalk compiler to convert version numbers to atoms when
470    generating XML documenting files (thus avoiding problems with some
471    Prolog compilers that resulted in version numbers with a large number
472    of fractional digits).
473
474    Improved updating of runtime bookkeeping tables when loading source
475    files.
476
477    Renamed the predicate property "alias/1" to "alias_of/1" in order to
478    disambiguate its meaning.
479
480    Added a new config file, "k6.config", for the K-Prolog 6.0 beta
481    version.
482
483    Updated the B-Prolog config file to recognize mode/1 directives.
484    Added some missing meta-predicate specifications to the config files
485    of XSB and YAP.
486
487    Updated the Windows GUI installer to support running Logtalk with
488    CxProlog 0.96.1 and later versions.
489
490    Added two new multi-threading examples, "fibonacci" and "hanoi", and
491    corrected a bug in the recursive creation of threads on the "sorting"
492    example. Updated the "primes" multi-threading example to also support
493    eight threads.
494
495    Updated the "hooks" example for illustrating goal expansion hooks in
496    addition to term expansion hooks.
497
498    Updated the "engines" example for compliance with the changes made
499    to category relations.
500
501    Added syntax coloring support for the new goal_expansion/1,
502    complements_object/2, and extends_category/2-3 predicates to all
503    supported text editors.
504
505    Updated the TextMate code snippets to use the TM_FULLNAME variable
506    instead of the deprecated "niutil" command to retrieve the user full
507    name. Thanks to Michael Sheets for the update.
508
509
5102.30.8 - November 9, 2007
511
512    Fixed bug in the compilation of synchronized predicates that breaks
513    Logtalk on single-threaded Prolog compilers.
514
515
5162.30.7 - November 5, 2007
517
518    Updated the multi-threading built-in predicates threaded_notify/1 and
519    threaded_wait/1 to accept lists of notifications.
520
521    Added a new read-only compiler flag, "context_switching_calls", allowing
522    context switching calls to be disabled (they are enabled by default).
523
524    Updated the B-Prolog config file to recognize eager_consume/1 directives.
525    Updated the XSB config file to recognize use_subsumptive_tabling/1,
526    use_variant_tabling/1, index/1, thread_private/1, and thread_shared/1
527    directives.
528    Updated the YAP config file to recognize thread_local/1 directives.
529    Updated the SICStus Prolog config files to recognize volatile/1 directives.
530    Updated the SWI-Prolog config file to recognize thread_local/1, index/1,
531    and hash/1 directives.
532
533    Changed the backup directory names generated by the "cplgtdirs.*" shell
534    scripts to not include whitespace characters.
535
536    Updated the "xsbmtlgt.sh" integration script to start XSB-MT using the
537    new command-line option "--shared_predicates" (requires current XSB CVS
538    version). Updated the Windows GUI installer to support running Logtalk
539    with XSB-MT.
540
541    Added a multi-threading example, "barriers", of barrier synchronization.
542
543    Updated the "functions" example sample queries for compatibility with the
544    ISO Prolog standard regarding representation of float numbers.
545
546    Added a workaround for a parsing bug in XSB while compiling the "sicstus"
547    example.
548
549
5502.30.6 - October 21, 2007
551
552    Replaced calls to the proprietary current_thread/2 predicate in the
553    Logtalk runtime by calls to the thread_property/2 predicate as per
554    the ISO DTR on multi-threading predicates. Added a goal_expansion/2
555    clause to the SWI-Prolog config file to automatically switch between
556    the current_thread/2 and thread_property/2 predicates depending on
557    availability.
558
559    Changed handling of the encoding/1 directive by the Logtalk compiler in
560    order to improve compatibility with YAP and SICStus Prolog. Removed from
561    the config files the now obsolete '$lgt_set_stream_encoding'/2 predicate
562    definition. Renamed the compiler option "supports_encoding_dir" to
563    "encoding_directive" and changed its possible values to "unsupported",
564    "full" (used in both Logtalk source files and compiler generated Prolog
565    files), and "source" (used only in Logtalk source files).
566
567    Renamed compiler option "underscore_vars" to "underscore_variables".
568    Renamed compiler option "supports_break_predicate" to "break_predicate".
569
570    Improved the performance of recursive predicate definitions synchronized
571    by mutexes. Explicitly create all mutexes used by an entity at load time
572    for compatibility with XSB. Several changes to multi-threading support in
573    order to improve compatibility with current and forthcoming versions of
574    YAP, SWI-Prolog, and XSB.
575
576    Updated the Logtalk compiler for compatibility with both logical and
577    immediate update semantics when compiling synchronized predicates.
578
579    Updated the meta-predicate compilation sanity checks to verify the
580    existence of the minimum number of normal arguments in a clause head
581    required by the closure of maximum arity.
582
583    Added a workaround for the lack of built-in support for character
584    unbuffered input when using the Logtalk built-in debugger to the config
585    files of ALS Prolog, B-Prolog, Ciao, CxProlog, IF/Prolog, JIProlog,
586    Prolog II+, SICStus Prolog, XSB, and YAP. Thanks to Parker Jones for the
587    bug report.
588
589    Updated the YAP config file to auto-detect working Unicode support when
590    setting the "encoding_directive" compiler option.
591
592    Updated the XSB config file to auto-detect multi-threading support
593    when setting the "threads" compiler option. Added an integration script
594    (xsbmtlgt.sh) and supporting files for the multi-threaded version of XSB
595    (requires current development version, available from the XSB CVS server).
596
597    Added a MacPorts portfile for building MacOS X installer packages.
598
599    Added a BOM to the "babel.lgt" UTF-8 file in the "encodings" example in
600    order to improve compatibility with SICStus Prolog.
601
602    Updated the library object "random" by replacing the synchronized/0
603    directive by a synchronized/1 directive listing only the predicates
604    that modify the random number seed.
605
606    Added syntax coloring support for the GtkSourceView 2.x text widget
607    (used e.g. on the Gnome's Gedit text editor and on the MonoDevelop IDE).
608    Removed syntax coloring for the obsolete atomic/1 predicate directive
609    from the support files of Source-highlight, Emacs, SubEthaEdit, jEdit,
610    and Kate. Optimized the regular expressions used in most syntax coloring
611    configuration files of supported text editors.
612
613
6142.30.5 - September 19, 2007
615
616    Added new multi-threading built-in predicates threaded_call/2,
617    threaded_once/2, threaded_exit/2, and threaded_peek/2. These new
618    predicates support the use of threaded call identifier tags in order to
619    link specific threaded_call/2 and threaded_once/2 calls to specific
620    threaded_exit/2 and threaded_peek/2 calls. Extended the "nondet" example
621    in order to illustrate the new functionality.
622
623    Changed the implementation of the built-in predicate threaded_exit/1 in
624    order to avoid blocking when its argument is subsumed by the argument of
625    the corresponding threaded_call/1 call instead of being a variant.
626
627    Updated the Logtalk compiler to encapsulate resource errors inside
628    error/2 exception terms (as specified in the ISO Prolog core standard).
629
630    Corrected a bug in the library object "lgtunit" (wrong arity on two
631    failed_test/2 predicate calls).
632
633    Corrected two problems with the "testing" example: a wrong call on the
634    object "dyn_tests" and a missing entry in the "libpaths.pl" file. Removed
635    two pointless dynamic predicate directives in the "buffer" example.
636
637    Improved documentation of multi-threading programming and predicate
638    properties. Corrected the reference manual page describing the threaded/0
639    directive.
640
641    Simplified installation scripts by moving shared distribution cleaning
642    code into the "cleandist.sh" script. Updated the "install.sh" script to
643    set the installation prefix to "/usr" on Debian systems. Updated the
644    Linux RPM spec file in order to clean the building directory after the
645    package creation.
646
647
6482.30.4 - August 22, 2007
649
650    Allow the argument of {}/1 calls to be a variable at compile time.
651
652    Updated the Qu-Prolog config file to match and require version 8.1 and
653    added a "qplgt" integration script.
654
655    Updated the XSB config file to match and require version 3.1 and to
656    take advantage of the compiler option optimize/1 when loading Logtalk
657    generated Prolog intermediate files.
658
659    Added a new library object, "lgtunit", providing preliminary support for
660    writing and running unit tests. Added a new example, "testing", defining
661    sample unit tests.
662
663    Added a new multi-threading example, "threads/tak", implementing the
664    Takeuchi function (recursive arithmetic).
665
666    Updated the "threads/philosophers" example to use notifications instead
667    of a dynamic predicate for representing chopstick availability. Added an
668    alternative implementation using a parametric object. Improved example
669    documentation.
670
671    Updated the "benchmarks" example to allow comparisons between calls to
672    imported category predicates and calls to local object predicates.
673
674    Updated Emacs support in order to fix problems with the syntax-coloring
675    of some Logtalk built-in predicates and applied a patch contributed by
676    Nicolas Pelletier to workaround a compatibility problem with XEmacs.
677
678    Updated jEdit support in order to fix a problem with the syntax-coloring
679    of the :/1 control construct.
680
681
6822.30.3 - July 9, 2007
683
684    Updated the multi-threading built-in predicate threaded/1 to support
685    both conjunctions of goals (akin to and-parallelism) and disjunctions
686    of goals (akin to or-parallelism) as an argument.
687
688    Removed the experimental threaded_race/1 multi-threading built-in
689    predicate (its or-parallelism functionality is subsumed by the updated
690    threaded/1 predicate).
691
692    Corrected a bug in the implementation of the multi-threading built-in
693    predicate threaded_exit/1 when there are more than one thread running
694    the same non-deterministic goal (the fix ensures that all alternative
695    solutions per threaded_exit/1 call come from the same computing thread).
696    Thanks to Paul Crocker for the suggested bug fix solution.
697
698    Updated the sample queries in the "threads/buffer"/SCRIPT.txt" file to
699    match the updated entities in the example.
700
701    Updated the "threads/functions" example to use the new version of the
702    threaded/1 multi-threading built-in predicate.
703
704
7052.30.2 - June 24, 2007
706
707    Updated the Logtalk compiler to throw a compilation error when duplicated
708    or conflicting predicate scope directives are found.
709
710    Updated the Logtalk compiler to correct a cosmetic glitch when reporting
711    compilation errors.
712
713    Updated the Logtalk compiler to check for mismatches between the argument
714    of this/1 calls and the parametric object identifier.
715
716    Corrected a bug in the implementation of the multi-threading built-in
717    predicate threaded_ignore/1.
718
719    Revamped the "threads/buffer" example to support setting the buffer
720    maximum number of items.
721
722    Added a new DCG example, "dcgs/morse.lgt", for parsing messages in Morse
723    code.
724
725    Extended the "parametric" example to illustrate a solution for dealing
726    with inheritance when defining "setter" predicates/methods that return
727    updated object identifiers.
728
729
7302.30.1 - June 12, 2007
731
732    Added a new, experimental control construct, :/1, for calling imported
733    category predicates without using message sending mechanisms.
734
735    Added preliminary support for static binding when calling imported
736    category using the new :/1 control construct for categories compiled
737    and loaded using the compiler option "reload(skip)".
738
739    Added a new control construct, <</2, which allows proving a goal within
740    the context of a specified object. Useful for debugging and for writing
741    object unit tests.
742
743    Improved multi-threading support in order to make the built-in predicate
744    threaded_exit/1 generate an exception instead of blocking indefinitely
745    waiting for a reply from a non-existing thread.
746
747    Updated the Logtalk compiler to generate an error when compiling from a
748    source file new definitions for built-in entities.
749
750    Updated the Logtalk compiler to generate simpler clauses for the book-
751    keeping table of local predicate definitions for parametric entities.
752
753    Updated the config files for ECLiPSe, Ciao Prolog, SICStus Prolog,
754    SWI-Prolog, and YAP to use the renamed hook predicates introduced in
755    Logtalk 2.30.0 for parsing Prolog proprietary directives.
756
757    Updated the "benchmarks" example to compare the performance of calls to
758    imported category predicates when using a message to "self" and a direct
759    call.
760
761
7622.30.0 - May 28, 2007
763
764    Added preliminary support for static binding when sending messages to
765    objects compiled and loaded using the compiler option "reload(skip)".
766
767    Allow non-instantiated arguments at compile time for the multi-threading
768    built-in predicate threaded/1.
769
770    Simplified and optimized the implementation of Logtalk multi-threading
771    support. Use a single dispatcher thread for all objects instead of each
772    object running its own dispatcher in order to minimize the number of
773    created threads (which can be problematic on 32 bits systems). Updated
774    the built-in predicate threaded/1 to make it deterministic and opaque to
775    cuts (similar to once/1).
776
777    Updated the Logtalk built-in database methods to always interpret rules
778    whose body is the control construct true/0 as facts. Corrected a bug when
779    compiling dynamic predicates that would prevent using of the clause/2
780    built-in database method. Corrected a bug when using the Logtalk built-in
781    database method clause/2 with entities compiled in debug mode. Improved
782    predicate lookup caching when asserting and retracting dynamic facts.
783
784    Improved detection and reporting of entity existence errors.
785
786    Added a quit option, "q", to the Logtalk built-in debugger. Modified
787    the debugger behavior to automatically switch to trace mode when a spy
788    point is found.
789
790    Added two new compiler options, "xmldir" and "tmpdir", allowing per
791    project definition of directories for storing XML documenting files
792    and for storing intermediate compilation files (e.g. Prolog files).
793    Removed the config file predicate '$lgt_alt_directory'/2.
794    Older config files are incompatible with this new Logtalk version.
795
796    Added a shortcut to the Logtalk built-in predicate logtalk_load/1, {}/1,
797    to all config files (defined there in order to be easy to comment it out
798    in case of conflict with some Prolog native feature or lack of compliance
799    with the ISO Prolog standard regarding the definition of the {}/1 syntax.
800
801    Allow the compiler flag "misspelt" to be set to "error".
802
803    Updated the Logtalk compiler to not try to clean-up the dynamic predicates
804    of redefined entities when reloading source files. Most Prolog compilers
805    already behave as expected when reloading the intermediate Prolog files
806    generated by the Logtalk compiler. For those Prolog compilers that do not
807    replace old definitions for dynamic predicates with the new ones, it is
808    not possible for Logtalk to implement a workaround that would work
809    correctly in all cases. Consult the "configs/NOTES.txt" file for more
810    information.
811
812    Corrected a bug that prevents abolishing a dynamic entity loaded from a
813    source file. Thanks to Victor Noel for the bug report.
814
815    Renamed the '$lgt_copy_pl_directive'/1 and '$lgt_rewrite_pl_directive'/2
816    config files predicates to '$lgt_rewrite_and_copy_pl_directive'/2 and
817    '$lgt_rewrite_and_recompile_pl_directive'/2.
818
819    Updated the config file for B-Prolog to match (and require) the new 7.0
820    version; updated and simplified the corresponding integration scripts.
821
822    Updated the XSB POSIX integration script to automatically detect if we
823    are running the XSB stable version of the XSB CVS version.
824
825    Added basic support for tabling to the config files of B-Prolog, XSB,
826    and YAP. Added a simple example of using tabling directives within
827    objects.
828
829    Updated the SWI-Prolog and YAP config files to automatically detect if
830    the Prolog systems have been compiled with multi-threading support and
831    to set the Logtalk compiler flag "threads" accordingly.
832
833    Corrected a bug when running Logtalk with SWI-Prolog that prevented the
834    use of alternative compilation directories (i.e. turning on the "altdirs"
835    compiler flag). Corrected a bug when running Logtalk with SWI-Prolog that
836    can prevent make/0 from recompiling and reloading modified Logtalk source
837    files. Updated the SWI-Prolog integration script, "swilgt.sh", to more
838    reliably detect the compiler executable name.
839
840    Added a "configs/swi_set_logtalk_context.pl" file defining a useful but
841    fragile hack implementing a set_logtalk_context/1 built-in predicate for
842    switching the Logtalk top-level execution context to objects other than
843    the default pseudo-object "user" (you may use it as a debugging tool).
844
845    Updated the CxProlog config file to use the new built-in predicates in
846    version 0.95. Added a shell script, "cxlgt.sh", for easy integration of
847    Logtalk with CxProlog on POSIX systems (with the help of Artur Miguel
848    Dias, CxProlog author).
849
850    Updated the Ciao, K-Prolog, and ECLiPSe config files to set the default
851    value for the compiler flag "underscore_vars" to "dont_care" in order to
852    avoid spurious warnings with some of the provided examples.
853
854    Added a config file and integration scripts for the current XSB CVS
855    version (3.0.1+), which supports some features needed by Logtalk not
856    present in the current stable version (namely, expansion of environment
857    variables).
858
859    Added predicates depth/2 and variant/2 to the library object "term".
860
861    Much improved "benchmarks" example, updated to allow running tests in
862    three different scenarios: event support on, event support off, and
863    using static binding. Moreover, metacalls are no longer used to run
864    the benchmark goals, resulting in more meaningful and accurate results.
865
866    Removed all the "make_*lgt.*" and "makeall_lgt.*" shell scripts, replaced
867    by pre-made integration scripts that can be found on the new "integration"
868    directory. Removed the "lgt_install.js" script. Renamed the POSIX install
869    and uninstall scripts to, respectively, "install.sh" and "uninstall.sh".
870    Updated the integration, uninstall, and user-setup POSIX shell scripts
871    to use "$prefix/share/logtalk" as the default installation directory to
872    better comply with the Filesystem Hierarchy Standard 2.3 for UNIX-like
873    operating systems.
874
875    Updated the integration scripts to automatically call the "cplgtdirs"
876    script when the Logtalk user directory cannot be located.
877
878    Updated the integration, documentation, uninstall, and user-setup POSIX
879    shell scripts to try to locate the Logtalk installation directory and the
880    Logtalk user directory when the environment variables LOGTALKHOME and
881    LOGTALKUSER are not set.
882
883    Updated the "install.sh" POSIX shell script to better clean and sanitize
884    the file permissions on the installation directory.
885
886    Updated the "build_release.sh" POSIX shell script to also build a Debian
887    binary installer package (experimental).
888
889    The Windows GUI installer no longer spans command-line shells running
890    JScript scripts to build the Prolog integration shortcuts. This hopefully
891    solves issues with security software silently blocking and breaking the
892    Logtalk installation.
893
894    Added basic syntax coloring support for the GNU Nano 2.x text editor.
895
896
8972.29.5 - March 28, 2007
898
899    Added a new built-in predicate, threaded/1, for proving each goal in
900    a conjunction in its own thread, simplifying common multi-threading
901    tasks that previously required sequences of calls to the built-in
902    predicates threaded_call/1 and threaded_exit/1.
903
904    Simplified and optimized the implementation of Logtalk multi-threading
905    support.
906
907    Simplified implementation of the database built-in methods. Simplified
908    caching of dynamic predicate lookups. Improved performance of the
909    built-in methods retract/1 and retractall/1.
910
911    Simplified the code generated when compiling entities in debugging mode.
912
913    Corrected a bug in the built-in debugger when processing actions at a
914    port that implies reading a port action again (e.g. print exception term,
915    print debugging status, and help options). Allow the debugger command
916    "skip" to work as the command "creep" in ports other than "call" and
917    "redo". Added a new debugger command, "ignore". Suspend debugging when
918    using the "break" debugger command.
919
920    Generate a compilation error instead of just printing a warning when
921    compiling calls to the multi-threading built-in predicates within an
922    object with no threaded/0 directive present.
923
924    Corrected a bug when compiling entities containing synchronization
925    directives on single-threaded Prolog configurations.
926
927    Improving reporting of working directory when loading or compiling source
928    files by expanding any environment variables occurring in the path.
929
930    Added a new compiler option, "reload", for defining the Logtalk behavior
931    when reloading source files. Valid values are "always" (default value;
932    defined in the config files) and "skip".
933
934    Updated the programming examples to use the new "reload" compiler option
935    when loading library entities. Simplified loading of example source files
936    (by updating the utility loader files to automatically load all required
937    library files).
938
939    Updated GNU Prolog config file to take advantage of some built-in list
940    predicates (requires version 1.2.14 or later); changed the compiler flag
941    "underscore_vars" value to "dont_care" to avoid spurious warnings with
942    some examples.
943
944    Added a config file for B-Prolog 7.0b1.
945
946    Updated the POSIX integration shell scripts to pass along any command
947    line options to the corresponding Prolog compiler and to prevent some
948    problems with paths containing spaces.
949
950    Much improved syntax coloring and code completion support for the jEdit
951    text editor.
952
953    Updated the "threads/primes" example to use the new "threaded/1" built-in
954    predicate. Updated the "threads/birthdays" example to better illustrate
955    the use of the built-in multi-threading predicates. Added a new
956    multi-threading example, "msort", implementing single-threaded and
957    multi-threaded versions of the merge sort algorithm.
958
959    Expanded the "operators" example to illustrate a simple solution for
960    making operators local to source files (but global to all entities
961    defined within the source files).
962
963
9642.29.4 - February 19, 2007
965
966    Added a new library category, "listing", defining listing/0 and
967    listing/1 methods for helping in debugging tasks.
968
969    Added two new experimental multi-threading predicates, threaded_wait/1
970    and threaded_notify/1, which allows suspension of a thread's goal until 
971    a notification is received. Added two new examples, "threads/buffer" and
972    "threads/blackboard", illustrating the use of these predicates.
973
974    Simplified and changed implementation of the threaded built-in
975    predicates in order to ensure that the threaded/0 directive is only
976    required on objects calling these predicates.
977
978    Only print a warning for a missing threaded/0 directive for objects.
979
980    Corrected a ordering bug on the entity initialization goal that
981    prevented using an object initialization goal that make use of
982    the object thread.
983
984    Corrected a bug when asserting rules into an object's database that
985    resulted in only the first asserted rule being visible when calling
986    the predicate through message sending. Thanks to Parker Jones for
987    the bug report.
988
989    Corrected a bug when compiling dynamic entities (defined in source
990    files using the dynamic/0 directive) where declared predicates would
991    be wrongly compiled as static instead of dynamic.
992
993    Updated the "make_xsblgt.sh" integration script again to fix an
994    additional problem resulting from the lack of support in XSB for
995    using environment variables in file paths.
996
997    Added minimal support for using Exuberant Ctags with Logtalk.
998
999    Added auto indent support to the jEdit text editor.
1000
1001    Added support for listing public predicates in the "Functions" window
1002    of the SuperEdi text editor.
1003
1004    Converted TextMate code snippets from the old Property List format
1005    to XML in order to provide compatibility with the "e" Windows text
1006    editor.
1007
1008    New example: 99 bottles of beer on the wall! Sing along!
1009
1010
10112.29.3 - January 15, 2007
1012
1013    Corrected a bug in the Logtalk compiler optimizer code which was
1014    discarding some declaration and definition catchall clauses needed
1015    by the Logtalk built-in database methods when there is no initial
1016    declaration and definition for the referenced dynamic predicates.
1017    Thanks to Parker Jones for the bug report.
1018
1019    Corrected a bug in the compilation of empty, standalone protocols
1020    and categories.
1021
1022    Updated the "make_xsblgt.sh" integration script to workaround
1023    the lack of support in XSB for using environment variables in
1024    the argument of the reconsult/1 predicate.
1025
1026    Corrected a bug in the "potions.lgt" example puzzle that prevented
1027    its solution of being found.
1028
1029
10302.29.2 - January 10, 2007
1031
1032    Silently compile synchronized predicates as normal predicates on
1033    single-threaded Prolog compilers.
1034
1035    When using the threaded_race/1 predicate, competing threads are
1036    now created detached.
1037
1038    Corrected a bug that resulted in a loading error when reloading
1039    source files defining threaded objects.
1040
1041    Corrected a bug in the implementation of the built-in predicate
1042    threaded_peek/1 that prevented alternative solutions from being
1043    retrieved using the built-in predicate threaded_exit/1. Removed
1044    the built-in predicate threaded_discard/1.
1045
1046    The library object "random" is now a synchronized object. Updated
1047    the "philosophers" multi-threading example accordingly.
1048
1049    Dropped loading of broken "cleanup" library from the YAP config file
1050    (the call_cleanup/2 predicate, required for Logtalk multi-threading,
1051    is now available as a built-in predicate in the YAP CVS version).
1052
1053
10542.29.1 - December 28, 2006
1055
1056    Added a Logtalk version of John Fletcher's Prolog XML parser (see the
1057    folder "contributions/xml_parser").
1058
1059    Added shell scripts for helping building the distribution files of a
1060    new Logtalk release. Updated the MacOS X installer package to set
1061    default values for the Logtalk environment variables. Corrected a bug
1062    in the "logtalk.spec" file where the default value for the LOGTALKUSER
1063    environment variable only worked for the user doing the RPM installation.
1064
1065    Corrected a bug in the reporting of the line number where a compilation
1066    error (or warning) occurred. Extended support for reporting warning and
1067    error line numbers to Quintus Prolog, Ciao Prolog, Qu-Prolog, and
1068    ECLiPSe.
1069
1070    Corrected a bug when using partial lists with the predicates nth0/3-4
1071    and nth1/3-4 provided by the "list" library object.
1072
1073    Improved "philosophers" multi-threading programming example.
1074
1075
10762.29.0 - December 18, 2006
1077
1078    Added a new built-in, empty object named "logtalk", which can play the
1079    role of both a class and a prototype. It may be used to define class
1080    hierarchies without forcing the use of metaclasses or reflective
1081    designs.
1082
1083    Added a built-in protocol named "monitoring" with declarations for
1084    the before/3 and after/3 public event handler predicates. Updated
1085    the Logtalk compiler to print a warning when defining an event handler
1086    with no reference to the "monitoring" protocol.
1087
1088    The default value of the compiler flag events/1 is now off. As most
1089    applications do not use events, this setting ensures the best possible
1090    message processing performance for those applications.
1091
1092    Removed the experimental threaded_call/2 and threaded_exit/2 thread
1093    predicates, replaced by new threaded_once/1, threaded_ignore/1,
1094    threaded_race/1, threaded_peek/1, and threaded_discard/1 predicates.
1095    Renamed predicate directive atomic/1 to synchronized/1. Added new
1096    entity directive synchronized/0. Added support for new "synchronized"
1097    and "threaded" entity properties.
1098
1099    Corrected a bug when using threaded calls as initialization goals
1100    within threaded objects.
1101
1102    Corrected an elusive bug in the Logtalk compiler where a source file
1103    may not be properly closed when it contains a syntax error (thanks
1104    to Robert Shiplett for the bug report).
1105
1106    Corrected a bug in the implementation of the built-in methods retract/1
1107    and retractall/1 that could result in unexpected exceptions. Updated
1108    the built-in method assertz/1 to always use the lookup cache.
1109
1110    Corrected a bug in the compilation of empty classes that are not
1111    instances of a metaclass.
1112
1113    Corrected a bug in the built-in method predicate_property/2 where some
1114    predicate properties may not be returned when enumerating properties
1115    using backtracking.
1116
1117    Modified the SWI-Prolog config file and integration scripts to set
1118    the flag "iso" to "true". Corrected an elusive bug in the definition
1119    of predicate '$lgt_directory_exists'/1 that resulted in "library not
1120    found" errors when loading Logtalk source files from within the