Dear Ciao Prolog users,
we have put in the Ciao Prolog web site
http://clip.dia.fi.upm.es/Software/Ciao
the version 1.7, patch 212 of Ciao Prolog. We expect this version to be the last one before the next stable version (1.8) is released. We would like, however, to catch as many bugs and to identify as many problems as possible before releasing a stable distribution. We plan to maintain 1.7p212 in the web site for some time (about one week, depending on how people reacts), so that anybody can download and test it.
If you hesitate to download because you'd rather wait for 1.8, please note that only important bugs will be corrected between 1.7p212 and 1.8, so it may be very well that the differences between 1.7p212 and 1.8 are really minor, if any. On the other hand, downloading now can help everybody to have a better 1.8 if any problem arises, and it will not hurt otherwise.
Please find below a list of improvements from version 1.6. Note that many of them have already made their way into intermediate versions.
--------------------------------------------------------------------------- * Improvements related to supported platforms: * Support for Mac OS X 10.1, based on the Darwin kernel. * Initial support for compilation on Linux for Power PC (contributed by Paulo Moura). * Workaround for incorrect C compilation while using newer (> 2.95) gcc compilers. * .bat files generated in Windows.
* Changes in compiler behavior and user interface: * Changed execution of initialization directives. Now the initialization of a module/file never runs before the initializations of the modules from which the module/file imports (excluding circular dependences). * The engine is more intelligent when looking for an engine to execute bytecode; this caters for a variety of situations when the CIAOLIB environment variable has been set. * Fixed bugs in the toplevel: behavior of module:main calls and initialization of a module (now happens after related modules are loaded). * Layout char not needed any more to end Prolog files. * Syntax errors now disable .itf creation, so that they show next time the code is used without change. * Redefinition warnings now issued only when an unqualified call is seen. * Context menu in Windows can now load a file into the toplevel. * Updated Windows installation in order to run CGI executables under Windows: a new information item is added to the registry. * Added new directories found in recent Linux distributions to INFOPATH.
* Emacs-based environment and debugger improved: * Errors reported by inferior processes are now explored in forward order (i.e., the first error reported is the first one highlighted). Improved tracking of errors. * Specific tool bar now available, with icons for main functions (works from emacs 21.1 on). Also, other minor adaptations for working with emacs 21.1 and later. * Debugger faces are now locally defined (and better customization). This also improves compatibility with xemacs (which has different faces). * Direct access to preprocessor (checking modes/types and locating errors) from toolbar. * Inferior modes for Ciao and CiaoPP improved: contextual help turned on by default. * Fixes to set-query. Also, previous query now appears in prompt. * Improved behavior of stored query. * Improved behavior of recentering, finding errors, etc. * Wait for prompt has better termination characteristics. * Added new interactive entry points (M-x): ciao, prolog, ciaopp. * Better tracking of last inferior buffer used. * Miscellaneous bugs removed; some colors changed to adapt to different Emacs versions. * Fixed some remaining incompatibilities with xemacs. * :- doc now also supported and highlighted. * Eliminated need for calendar.el * Added some missing library directives to fontlock list, organized this better.
* New libraries added to the system: * hiord: now needs to be loaded in order to use higher-order call/N and P(X) syntax. Improved model for predicate abstractions. * fuzzy: allows representing fuzzy information in the form or Prolog rules. * use_url: allows loading a module remotely by using a WWW address of the module source code * andorra: alternative search method where goals which become deterministic at run time are executed before others. * iterative deepening (id): alternative search method which makes a depth-first search until a predetermined depth is reached. Complete but in general cheaper than breadth first. * det_hook: allows making actions when a deterministic situation is reached. * ProVRML: read VRML code and translate it into Prolog terms, and the other way around. * io_alias_redirection: change where stdin/stdout/stderr point to from within Ciao Prolog programs. * tcl_tk: an interface to Tcl/Tk programs. * tcl_tk_obj: object-based interface to Tcl/Tk graphical objects. * CiaoPP: options to interface with the CiaoPP Prolog preprocessor.
* Some libraries greatly improved: * WebDB: utilities to create WWW-based database interfaces. * Improved java interface implementation (this forced renaming some interface primitives). * User-transparent persistent predicate database revamped: * Implemented passerta_fact/1 (asserta_fact/1). * Now it is never necessary to explicitly call init_persdb, a call to initialize_db is only needed after dynamically defining facts of persistent_dir/2. Thus, pcurrent_fact/1 predicate eliminated. * Facts of persistent predicates included in the program code are now included in the persistent database when it is created. They are ignored in successive executions. * Files where persistent predicates reside are now created inside a directory named as the module where the persistent predicates are defined, and are named as F_A* for predicate F/A. * Now there are two packages: persdb and 'persdb/ll' (for low level). In the first, the standard builtins asserta_fact/1, assertz_fact/1, and retract_fact/1 are replaced by new versions which handle persistent data predicates, behaving as usual for normal data predicates. In the second package, predicates with names starting with 'p' are defined, so that there is not overhead in calling the standard builtins. * Needed declarations for persistent_dir/2 are now included in the packages. * SQL version now works with mysql. * system: expanded to contain more predicates which act as interface to the underlying system / operating system.
* Other libraries improved: * xref: creates cross-references among Prolog files. * concurrency: new predicates to create new concurrent predicates on-the-fly. * sockets: bugs corrected. * objects: concurrent facts now properly recognized. * fast read/write: bugs corrected. * Added 'webbased' protocol for active modules: publication of active module address can now be made through WWW. * Predicates in library(dynmods) moved to library(compiler). * Expansion and meta predicates improved. * Pretty printing. * Assertion processing. * Module-qualified function calls expansion improved. * Module expansion calls goal expansion even at runtime.
* Updates to builtins (there are a few more; these are the most relevant): * current_predicate/1 in library(dynamic) now enumerates non-engine modules, prolog_sys:current_predicate/2 no longer exists. * exec/* bug fixed. * srandom/1 bug fixed.
* Updates for C interface: * Fixed bugs in already existing code. * Added support for creation and traversing of Prolog data structures from C predicates. * Added support for raising Prolog exceptions from C predicates. * Preliminary support for calling Prolog from C.
* Miscellaneous updates: * Installation made more robust. * Some pending documentation added. * 'ciao' script now adds (locally) to path the place where it has been installed, so that other programs can be located without being explicitly in the $PATH. * Loading programs is somewhat faster now. * Some improvement in printing path names in Windows. ---------------------------------------------------------------------------
Best regards,
Manuel Carro & the Ciao Prolog team