root/trunk/ciao/doc/common/ciao.pl

Revision 14202, 67.0 kB (checked in by jfran, 7 months ago)

(Pending change from previous commit)

Line 
1:- use_package(assertions).
2
3:- doc(filetype, application). % TODO: or 'documentation'?
4
5:- doc(title,"The Ciao System").
6:- doc(subtitle, "A New Generation, Multi-Paradigm Programming Language and Environment").
7:- doc(subtitle, "(Including a State-of-the-Art ISO-Prolog)").
8
9:- doc(logo, 'ciao-shadow-64h').
10
11:- doc(subtitle_extra,"REFERENCE MANUAL").
12:- doc(subtitle_extra,"@bf{The Ciao Documentation Series}").
13:- doc(subtitle_extra,"@uref{http://www.ciaohome.org/}").
14:- doc(subtitle_extra,"@em{Generated/Printed on:} @today{}").
15:- doc(subtitle_extra,"Technical Report CLIP 3/97-@version{}").
16
17% TODO: Replace 'credits' by 'editor'? (JFMC)
18:- doc(credits, "@bf{Edited by:}").
19:- doc(credits, "Francisco Bueno").
20% :- doc(credits, "Daniel Cabeza").
21:- doc(credits, "Manuel Carro").
22:- doc(credits, "R@'{e}my Haemmerl@'{e}").
23:- doc(credits, "Manuel Hermenegildo").
24:- doc(credits, "Pedro L@'{o}pez").
25:- doc(credits, "Edison Mera").
26:- doc(credits, "Jos@'{e} F. Morales").
27:- doc(credits, "Germ@'{a}n Puebla").
28
29:- include(library('ClipAddress')).
30
31:- include(library('Copyright')).
32
33%% :- doc(bug,"Although the documentation is acceptable at this
34%%    point, we are still really in beta mode in this regard.").
35
36:- doc(summary,"
37
38      @include{CiaoDesc.lpdoc}
39
40   ").
41
42:- doc(module,"
43
44   @section{About this manual}
45   @cindex{status, this manual}
46
47   This is the @em{Reference Manual} for the Ciao development
48   system. It contains basic information on how to install Ciao
49   and how to write, debug, and run Ciao programs from the
50   command line, from inside GNU @apl{emacs}, or from a windowing
51   desktop. It also documents all the libraries available in the
52   standard distribution.
53
54      @include{AboutLPdoc.lpdoc}
55
56   @section{About the Ciao development system}
57   @cindex{ciao, global description}
58
59      @include{AboutCiao.lpdoc}
60
61   @section{ISO-Prolog compliance versus extensibility}
62   @cindex{iso-prolog, compliance}
63   @cindex{extensibility}
64
65      @include{Compliance.lpdoc}
66
67   @section{About the name of the System}
68   @cindex{why the name Ciao}
69   @cindex{Ciao, why this name}
70
71      @include{AboutName.lpdoc}
72
73   @section{Referring to Ciao}
74   @cindex{referring to Ciao}
75   @cindex{references, to Ciao}
76
77   If you find Ciao or any of its components useful, we would
78   appreciate very much if you added a reference to this manual (i.e.,
79   the Ciao reference manual @cite{ciao-reference-manual-tr}) in your
80   work. The following is an appropriate BiBTeX entry with the
81   relevant data:
82
83@noindent
84@begin{verbatim}
85@includeverbatim{CiaoReference.lpdoc}
86@end{verbatim}
87
88
89   @section{Syntax terminology and notational conventions}
90   @cindex{notation}
91
92      @include{Conventions.lpdoc}
93
94   @section{A tour of the manual}
95   @cindex{manual, tour}
96   @cindex{tour, of the manual}
97
98   The rest of the introductory chapters after this one provide a
99   first ``getting started'' introduction for newcomers to the Ciao
100   system. The rest of the chapters in the manual are organized into a
101   sequence of major parts as follows:
102
103      @subsection{PART I - The program development environment}
104
105         @include{DevEnv.lpdoc}
106
107      @subsection{PART II - The Ciao basic language (engine)}
108
109         @include{Builtins.lpdoc}
110
111      @subsection{PART III - ISO-Prolog library (iso)}
112
113         @include{IsoProlog.lpdoc}
114
115      @subsection{PART IV - Classic Prolog library (classic)}
116
117         @include{ClassicProlog.lpdoc}
118
119      @subsection{PART V - Assertions, Properties, Types, Modes, Comments (assertions)}
120
121         @include{AnnotatedProlog.lpdoc}
122
123      @subsection{PART VI - Ciao library miscellanea}
124
125         @include{MiscProlog.lpdoc}
126
127      @subsection{PART VII - Ciao extensions}
128
129         @include{ExtendProlog.lpdoc}
130
131      @subsection{PART VIII - Interfaces to other languages and systems}
132
133         @include{Interfaces.lpdoc}
134
135      @subsection{PART IX - Abstract data types}
136
137         @include{ADTs.lpdoc}
138
139      @subsection{PART X - Contributed libraries}
140
141         @include{Contrib.lpdoc}
142
143      @subsection{PART XI - Contributed standalone utilities}
144
145         @include{ciao-contrib-utilities.lpdoc}
146
147      @subsection{PART XII - Appendices}
148
149         @include{Append.lpdoc}
150
151
152   @section{Acknowledgments}
153   @cindex{acknowledgments}
154
155      @include{Acknowledgments.lpdoc}
156
157").
158
159% TODO: This file is not using the special acknowledgments section.
160
161%% --------------------------------------------------------------------------- 
162
163:- doc(version_maintenance,dir('../../version')).
164
165% For 1.16:
166%   - Ported Tom Schrijvers' Hindley-Milner types
167%     (r10264-unstable) (Jose Morales)
168%   - Check comments in ~clip/Systems/CiaoDE-logs/1.14
169
170% TODO: Include some note in the LPdoc output to indicate that this is
171%       a development version? (comments for backports may be
172%       misleading)
173
174:- doc(version(1*14+2,2011/08/12,18:14*31+'CEST'), "
175   Merging r13606 (trunk) into 1.14.
176   This backports an optimization for DARWIN platforms (Jose Morales)").
177
178:- doc(version(1*14+1,2011/08/10,18:17*10+'CEST'), "
179   Merging r13583 through r13586 (trunk) into 1.14. This fixes
180   problems in the Windows version of Ciao (Edison Mera, Jose
181   Morales)").
182
183:- doc(version(1*15+0,2011/07/08,11:48*01+'CEST'), "New development
184   version (Jose Morales)").
185
186:- doc(version(1*14+0,2011/07/08,10:51*55+'CEST'), "
187   It has been a long while since declaring the last major version
188   (basically since moving to subversion after 1.10/1.12), so quite a
189   bit is included in this release. Here is the (longish) summary:
190
191   @begin{itemize}
192   @item Extensions to functional notation:
193      @begin{itemize}
194      @item Introduced @tt{fsyntax} package (just functional
195            syntax). (Daniel Cabeza)
196      @item Added support to define on the fly a return argument
197            different from the default one
198            (e.g. @tt{~functor(~,f,2)}). (Daniel Cabeza)
199      @item Use of '@tt{:- function(defined(true)).}' so that the
200            defined function does not need to be preceded by @tt{~} in the
201            return expression of a functional clause. (Daniel Cabeza)
202      @item Functional notation: added to documentation to reflect more
203            of the FLOPS paper text and explanations.  Added new
204            functional syntax examples: arrays, combination with
205            constraints, using func notation for properties, lazy
206            evaluation, etc. (Manuel Hermenegildo)
207      @item Added functional abstractions to @tt{fsyntax} and correct
208            handling of predicate abstractions (the functions in the body
209            where expanded outside the abstraction). (Jose Morales)
210      @item Improved translation of functions. In particular, old
211            translation could lose last call optimization for functions
212            with body or with conditional expressions.  Furthermore, the
213            translation avoids now some superfluous intermediate
214            unifications.  To be studied more involved
215            optimizations. (Daniel Cabeza, Jose Morales).
216      @item More superfluous unifications taken out from translated code,
217            in cases where a goal @tt{~f(X) = /Term/} appears in the
218            body. (Daniel Cabeza)
219      @item Added @tt{library/argnames_fsyntax.pl}: Package to be able to
220            use @tt{$~/2} as an operator. (Daniel Cabeza)
221      @item Added a new example for lazy evaluation, saving memory using
222            lazy instead of eager evaluation. (Amadeo Casas)
223      @end{itemize}
224
225   @item Improvements to signals and exceptions:
226      @begin{itemize}
227      @item Distinguished between exceptions and signals. Exceptions are
228            thrown and caught (using @pred{throw/1} and @pred{catch/3}).
229            Signals are sent and intercepted (using @pred{send_signal/1}
230            and @pred{intercept/3}).  (Jose Morales, Remy Haemmerle)
231      @item Back-port of the (improved) low-level exception handling from
232            @tt{optim_comp} branch. (Jose Morales)
233      @item Fixed @pred{intercept/3} bug, with caused the toplevel to not
234            properly handle exceptions after one was handled and
235            displayed (bug reported by Samir Genaim on 04 Dec 05, in ciao
236            mailing list, subject ``@tt{ciao top-level : exception
237            handling}'').  Updated documentation. (Daniel Cabeza)
238      @item @pred{intercept/3} does not leave pending choice points if
239            the called goal is deterministic (the same optimization that
240            was done for @pred{catch/3}). (Jose Morales)
241      @end{itemize}
242
243   @item New/improved libraries:
244      @begin{itemize}
245      @item New @tt{assoc} library to represent association tables.
246            (Manuel Carro, Pablo Chico)
247      @item New @tt{regexp} library to handle regular expressions.
248            (Manuel Carro, Pablo Chico)
249      @item Fixed bug in string_to_number that affected ASCII to
250            floating point number conversions (@pred{number_codes/2}
251            and bytecode read). (Jose Morales)
252      @item @tt{system.pl}: Added predicates @pred{copy_file/2} and
253            @pred{copy_file/3}. Added predicates @pred{get_uid/1},
254            @pred{get_gid/1}, @pred{get_pwnam/1}, @pred{get_grnam/1}
255            implemented natively to get default user and groups of the
256            current process. (Edison Mera)
257      @item Added library for mutable variables. (Remy Haemmerle)
258      @item Added package for block declarations (experimental). (Remy
259            Haemmerle)
260      @item Ported CHR as a Ciao package (experimental). (Tom
261            Schrijvers)
262      @item Debugged and improved performance of the CHR library port.
263            (Remy Haemmerle)
264      @item @tt{contrib/math}: A library with several math functions
265            that dependes on the GNU Scientific Library (GSL). (Edison
266            Mera)
267      @item @tt{io_aux.pl}: Added @pred{messages/1}
268            predicate. Required to facilitate printing of compact
269            messages (compatible with emacs). (Edison Mera)
270      @item Added library @tt{hrtimer.pl} that allow us to measure the
271            time using the higest resolution timer available in the
272            current system. (Edison Mera)
273      @item Global logical (backtrackable) variables (experimental).
274            (Jose Morales)
275      @item New dynamic handling (@tt{dynamic_clauses} package).  Not
276            yet documented. (Daniel Cabeza)
277      @item Moved @tt{\=} from @tt{iso_misc} to
278            @tt{term_basic}. (Daniel Cabeza)
279      @item @tt{lib/lists.pl}: Added predicate
280            @pred{sequence_to_list/2}. (Daniel Cabeza)
281      @item @tt{lib/lists.pl}: Codification of @pred{subordlist/2}
282            improved.  Solutions are given in other order. (Daniel
283            Cabeza)
284      @item @tt{lib/filenames.pl}: Added
285            @pred{file_directory_base_name/3}. (Daniel Cabeza)
286      @item @tt{library/symlink_locks.pl}: preliminary library to make
287            locks a la emacs. (Daniel Cabeza)
288      @item @tt{lib/between.pl}: Bug in @tt{between/3} fixed: when the
289            low bound was a float, an smaller integer was
290            generated. (Daniel Cabeza)
291      @item Fixed bug related to implication operator @tt{->} in Fuzzy
292            Prolog (Claudio Vaucheret)
293      @item @tt{contrib/gendot}: Generator of dot files, for drawing graphs
294            using the dot tool. (Claudio Ochoa)
295      @item Addded @tt{zeromq} library (bindings for the Zero Message
296            Queue (ZeroMQ, 0MQ) cross-platform messaging middleware)
297            (Dragan Ivanovic)
298      @item Minor documentation changes in @tt{javall} library (Jesus
299            Correas)
300      @item Fix a bug in calculator @tt{pl2java} example (Jesus
301            Correas)
302      @item @tt{lib/aggregates.pl}: Deleted duplicated clauses of
303            @pred{findnsols/4}, detected by Pawel. (Daniel Cabeza)
304      @item Added library to transform between color spaces (HSL and
305            HVS) (experimental). (Jose Morales)
306      @item Added module qualification in DCGs. (Remy Haemmerle, Jose
307            Morales)
308      @item @pred{prolog_sys:predicate_property/2} behaves similar to
309            other Prolog systems (thanks to Paulo Moura for reporting
310            this bug). (Jose Morales)
311      @item Added DHT library (implementation of distributed hash
312            table) (Arsen Kostenko)
313      @item Adding property @tt{intervals/2} in @tt{native_props.pl}
314            (for intervals information) (Luthfi Darmawan)
315      @item Added code to call polynomial root finding of GSL (Luthfi
316            Darmawan)
317      @item Some improvements (not total, but easy to complete) to
318            error messages given by errhandle.pl .  Also, some of the
319            errors in @tt{sockets_c.c} are now proper exceptions
320            instead of faults. (Manuel Carro)
321      @item @tt{sockets} library: added a library (@tt{nsl}) needed
322            for Solaris (Manuel Carro)
323      @item Driver, utilities, and benchmarking programs from the ECRC
324            suite.  These are aimed at testing some well-defined
325            characteristics of a Prolog system. (Manuel Carro)
326      @item @tt{library/getopts.pl}: A module to get command-line
327            options and values. Intended to be used by Ciao
328            executables. (Manuel Carro)
329      @end{itemize}
330
331   @item Improved ISO compliance:
332      @begin{itemize}
333      @item Ported the Prolog ISO conformance testing.
334      @item Fixed read of files containing single ``@tt{%}'' char
335            (reported by Ulrich Neumerkel). (Jose Morales)
336      @item Added exceptions in @pred{=../2}. (Remy Haemmerle)
337      @item Added exceptions in arithmetic predicates. (Remy
338            Haemmerle)
339      @item Arithmetics integer functions throw exceptions when used
340            with floats. (Remy Haemmerle)
341      @item Added exceptions for resource errors. (Remy Haemmerle)
342      @end{itemize}
343
344   @item Improvements to constraint solvers:
345      @begin{itemize}
346      @item Improved CLPQ documentation. (Manuel Hermenegildo)
347      @item Added clp_meta/1 and clp_entailed/1 to the clpq and clpr
348            packages (Samir Genaim):
349            @begin{itemize}
350            @item @tt{clp_meta/1}: meta-programming with clp constraints,
351                  e.g, @tt{clp_meta([A.>.B,B.>.1])}.
352            @item @tt{clp_entailed/1}: checks if the store entails
353                  specific cnstraints, e.g, @tt{clp_entailed([A.>.B])}
354                  succeeds if the current store entailes @tt{A.>.B},
355                  otherwise fails.
356            @end{itemize}
357      @item Exported the simplex predicates from CLP(Q,R). (Samir Genaim)
358      @end{itemize}
359
360   @item Other language extensions:
361      @begin{itemize}
362      @item Added new @tt{bf/bfall} package. It allows running all
363            predicates in a given module in breadth-first mode without
364            changing the syntax of the clauses (i.e., no @tt{<-}
365            needed). Meant basically for experimentation and,
366            specially, teaching pure logic programming.  (Manuel
367            Hermenegildo)
368      @item Added @tt{afall} package in the same line as @tt{bf/bfall}
369            (very useful!). (Manuel Hermenegildo)
370      @item Improved documentation of @tt{bf} and @tt{af}
371            packages. (Manuel Hermenegildo)
372      @item Added partial commons-style dialect support, including
373            dialect flag. (Manuel Hermenegildo)
374      @item @tt{yap_compat} and @tt{commons_compat} compatibility
375            packages (for Yap and Prolog Commons dialects). (Jose
376            Morales)
377      @item @tt{argnames} package: enhanced to allow argument name
378            resolution at runtime. (Jose Morales)
379      @item A package for conditional compilation of code (@tt{:-
380            use_package(condcomp)}). (Jose Morales)
381      @end{itemize}
382
383   @item Extensions for parallelism (And-Prolog):
384      @begin{itemize}
385      @item Low-level support for andprolog library has been taken out
386            of the engine and moved to @tt{library/apll} in a similar
387            way as the sockets library. We are planning to reduce the
388            size of the actual engine further, by taking some
389            components out of engine, such as locks, in future
390            releases. (Amadeo Casas)
391      @item Improved support for deterministic parallel goals,
392            including some bug fixes. (Amadeo Casas)
393      @item Goal stack definition added to the engine. (Amadeo Casas)
394      @item And-parallel code and the definition of goal stacks in the
395            engine are now wrapped with conditionals (via
396            @tt{AND_PARALLEL_EXECUTION} variable), to avoid the
397            machinery necessary to run programs in parallel affects in
398            any case the sequential execution. (Amadeo Casas)
399      @item Stack expansion supported when more than one agent is
400            present in the execution of parallel deterministic
401            programs. This feature is still in experimental. Support
402            for stack expansion in nondeterministic benchmarks will be
403            added in a future release. (Amadeo Casas)
404      @item Support for stack unwinding in deterministic parallel
405            programs, via @tt{metachoice}/@tt{metacut}. However,
406            garbage collection in parallel programs is still
407            unsupported. We are planning to include support for it in
408            a future release. (Amadeo Casas)
409      @item Backward execution of nondeterministic parallel goals made
410            via events, without speculation and continuation
411            join. (Amadeo Casas)
412      @item Improved agents support. New primitives included that aim
413            at increasing the flexibility of creation and management
414            of agents. (Amadeo Casas)
415      @item Agents synchronization is done now by using locks, instead
416            of using @tt{assertz}/@tt{retract}, to improve efficiency
417            in the execution of parallel programs. (Amadeo Casas)
418      @item Optimized version of @tt{call/1} to invoke deterministic
419            goals in parallel has been added
420            (@tt{call_handler_det/1}). (Amadeo Casas)
421      @item Optimization: locks/@tt{new_atom} only created when the
422            goal is stolen by other process, and not when this is
423            pushed on to the @tt{goal_stack}. (Amadeo Casas)
424      @item Integration with the new annotation algorithms supported
425            by CiaoPP, both with and without preservation of the order
426            of the solutions. (Amadeo Casas)
427      @item New set of examples added to the @tt{andprolog}
428            library. (Amadeo Casas)
429      @item Several bug fixes to remove some cases in execution of
430            parallel code in which races could appear. (Amadeo Casas)
431      @item @tt{andprolog_rt:&} by @tt{par_rt:&} have been moved to
432            @tt{native_builtin} (Amadeo Casas)
433      @item @tt{indep/1} and @tt{indep/2} have been moved to
434            @tt{native_props}, as @tt{ground/1}, @tt{var/1},
435            etc. (Amadeo Casas)
436      @item Added assertions to the @tt{library/apll} and
437            @tt{library/andprolog} libraries. (Amadeo Casas)
438      @item Removed clauses in @tt{pretty_print} for the @tt{&>/2} and
439            @tt{<&/1} operators. (Amadeo Casas)
440      @item Shorter code for @tt{<& / 1} and @tt{<&! / 1} (Manuel
441            Carro)
442      @item Trying to solve some problems when resetting WAM pointers
443            (Manuel Carro)
444      @item Better code to clean the stacks (Manuel Carro)
445      @end{itemize}
446
447   @item Improvements to foreign (C language) interface:
448      @begin{itemize}
449      @item Better support for cygwin and handling of dll libraries in
450            Windows.  Now usage of external dll libraries are supported
451            in Windows under cygwin. (Edison Mera)
452      @item Improvements to documentation of foreign interface (examples).
453            (Manuel Hermenegildo)
454      @item Allow reentrant calls from Prolog to C and then from C to
455            Prolog. (Jose Morales)
456      @item Fix bug that prevented @tt{ciaoc -c MODULE} from generating
457            dynamic @tt{.so} libraries files. (Jose Morales)
458      @item Fix bug that prevented @tt{ciaoc MODULE && rm MODULE && ciaoc
459            MODULE} from emitting correct executables (previously,
460            dynamic @tt{.so} libraries files where ignored in executable
461            recompilations when only the main file was missing). (Jose
462            Morales)
463      @end{itemize}
464
465   @item Run-Time Checking and Unit Tests:
466      @begin{itemize}
467      @item Added support to perfom run-time checking of assertions
468            and predicates outside @apl{ciaopp} (see the documentation
469            for more details).  In addition to those already
470            available, the new properties that can be run-time checked
471            are: @tt{exception/1}, @tt{exception/2},
472            @tt{no_exception/1}, @tt{no_exception/2},
473            @tt{user_output/2}, @tt{solutions/2},
474            @tt{num_solutions/2}, @tt{no_signal/1}, @tt{no_signal/2},
475            @tt{signal/1}, @tt{signal/2}, @tt{signals/2},
476            @tt{throws/2}.  See library
477            @tt{assertions/native_props.pl} (Edison Mera)
478      @item Added support for testing via the @lib{unittest} library.
479            Documentation available at
480            @tt{library(unittest(unittest_doc))}. (Edison Mera)
481      @end{itemize}
482
483   @item Profiling:
484      @begin{itemize}
485      @item Improved profiler, now it is cost center-based and works
486            together with the run-time checking machinery in order to
487            also validate execution time-related properties. (Edison
488            Mera)
489      @item A tool for automatic bottleneck detection has been
490            developed, which is able to point at the predicates
491            responsible of lack of performance in a program. (Edison
492            Mera)
493      @item Improved profiler documentation. (Manuel Hermenegildo)
494      @end{itemize}
495
496   @item Debugger enhancements:
497      @begin{itemize}
498      @item Added the flag @tt{check_cycles} to control whether the
499            debugger takes care of cyclic terms while displaying
500            goals.  The rationale is that to check for cyclic terms
501            may lead to very high response times when having big
502            terms.  By default the flag is in off, which implies that
503            a cyclic term in the execution could cause infinite loops
504            (but otherwise the debugger is much more speedy). (Daniel
505            Cabeza)
506      @item Show the variable names instead of underscores with
507            numbers.  Added option @tt{v} to show the variables
508            list. Added @tt{v <N>} option, where @tt{N} is the
509            @tt{Name} of the variable you like to watch
510            (experimental). (Edison Mera)
511      @item Distinguish between program variables and
512            compiler-introduced variables. Show variables modified in
513            the current goal. (Edison Mera)
514      @item @tt{debug_mode} does not leave useless choicepoints (Jose
515            Morales)
516      @end{itemize}
517
518   @item Emacs mode:
519      @begin{itemize}
520      @item Made ciao mode NOT ask by default if one wants to set up
521            version control when first saving a file. This makes more
522            sense if using other version control systems and probably
523            in any case (several users had asked for this). There is a
524            global customizable variable (which appears in the LPdoc
525            area) which can be set to revert to the old behaviour.
526            Updated the manual accordingly. (Manuel Hermenegildo)
527      @item Added possibility of chosing which emacs Ciao should use
528            during compilation, by LPdoc, etc. Previously only a
529            default emacs was used which is not always the right
530            thing, specially, e.g., in Mac OS X, where the
531            latest/right emacs may not even be in the paths. Other
532            minor typos etc. (Manuel Hermenegildo)
533      @item Moved the version control menu entries to the LPdoc
534            menu. (Manuel Hermenegildo)
535      @item Updated highlighting for new functional syntax, unit
536            tests, and all other new features. (Manuel Hermenegildo)
537      @item Completed CiaoPP-java environment (menus, buttons, etc.)
538            and automated loading when visiting Java files (still
539            through hand modification of .emacs).  CiaoPP help (e.g.,
540            for properties) now also available in Java mode.  (Manuel
541            Hermenegildo)
542      @item Changes to graphical interface to adapt better to current
543            functionality of CiaoPP option browser.  Also some minor
544            aesthetic changes. (Manuel Hermenegildo)
545      @item Various changes and fixes to adapt to emacs-22/23 lisp. In
546            particular, fixed cursor error in emacs 23 in Ciao shell
547            (from Emilio Gallego). Also fixed prompt in ciaopp and
548            LPdoc buffers for emacs 23. (Manuel Hermenegildo)
549      @item Unified several versions of the Ciao emacs mode (including
550            the one with the experimental toolbar in xemacs) that had
551            diverged. Sorely needed to be able to make progress
552            without duplication. (Manuel Hermenegildo)
553      @item New version of ciao.el supporting tool bar in xemacs and
554            also, and perhaps more importantly, in newer emacsen (>=
555            22), where it previously did not work either. New icons
556            with opaque background for xemacs tool bar. (Manuel
557            Hermenegildo)
558      @item Using @tt{key-description} instead of a combination of
559            @tt{text-char-description} and @tt{string-to-char}.  This
560            fixes a bug in the Ciao Emacs Mode when running in emacs
561            23, that shows wrong descriptions for @tt{M-...} key
562            bindings. The new code runs correctly in emacs 21 and
563            22. (Jose Morales)
564      @item Coloring strings before functional calls and @tt{0'}
565            characters (strings like @tt{\"~w\"} were colored
566            incorrectly) (Jose Morales)
567      @item @tt{@@begin@{verbatim@}} and @tt{@@include} colored as
568            LPdoc commands only inside LPdoc comments. (Jose Morales)
569      @item Fixed colors for dark backgrounds (workaround to avoid a
570            bug in emacs) (Jose Morales)
571      @item Added an automatic indenter (contrib/plindent) and
572            formatting tool, under emacs you can invoque it using the
573            keyword @tt{C-c I} in the current buffer containing your
574            prolog source. (Edison Mera)
575      @end{itemize}
576
577   @item Packaging and distribution:
578      @begin{itemize}
579      @item User-friendly, binary installers for several systems are
580            now generated regularly and automatically: Ubuntu/Debian,
581            Fedora/RedHat, Windows (XP, Vista, 7) and MacOSX. (Edison
582            Mera, Remy Haemmerle)
583      @end{itemize}
584
585   @item Improvements in Ciao toplevel:
586      @begin{itemize}
587      @item Introduced @tt{check_cycles} @tt{prolog_flag} which
588            controls whether the toplevel handles or not cyclic terms.
589            Flag is set to false by default (cycles not detected and
590            handled) in order to speed up responses. (Daniel Cabeza)
591      @item Modified @pred{valid_solution/2} so that it asks no
592            question when there are no pending choice points and the
593            @tt{prompt_alternatives_no_bindings} prolog flag is
594            on. (Jose Morales)
595      @item Now 'Y' can be used as well as 'y' to accept a solution of a
596            query. (Daniel Cabeza)
597      @item Added newline before @tt{true} when displaying empty
598            solutions. (Jose Morales)
599      @item Multifile declarations of packages used by the toplevel were
600            not properly handled.  Fixed. (Daniel Cabeza)
601      @item Fixed bug in output of bindings when current output
602            changed.
603      @item Changes so that including files in the toplevel (or loading
604            packages) does not invoke an expansion of the ending
605            end_of_file.  This makes sense because the toplevel code is
606            never completed, and thus no cleanup code of translations is
607            invoked. (Daniel Cabeza)
608      @end{itemize}
609
610   @item Compiler enhancements and bug fixes:
611      @begin{itemize}
612      @item Added a command line option to @tt{ciaoc} for generating code
613            with runtime checks. (Daniel Cabeza)
614      @item Now the compiler reads assertions by default (when using the
615            assertion package), and verifies their syntax. (Edison Mera)
616      @item Added option @tt{-w} to @tt{ciaoc} compiler to generate the
617            WAM code of the specified prolog files. (Edison Mera)
618      @item Fixed bug in exemaker: now when
619            @pred{main/0} and @pred{main/1} exists, @pred{main/0} is
620            always the program entry (before in modules either could
621            be). (Daniel Cabeza)
622      @item Fixed bug: when compiling a file, if an imported file had no
623            itf and it used the redefining declaration, the declaration was
624            forgotten between the reading of the imported file (to get
625            its interface) and its later compilation.  By now those
626            declarations are never forgotten, but perhaps it could be
627            done better. (Daniel Cabeza)
628      @item The unloading of files kept some data related to them, which
629            caused in some cases errors or warnings regarding module
630            redefinitions.  Now this is fixed. (Daniel Cabeza)
631      @item Undefined predicate warnings also for predicate calls
632            qualified with current module (bug detected by Pawel
633            Pietrzak). (Daniel Cabeza)
634      @item Fixed bug @tt{debugger_include} (that is, now a change in a
635            file included from a module which is debugged is detected
636            when the module is reloaded). (Daniel Cabeza)
637      @item Fixed @tt{a(B) :- _=B, b, c(B)} bug in compilation of
638            unification. (Jose Morales)
639      @end{itemize}
640
641   @item Improving general support for language extensions:
642      @begin{itemize}
643      @item Every package starts with '@tt{:- package(...)}' declaration
644            now.  This allows a clear distinction between packages,
645            modules, and files that are just included; all of them using
646            the same @tt{.pl} extension. (Jose Morales)
647      @item Added priority in syntax translations. Users are not required
648            to know the details of translations in order to use them
649            (experimental: the the correct order for all the Ciao
650            packages is still not fixed) (Jose Morales)
651      @item Now the initialization of sentence translations is done in
652            the translation package, when they are added.  In this way,
653            previous active translations cannot affect the initialization
654            of new translations, and initializations are not started each
655            time a new sentence translation is added.  Additionally, now
656            the initialization of sentence translations in the toplevel
657            is done (there was a bug). (Daniel Cabeza)
658      @item Added @tt{addterm(Meta)} meta-data specification for the
659            implementation of the changes to provide a correct
660            @pred{clause/2} predicate. (Daniel Cabeza)
661      @item Generalized @tt{addmodule} meta-data specification to
662            @tt{addmodule(Meta)}, @tt{addmodule} is now an alias for
663            @tt{addmodule(?)}.  Needed for the implementation of the
664            changes to provide a correct @pred{clause/2}
665            predicate. (Daniel Cabeza)
666      @end{itemize}
667
668   @item Improvements to system assertions:
669      @begin{itemize}
670      @item Added regtype @pred{basic_props:num_code/1} and more
671            assertions to @tt{basic_props.pl} (German Puebla)
672      @item Added trust assertion for
673            @pred{atomic_basic:number_codes/2} in order to have more
674            accurate analysis info (first argument a number and second
675            argument is a list of num_codes) (German Puebla)
676      @item Added some more binding insensitivity assertions in
677            @tt{basic_props.pl} (German Puebla)
678      @item Added the @pred{basic_props:filter/2} property which is
679            used at the global control level in order to guarantee
680            termination. (German Puebla)
681      @item Added @tt{equiv} assertion for @pred{basiccontrol:fail/0}
682            (German Puebla)
683      @item Modified eval assertion so that partial evaluation does
684            not loop with ill-typed, semi-instantiated calls to
685            @pred{is/2} (this problem was reported some time ago)
686            (German Puebla)
687      @item Replaced @tt{true} assertions for arithmetic predicates
688            with @tt{trust} assertions (@tt{arithmetic.pl}). (German
689            Puebla)
690      @item Added assertions for @pred{term_basic:'\='/2} (the @em{not
691            unification}) (German Puebla)
692      @item Added assertions for @pred{lists:nth/3} predicate and
693            @pred{lists:reverse/3}. (German Puebla)
694      @item Changed calls to @pred{atom/1} to @pred{atm/1} in
695            @pred{c_itf_props:moddesc/1} (it is a regular type) (Jesus
696            Correas)
697      @item @pred{formulae:assert_body_type/1} switched to @tt{prop},
698            it is not a @tt{regtype}. (Jesus Correas)
699      @item Added assertions to @pred{atom_concat/2}. (Jesus Correas)
700      @item Added some assertions to @tt{dec10_io}, @tt{lists},
701            @tt{strings} libraries. (Jesus Correas)
702      @item Removed @tt{check} from pred and success froom many
703            library assertions. (Jesus Correas)
704      @item Fixed a problem when reading multiple disjunction in
705            assertions (@tt{library/formulae.pl} and
706            @tt{lib/assertions/assrt_write.pl}). (Pawel Pietrzak)
707      @item Added/improved assertions in several modules under
708            @tt{lib/} (Pawel Pietrzak)
709      @end{itemize}
710
711   @item Engine enhancements:
712      @begin{itemize}
713      @item Added support for Ciao compilation in @tt{ppc64}
714            architecture. (Manuel Carro)
715      @item @tt{sun4v} added in @tt{ciao_get_arch}. (Amadeo Casas)
716      @item Solved compilation issue in Sparc. (Manuel Carro, Amadeo
717            Casas)
718      @item Support for 64 bits Intel processor (in 32-bit compatibility
719            mode). (Manuel Carro)
720      @item Switched the default memory manager from linear to the binary
721            tree version (which improves management of small memory
722            blocks). (Remy Haemmerle)
723      @item Using @tt{mmap} in Linux/i86, Linux/Sparc and Mac OS X
724            (Manuel Carro)
725      @item A rename of the macro @tt{REGISTER} to @tt{CIAO_REGISTER}.
726            There have been reports of the macro name clashing with an
727            equally-named one in third-party packages (namely, the PPL
728            library). (Manuel Carro)
729      @item A set of macros @tt{CIAO_REG_n} (@tt{n} currently goes from
730            @tt{1} to @tt{4}, but it can be enlarged) to force the GCC
731            compiler to store a variable in a register.  This includes
732            assignments of hardware registers for @tt{n = 1} to @tt{3},
733            in seemingly ascending order of effectiveness.  See coments
734            in registers.h (Manuel Carro)
735      @item An assignement of (local) variables to be definitely stored
736            in registers for some (not all) functions in the engine --
737            notably @tt{wam.c}.  These were decided making profiling of C
738            code to find out bottlenecks and many test runs with
739            different assignments of C variables to registers. (Manuel
740            Carro)
741      @item Changed symbol name to avoid clashes with other third-party
742            packages (such as minisat). (Manuel Carro)
743      @item Fixed a memory alignment problem (for RISC architectures
744            where words must be word-aligned, like Sparc). (Jose Morales)
745      @item Unifying some internal names (towards merge with optim_comp
746            experimental branch). (Jose Morales)
747      @end{itemize}
748
749   @item Attributed variables:
750      @begin{itemize}
751      @item Attributes of variables are correctly displayed in the
752            toplevel even if they contain cyclic terms.  Equations added
753            in order to define cyclic terms in attributes are output
754            after the attributes, and do use always new variable names
755            (doing otherwise was very involved). (Daniel Cabeza)
756      @item @tt{lib/attrdump.pl}: The library now works for infinite
757            (cyclic) terms. (Daniel Cabeza)
758      @item Changed multifile predicate @pred{dump/3} to
759            @pred{dump_constraints/3}. (Daniel Cabeza)
760      @item Added @pred{copy_extract_attr_nc/3} which is a faster version
761            of @pred{copy_extract_attr/3} but does not handle cyclic
762            terms properly. (Daniel Cabeza)
763      @item Added @pred{term_basic:copy_term_nat/2} to copy a term
764            taking out attributes. (Daniel Cabeza)
765      @end{itemize}
766
767   @item Documentation:
768      @begin{itemize}
769      @item Added @tt{deprecated/1}. (Manuel Hermenegildo)
770      @item Improvements to documentation of @tt{rtchecks} and
771            tests. (Manuel Hermenegildo)
772      @item Many updates to manuals: dates, copyrights, etc. Some text
773            updates also. (Manuel Hermenegildo)
774      @item Fixed all manual generation errors reported by LPdoc
775            (still a number of warnings and notes left). (Manuel
776            Hermenegildo)
777      @item Adding some structure (minor) to all manuals (Ciao, LPdoc,
778            CiaoPP) using new LPdoc @tt{doc_structure/1}. (Jose
779            Morales)
780      @end{itemize}
781
782   @item Ciao Website:
783      @begin{itemize}
784      @item Redesigned the Ciao website. It is generated again through
785            LPdoc, but with new approach. (Jose Morales)
786      @end{itemize}
787   @end{itemize}
788").
789
790% note: approximate release date (r7508)
791:- doc(version(1*10+8,2007/01/28,18:01*27+'CEST'), "
792   Backports and bug fixes to stable 1.10:
793   @begin{itemize}
794   @item Changes to make Ciao 1.10 compile with the latest GCC
795         releases.
796   @item Imported from
797         @tt{CiaoDE/branches/CiaoDE-memory_management-20051016},
798         changes from revisions 4909 to 4910: Changes to make Ciao
799         issue a better message at startup if the allocated memory
800         does not fall within the limits precomputed at compile time
801         (plus some code tidying).
802   @item Port of revisions 5415, 5426, 5431, 5438, 5546, 5547 applied
803         to Ciao 1.13 to Ciao 1.10 in order to make it use @tt{mmap()}
804         when possible and to make it compile on newer Linux kernels.
805         Tested in Ubuntu, Fedora (with older kernel) and MacOSX.
806   @item Configuration files for DARWIN (ppc) and 64-bit platforms
807         (Intel and Sparc, both in 32-bit compatibility mode).
808   @item Force the creation of the module containing the foreign
809         interface compilation options before they are needed.
810   @end{itemize}
811").
812
813:- doc(version(1*13+0,2005/07/03,19:05*53+'CEST'), "New development
814   version after 1.12. (Jose Morales)").
815
816:- doc(version(1*12+0,2005/07/03,18:50*50+'CEST'), "Temporary version
817   before transition to SVN. (Jose Morales)").
818
819% :- doc(version(1*11+247,2004/07/02,13:27*33+'CEST'), "Improved
820%    front cover (old authors are now listed as editors, mention UNM,
821%    new TR number including system version, pointer to
822%    @tt{www.ciaohome.org}, mention multi-paradigm, etc.). Also changed
823%    mention of GPL in summary to LGPL.  (Manuel Hermenegildo)").
824
825:- doc(version(1*11+1,2003/04/04,18:30*31+'CEST'), "New
826   development version to begin the builtin modularization (Jose
827   Morales)").
828
829% :- doc(version(1*10+1,2003/04/04,18:29*07+'CEST'), "Version
830%    skipped (Jose Morales)").
831
832% TODO: (pre SVN) missing notes from 1.10.0 to 1.10.7
833
834:- doc(version(1*10+0,2004/07/29,16:12*03+'CEST'), "
835   @begin{itemize}
836   @item Classical prolog mode as default behavior.
837   @item Emacs-based environment improved.
838      @begin{itemize}
839      @item Improved emacs inferior (interaction) mode for Ciao and CiaoPP.
840      @item Xemacs compatibility improved (thanks to A. Rigo).
841      @item New icons and modifications in the environment for the
842            preprocessor.
843      @item Icons now installed in a separate dir.         
844      @item Compatibility with newer versions of @apl{Cygwin}.
845      @item Changes to programming environment:
846            @begin{itemize}
847            @item Double-click startup of programming environment.
848            @item Reorganized menus: help and customization grouped in
849                  separate menus.
850            @item Error location extended.
851            @item Automatic/Manual location of errors produced when
852                  running Ciao tools now customizable.
853            @item Presentation of CiaoPP preprocessor output improved.
854            @end{itemize}
855      @item Faces and coloring improved:
856            @begin{itemize}
857            @item Faces for syntax-based highlighting more customizable.
858            @item Syntax-based coloring greatly
859                  improved. Literal-level assertions also correctly
860                  colored now.
861            @item Syntax-based coloring now also working on ASCII
862                  terminals (for newer versions of emacs).
863            @item Listing user-defined directives allowed to be colored in
864                  special face.
865            @item Syntax errors now colored also in inferior buffers.
866            @item Customizable faces now appear in the documentation.
867            @item Added new tool bar button (and binding) to refontify
868                  block/buffer.
869            @item Error marks now cleared automatically also when
870                  generating docs.
871            @item Added some fixes to hooks in lpdoc buffer.
872            @end{itemize} 
873      @end{itemize}
874   @item Bug fixes in compiler.
875      @begin{itemize}
876      @item Replication of clauses in some cases (thanks to S. Craig).
877      @end{itemize}
878
879   @item Improvements related to supported platforms
880      @begin{itemize}
881      @item Compilation and installation in different palatforms have been
882            improved.
883      @item New Mac OS X kernels supported.
884      @end{itemize}
885
886   @item Improvement and bugs fixes in the engine:
887      @begin{itemize}
888      @item Got rid of several segmentation violation problems.
889      @item Number of significant decimal digits to be printed now computed
890            accurately.
891      @item Added support to test conversion of a Ciao integer into a machine
892            int.
893      @item Unbound length atoms now always working.
894      @item C interface .h files reachable through a more standard location
895            (thanks to R. Bagnara).
896      @item Compatibility with newer versions of gcc.
897      @end{itemize}
898
899   @item New libraries and utilities added to the system:
900      @begin{itemize}
901      @item Factsdb: facts defined in external files can now be automatically
902            cached on-demand.
903      @item Symfnames: File aliasing to internal streams added.
904      @end{itemize}
905
906   @item New libraries added (in beta state):
907      @begin{itemize}
908      @item fd: clp(FD)
909      @item xml_path: XML querying and transformation to Prolog.
910      @item xdr_handle: XDR schema to HTML forms utility.
911      @item ddlist: Two-way traversal list library.
912      @item gnuplot: Interface to GnuPlot.
913      @item time_analyzer: Execution time profiling.
914      @end{itemize}
915
916   @item Some libraries greatly improved:
917      @begin{itemize}
918      @item Interface to Tcl/Tk very improved.
919          @begin{itemize}
920          @item Corrected many bugs in both interaction Prolog to
921                Tcl/Tk and viceversa.
922          @item Execution of Prolog goals from TclTk revamped.
923          @item Treatment of Tcl events corrected.
924          @item Predicate  @pred{tcl_eval/3} now allows the execution of Tcl
925                procedures running multiple Prolog goals.
926          @item Documentation heavily reworked.
927          @item Fixed unification of prolog goals run from the Tcl side.
928          @end{itemize}
929      @item Pillow library improved in many senses.
930          @begin{itemize}
931          @item HTTP media type parameter values returned are always strings
932                now, not atoms.
933          @item Changed verbatim() pillow term so that newlines are translated
934                to <br>.
935          @item Changed management of cookies so that special characters in
936                values are correctly handled.
937          @item Added predicate @pred{url_query_values/2}, reversible.
938                Predicate @pred{url_query/2} now obsolete.
939          @item Now attribute values in tags are escaped to handle values
940                which have double quotes.
941          @item Improved @pred{get_form_input/1} and @pred{url_query/2} so
942                that names of parameters having unusual characters are always
943                correctly handled.
944          @end{itemize}
945      @item Fixed bug in tokenizer regarding non-terminated single or
946            multiple-line comments.  When the last line of a file has a
947            single-line comment and does not end in a newline, it is accepted
948            as correct.  When an open-comment /* sequence is not terminated in
949            a file, a syntax error exception is thrown.
950      @end{itemize}
951
952   @item Other libraries improved:
953      @begin{itemize}
954      @item Added native_props to assertions package and included
955            @pred{nonground/1}.
956      @item In atom2terms, changed interpretation of double quoted strings so
957            that they are not parsed to terms.
958      @item Control on exceptions improved.
959      @item Added @pred{native/1,2} to basic_props.
960      @item Davinci error processing improved.
961      @item Foreign predicates are now automatically declared as
962            implementation-defined.
963      @item In lists, added @pred{cross_product/2} to compute the cartesian
964            product of a list of lists. Also added
965            @pred{delete_non_ground/3}, enabling deletion of nonground terms
966            from a list.
967      @item In llists added @pred{transpose/2} and changed @pred{append/2}
968            implementation with a much more efficient code.
969      @item The make library has been improved.
970      @item In persdb, added @pred{pretractall_fact/1} and
971            @pred{retractall_fact/1} as persdb native capabilities.
972      @item Improved behavior with user environment from persdb.
973      @item In persdb, added support for @pred{persistent_dir/4},
974            which includes arguments to specify permission modes for
975            persistent directory and files.
976      @item Some minor updates in persdb_sql.
977      @item Added treatment of operators and module:pred calls to
978            pretty-printer.
979      @item Updated report of read of syntax errors.
980      @item File locking capabilities included in @pred{open/3}.
981      @item Several improvements in library system.
982      @item New input/output facilities added to sockets.
983      @item Added @pred{most_specific_generalization/3} and
984            @pred{most_general_instance/3} to terms_check.
985      @item Added @pred{sort_dict/2} to library vndict.
986      @item The xref library now treats also empty references.
987      @end{itemize}
988
989   @item Miscellaneous updates:
990      @begin{itemize}
991      @item Extended documentation in libraries actmods, arrays,
992            foreign_interface, javall, persdb_mysql, prolog_sys, old_database,
993            and terms_vars.
994      @end{itemize}
995   @end{itemize}").
996
997% :- doc(version(1*9+355,2004/07/02,13:28*02+'CEST'), "Improved
998%    front cover (old authors are now listed as editors, mention UNM,
999%    new TR number including system version, pointer to
1000%    @tt{www.ciaohome.org}, mention multi-paradigm, etc.). Also changed
1001%    mention of GPL in summary to LGPL.  (Manuel Hermenegildo)").
1002
1003% :- doc(version(1*9+38,2002/12/12,20:06*26+'CET'), "Manual now
1004%    posted in pdf format (since lpdoc now generates much better pdf).
1005%    (Manuel Hermenegildo)").
1006
1007% :- doc(version(1*9+34,2002/11/30,14:42*45+'CET'), "Installation
1008%    can now be done in Test distribution directory (for testing
1009%    purposes).  (Manuel Hermenegildo)").
1010
1011% :- doc(version(1*9+33,2002/11/30,14:37*10+'CET'), "Modified
1012%    installation site text to make more explicit the fact that we
1013%    support Mac OS X and XP.  (Manuel Hermenegildo)").
1014
1015:- doc(version(1*9+0,2002/05/16,23:17*34+'CEST'), " New
1016   development version after stable 1.8p0 (MCL, DCG)").
1017
1018% TODO: (pre SVN) missing notes from 1.8.0 to 1.8.3
1019
1020:- doc(version(1*8+0,2002/05/16,21:20*27+'CEST'), "
1021   @begin{itemize}
1022   @item Improvements related to supported platforms:
1023       @begin{itemize}
1024       @item Support for Mac OS X 10.1, based on the Darwin kernel.
1025       @item Initial support for compilation on Linux for Power PC
1026             (contributed by @author{Paulo Moura}).
1027       @item Workaround for incorrect C compilation while using newer
1028             (> 2.95) gcc compilers.
1029       @item .bat files generated in Windows.
1030       @end{itemize}
1031   
1032   @item Changes in compiler behavior and user interface:
1033       @begin{itemize}
1034       @item Corrected a bug which caused wrong code generation in some cases.
1035       @item Changed execution of initialization directives.  Now the
1036             initialization of a module/file never runs before the
1037             initializations of the modules from which the module/file
1038             imports (excluding circular dependences).
1039       @item The engine is more intelligent when looking for an engine
1040             to execute bytecode; this caters for a variety of
1041             situations when setting explicitly the CIAOLIB
1042             environment variable.
1043       @item Fixed bugs in the toplevel: behaviour of @tt{module:main}
1044             calls and initialization of a module (now happens after
1045             related modules are loaded).
1046       @item Layout char not needed any more to end Prolog files.
1047       @item Syntax errors now disable .itf creation, so that they
1048             show next time the code is used without change.
1049       @item Redefinition warnings now issued only when an unqualified call
1050             is seen.
1051       @item Context menu in Windows can now load a file into the toplevel.
1052       @item Updated Windows installation in order to run CGI
1053             executables under Windows: a new information item is
1054             added to the registry.
1055       @item Added new directories found in recent Linux distributions to
1056             INFOPATH.
1057       @item Emacs-based environment and debugger improved:
1058           @begin{itemize}
1059           @item Errors located immediataly after code loading.
1060           @item Improved ciao-check-types-modes (preprocessor progress
1061                 now visible).
1062           @item Fixed loading regions repeatedly (no more predicate
1063                 redefinition warnings).
1064           @item Added entries in @apl{ciaopp} menu to set verbosity of output.
1065           @item Fixed some additional xemacs compatibility issues
1066                 (related to searches).
1067           @item Errors reported by inferior processes are now
1068                 explored in forward order (i.e., the first error
1069                 rewported is the first one highlighted). Improved
1070                 tracking of errors.
1071           @item Specific tool bar now available, with icons for main
1072                 fuctions (works from emacs 21.1 on). Also, other
1073                 minor adaptations for working with emacs 21.1 and
1074                 later.
1075           @item Debugger faces are now locally defined (and better
1076                 customization). This also improves comtability with xemacs
1077                 (which has different faces).
1078           @item Direct access to a common use of the preprocessor
1079                 (checking modes/types and locating errors) from toolbar.
1080           @item Inferior modes for Ciao and CiaoPP improved: contextual
1081                 help turned on by default.
1082           @item Fixes to set-query. Also, previous query now appears
1083                 in prompt.
1084           @item Improved behaviour of stored query.
1085           @item Improved behaviour of recentering, finding errors, etc.
1086           @item Wait for prompt has better termination characteristics.
1087           @item Added new interactive entry points (M-x): ciao,
1088                 prolog, ciaopp.
1089           @item Better tracking of last inferior buffer used.
1090           @item Miscellanous bugs removed; some colors changed to
1091                 adapt to different Emacs versions.
1092           @item Fixed some remaining incompatibilities with xemacs.
1093           @item @tt{:- doc} now also supported and highlighted.
1094           @item Eliminated need for calendar.el
1095           @item Added some missing library directives to fontlock
1096                 list, organized this better.
1097           @end{itemize}
1098       @end{itemize}
1099   
1100   @item New libraries added to the system:
1101       @begin{itemize}
1102       @item hiord: new library which needs to be loaded in order to use
1103               higher-order call/N and P(X) syntax. Improved model for predicate
1104               abstractions.
1105       @item fuzzy: allows representing fuzzy information in the form or
1106               Prolog rules.
1107       @item use_url: allows loading a module remotely by using a WWW
1108               address of the module source code
1109       @item andorra: alternative search method where goals which become
1110               deterministic at run time are executed before others.
1111       @item iterative deepening (id): alternative search method which makes a
1112               depth-first search until a predetermined depth is reached.
1113               Complete but in general cheaper than breadth first.
1114       @item det_hook: allows making actions when a deterministic
1115               situation is reached.
1116       @item ProVRML: read VRML code and translate it into Prolog terms,
1117               and the other way around.
1118       @item io_alias_redirection: change where stdin/stdout/stderr point to
1119               from within Ciao programs.
1120       @item tcl_tk: an interface to Tcl/Tk programs.
1121       @item tcl_tk_obj: object-based interface to Tcl/Tk graphical
1122       objects.
1123       @item CiaoPP: options to interface with the CiaoPP Prolog preprocessor.
1124       @end{itemize}
1125   
1126   @item Some libraries greatly improved:
1127       @begin{itemize}
1128       @item WebDB: utilities to create WWW-based database interfaces.
1129       @item Improved java interface implementation (this forced
1130             renaming some interface primitives).
1131       @item User-transparent persistent predicate database revamped:
1132           @begin{itemize}
1133           @item Implemented passerta_fact/1 (asserta_fact/1).
1134           @item Now it is never necessary to explicitly call
1135                 init_persdb, a call to initialize_db is only needed
1136                 after dynamically defining facts of persistent_dir/2.
1137                 Thus, pcurrent_fact/1 predicate eliminated.
1138           @item Facts of persistent predicates included in the
1139                 program code are now included in the persistent
1140                 database when it is created.  They are ignored in
1141                 successive executions.
1142           @item Files where persistent predicates reside are now
1143                 created inside a directory named as the module where
1144                 the persistent predicates are defined, and are named
1145                 as F_A* for predicate F/A.
1146           @item Now there are two packages: persdb and 'persdb/ll'
1147                 (for low level).  In the first, the standard builtins
1148                 asserta_fact/1, assertz_fact/1, and retract_fact/1
1149                 are replaced by new versions which handle persistent
1150                 data predicates, behaving as usual for normal data
1151                 predicates.  In the second package, predicates with
1152                 names starting with 'p' are defined, so that there is
1153                 not overhead in calling the standard builtins.
1154           @item Needed declarations for persistent_dir/2 are now
1155                 included in the packages.
1156           @end{itemize}
1157   
1158       @item SQL now works with mysql.
1159       @item system: expanded to contain more predicates which act as
1160             interface to the underlying system /  operating system. 
1161       @end{itemize}
1162   
1163   @item Other libraries improved:
1164       @begin{itemize}
1165       @item xref: creates cross-references among Prolog files.
1166       @item concurrency: new predicates to create new concurrent
1167             predicates on-the-fly.
1168       @item sockets: bugs corrected.
1169       @item objects: concurrent facts now properly recognized.
1170       @item fast read/write: bugs corrected.
1171       @item Added 'webbased' protocol for active modules: publication of
1172             active module address can now be made through WWW.
1173       @item Predicates in library(dynmods) moved to library(compiler).
1174       @item Expansion and meta predicates improved.
1175       @item Pretty printing.
1176       @item Assertion processing.
1177       @item Module-qualified function calls expansion improved.
1178       @item Module expansion calls goal expansion even at runtime.
1179       @end{itemize}
1180   
1181   @item Updates to builtins (there are a few more; these are the most
1182         relevant):
1183
1184       @begin{itemize}
1185       @item Added a prolog_flag to retrieve the version and patch.
1186       @item current_predicate/1 in library(dynamic) now enumerates
1187             non-engine modules, prolog_sys:current_predicate/2 no longer
1188             exists.
1189       @item exec/* bug fixed.
1190       @item srandom/1 bug fixed.
1191       @end{itemize}
1192   
1193   @item Updates for C interface:
1194         @begin{itemize}
1195         @item Fixed bugs in already existing code.
1196         @item Added support for creation and traversing of Prolog data
1197         structures from C predicates.
1198         @item Added support for raising Prolog exceptions from C
1199         predicates.
1200         @item Preliminary support for calling Prolog from C.
1201         @end{itemize}
1202   
1203   @item Miscellaneous updates:
1204         @begin{itemize}
1205         @item Installation made more robust.
1206         @item Some pending documentation added.
1207         @item 'ciao' script now adds (locally) to path the place where
1208         it has been installed, so that other programs can be located
1209         without being explicitly in the $PATH.
1210         @item Loading programs is somewhat faster now.
1211         @item Some improvement in printing path names in Windows.
1212         @end{itemize}
1213   @end{itemize}").
1214
1215% :- doc(version(1*7+203,2002/04/20,13:38*54+'CEST'), "Minor changes
1216%    to Ciao description.  (Manuel Hermenegildo)").
1217
1218% :- doc(version(1*7+155,2001/11/24,11:53*36+'CET'), "Minor changes
1219%    to installation scripts to make sure permissions are left correctly
1220%    if installation is aborted.  (Manuel Hermenegildo)").
1221
1222% :- doc(version(1*7+154,2001/11/23,18:02*30+'CET'), "'ciao' script
1223%    now locally adds CIAOBIN path to PATH if not already present
1224%    (MCL)").
1225
1226% :- doc(version(1*7+108,2001/06/02,12:17*18+'CEST'), "Minor bug in
1227%    main Makefile during uninstallation fixed: added rm -f of engine
1228%    Makefile before linking.  (Manuel Hermenegildo)").
1229
1230% :- doc(version(1*7+101,2001/05/15,17:34*09+'CEST'), "Minor error
1231%    in manual fixed: the section explaining the Ciao name did not
1232%    appear.  (Manuel Hermenegildo)").
1233
1234% :- doc(version(1*7+100,2001/05/13,15:48*57+'CEST'), "Added
1235%    @tt{/usr/share/info} to default @tt{INFOPATH} paths.  (Manuel
1236%    Hermenegildo)").
1237
1238% :- doc(version(1*7+87,2001/04/08,15:15*18+'CEST'), "Added @tt{doc}
1239%    and @tt{install_doc} targets to top level installation @{Makefile}
1240%    (can be used to regenerate and reinstall documentation if
1241%    @apl{lpdoc} is available.  (Manuel Hermenegildo)").
1242
1243% :- doc(version(1*7+14,2000/08/29,12:16*12+'CEST'), "Updated COMMON
1244%    to include makefile-sysindep; changed SETLOCAL{CIAOC,CIAOSHELL} to
1245%    SETLOCALCIAO (MCL)").
1246
1247% :- doc(version(1*7+12,2000/08/22,18:16*33+'CEST'), "Changed a bug
1248%    in the installation: the .sta engine was not being copied!
1249%    (MCL)").
1250
1251:- doc(version(1*7+0,2000/07/12,19:01*20+'CEST'), "Development
1252   version following even 1.6 distribution.").
1253
1254% TODO: (pre SVN) missing notes from 1.6.0 to 1.6.3
1255
1256:- doc(version(1*6+0,2000/07/12,18:55*50+'CEST'), "
1257   @begin{itemize}
1258   @item Source-level debugger in emacs, breakpts.
1259   @item Emacs environment improved, added menus for Ciaopp and LPDoc.
1260   @item Debugger embeddable in executables.
1261   @item Stand-alone executables available for UNIX-like operating
1262     systems.
1263   @item Many improvements to emacs interface.
1264   @item Menu-based interface to autodocumenter.
1265   @item Threads now available in Win32.
1266   @item Many improvements to threads.
1267   @item Modular clp(R) / clp(Q).
1268   @item Libraries implementing And-fair breadth-first and iterative
1269     deepening included.
1270   @item Improved syntax for predicate abstractions.
1271   @item Library of higher-order list predicates.
1272   @item Better code expansion facilities (macros).
1273   @item New delay predicates (when/2).
1274   @item Compressed object code/executables on demand.
1275   @item The size of atoms is now unbound.
1276   @item Fast creation of new unique atoms.
1277   @item Number of clauses/predicates essentially unbound.
1278   @item Delayed goals with freeze restored.
1279   @item Faster compilation and startup.
1280   @item Much faster fast write/read.
1281   @item Improved documentation.
1282   @item Other new libraries.
1283   @item Improved installation/deinstallation on all platforms.
1284   @item Many improvements to autodocumenter.
1285   @item Many bug fixes in libraries and engine.
1286   @end{itemize}").
1287
1288% :- doc(version(1*5+134,2000/05/09,11:52*13+'CEST'), "Changed
1289%    location of suite to examples, updated documentation.  (MCL)").
1290
1291% :- doc(version(1*5+94,2000/03/28,23:19*20+'CEST'), "The manual
1292%    intro now provides an overview of the different parts of the
1293%    manual.  (Manuel Hermenegildo)").
1294
1295:- doc(version(1*5+0,1999/11/29,16:16*23+'MEST'),"Development
1296   version following even 1.4 distribution.").
1297
1298:- doc(version(1*4+0,1999/11/27,19:00*00+'MEST'),"
1299   @begin{itemize}
1300   @item Documentation greatly improved.
1301   @item Automatic (re)compilation of foreign files.
1302   @item Concurrency primitives revamped; restored &Prolog-like
1303         multiengine capability.
1304   @item Windows installation and overall operation greatly improved.
1305   @item New version of O'Ciao class/object library, with improved performance.
1306   @item Added support for ""predicate abstractions"" in call/N.
1307   @item Implemented reexportation through reexport declarations.
1308   @item Changed precedence of importations, last one is now higher.
1309   @item Modules can now implicitly export all predicates.
1310   @item Many minor bugs fixed.
1311   @end{itemize}").
1312
1313:- doc(version(1*3+0,1999/06/16,17:05*58+'MEST'), "Development
1314   version following even 1.2 distribution.").
1315
1316% TODO: this version does not seem to have been distributed
1317
1318:- doc(version(1*2+0,1999/06/14,16:54*55+'MEST'), "Temporary version
1319   distributed locally for extensive testing of reexportation and
1320   other 1.3 features.").
1321
1322:- doc(version(1*1+0,1999/06/04,13:30*37+'MEST'), "Development
1323   version following even 1.0 distribution.").
1324
1325% TODO: (pre SVN) missing notes from 1.0.0 to 1.0.7
1326
1327:- doc(version(1*0+0,1999/06/04,13:27*42+'MEST'), "
1328   @begin{itemize}
1329   @item Added Tcl/Tk interface library to distribution.
1330   @item Added push_prolog_flag/2 and pop_prolog_flag/1 declarations/builtins.
1331   @item Filename processing in Windows improved.
1332   @item Added redefining/1 declaration to avoid redefining warnings.
1333   @item Changed syntax/1 declaration to use_package/1.
1334   @item Added add_clause_trans/1 declaration.
1335   @item Changed format of .itf files such that a '+' stands for all
1336         the standard imports from engine, which are included in c_itf
1337         source internally (from engine(builtin_exports)).  Further
1338         changes in itf data handling, so that once an .itf file is
1339         read in a session, the file is cached and next time it is
1340         needed no access to the file system is required.
1341   @item Many bugs fixed.
1342   @end{itemize}").
1343
1344% :- doc(version(0*9+32,1999/04/05,20:38*17+'MEST'), "Improved
1345%    uninstallation makefiles so that (almost) nothing is left behind.
1346%    (Manuel Hermenegildo)").
1347
1348:- doc(version(0*9+0,1999/03/10,17:03*49+'CET'), "
1349   @begin{itemize}
1350   @item Test version before 1.0 release. Many bugs fixed.
1351   @end{itemize}").
1352
1353% Previously to 0.8, all versions where released as stable.
1354% TODO: (pre SVN) missing notes from 0.8.0 to 0.8.44
1355
1356:- doc(version(0*8+0,1998/10/27,13:12*36+'MET'), "
1357   @begin{itemize}
1358   @item Changed compiler so that only one pass is done, eliminated @tt{.dep}
1359         files.
1360   @item New concurrency primitives.
1361   @item Changed assertion comment operator to #.
1362   @item Implemented higher-order with call/N.
1363   @item Integrated SQL-interface to external databases with
1364         persistent predicate concept.
1365   @item First implementation of object oriented programming package.
1366   @item Some bugs fixed.
1367   @end{itemize}").
1368
1369% TODO: (pre SVN) missing notes from 0.7.0 to 0.7.28
1370
1371:- doc(version(0*7+0,1998/09/15,12:12*33+'MEST'), "
1372   @begin{itemize}
1373   @item Improved debugger capabilities and made easier to use.
1374   @item Simplified assertion format.
1375   @item New arithmetic functions added, which complete all ISO functions.
1376   @item Some bugs fixed.
1377   @end{itemize}").
1378
1379% TODO: (pre SVN) missing notes from 0.6.0 to 0.6.18
1380
1381:- doc(version(0*6+0,1998/07/16,21:12*07+'MET DST'), "
1382   @begin{itemize}
1383   @item Defining other path aliases (in addition to 'library') which can
1384         be loaded dynamically in executables is now possible.
1385   @item Added the posibility to define multifile predicates in the shell.
1386   @item Added the posibility to define dynamic predicates dynamically.
1387   @item Added addmodule meta-argument type.
1388   @item Implemented persistent data predicates.
1389   @item New version of PiLLoW WWW library (XML, templates, etc.).
1390   @item Ported active modules from ``distributed Ciao'' (independent
1391         development version of Ciao).
1392   @item Implemented lazy loading in executables.
1393   @item Modularized engine(builtin).
1394   @item Some bugs fixed.
1395   @end{itemize}").
1396
1397% TODO: (pre SVN) missing notes from 0.5.0 to 0.5.50
1398
1399:- doc(version(0*5+0,1998/3/23), "
1400   @begin{itemize}
1401   @item First Windows version.
1402   @item Integrated debugger in toplevel.
1403   @item Implemented DCG's as (Ciao-style) expansions.
1404   @item Builtins renamed to match ISO-Prolog.
1405   @item Made ISO the default syntax/package.
1406   @end{itemize}").
1407
1408% TODO: (pre SVN) missing notes from 0.4.0 to 0.4.12
1409
1410:- doc(version(0*4+0,1998/2/24), "
1411   @begin{itemize}
1412   @item First version with the new Ciao emacs mode.
1413   @item Full integration of concurrent engine and compiler/library.
1414   @item Added new_declaration/1 directive.
1415   @item Added modular syntax enhancements.
1416   @item Shell script interpreter separated from toplevel shell.
1417   @item Added new compilation warnings.
1418   @end{itemize}").
1419
1420:- doc(version(0*3+0,1997/8/20), "
1421   @begin{itemize}
1422   @item Ciao builtins modularized.
1423   @item New prolog flags can be defined by libraries.
1424   @item Standalone comand-line compiler available, with automatic ""make"".
1425   @item Added assertions and regular types.
1426   @item First version using the automatic documentation generator.
1427   @end{itemize}").
1428
1429:- doc(version(0*2+0,1997/4/16), "
1430   @begin{itemize}
1431   @item First module system implemented.
1432   @item Implemented exceptions using catch/3 and throw/1.
1433   @item Added functional & record syntax.
1434   @item Added modular sentence, term, and goal translations.
1435   @item Implemented attributed variables.
1436   @item First CLPQ/CLPR implementation.
1437   @item Added the posibility of linking external .so files.
1438   @item Changes in syntax to allow @tt{P(X)} and @tt{""string""||L}.
1439   @item Changed to be closer to ISO-Prolog.
1440   @item Implemented Prolog shell scripts.
1441   @item Implemented data predicates.
1442   @end{itemize}").
1443
1444:- doc(version(0*1+0,1997/2/13), "First fully integrated,
1445   standalone Ciao distribution. Based on integrating into an
1446   evolution of the &-Prolog engine/libraries/preprocessor
1447   @cite{Hampaper,ngc-and-prolog} many functionalities from several
1448   previous independent development versions of Ciao
1449   @cite{ciao-prolog-compulog,ciao-ppcp,att-var-iclp,ciao-manual-tr," ||
1450   "ciao-comp-dist-tr-deliv,ciao-ilps95,ciao-jicslp96-ws-update,pillow-ws," ||
1451   "ciao-novascience}.").
Note: See TracBrowser for help on using the browser.