Dear Ciao Prolog users,
we have just posted to http://clip.dia.fi.upm.es/Software/Ciao/ the sources and Windows binaries for Ciao Prolog 1.9 patch 340. This is the release candidate for Ciao Prolog 1.10.
Although there are no really breaking new features with respect to 1.8, this version is much more stable and it has been thoroughly tested in several aspects. As witnessed by the number of patches (340) since 1.8, it includes many bug fixes both in the programming environment, the system libraries, the development tools, and the engine itself.
A few new libraries have also been added, and the user interface has been improved in many ways. Perhaps one of the most visible changes both for newcomers and seasoned practitioners is that Ciao starts now by default in "classical mode", i.e., standard predicates from the Edinburgh dialect are now available by default at the toplevel and within modules (unless otherwise specified).
We do not foresee major changes to the system prior to the release of Ciao Prolog 1.10, except for bug fixes and minor improvements (for which your feedback will of course be highly appreciated!).
A summary of some of the updates with respect to 1.8 follows. We will elaborate on this list for the final 1.10 version release, but it should give you a rough view of the improvements so far:
* "Classical" mode is now the default.
* Emacs-based environment improved: * Improved emacs inferior (interaction) mode for Ciao and CiaoPP. * Xemacs compatibility improved (thanks to A. Rigo). * New icons and modifications in the environment for the preprocessor. * Icons now installed in a separate directory. * Compatibility with newer versions of Cygwin. * Changes to programming environment: * Reorganized menus: help and customization grouped in separate menus. * Error location extended. * Automatic/Manual location of errors produced when running Ciao tools now customizable. * Presentation of CiaoPP preprocessor output improved. * Faces and coloring improved: * Faces for syntax-based highlighting more customizable. * Syntax-based coloring greatly improved. Literal-level assertions also correctly colored now. * Syntax-based coloring now also working on ASCII terminals (for newer versions of emacs). * Listing user-defined directives allowed to be colored in special face. * Syntax errors now colored also in inferior buffers. * Customizable faces now appear in the documentation. * Added new tool bar button (and binding) to refontify block/buffer. * Error marks now cleared automatically also when generating docs. * Added some fixes to hooks in lpdoc buffer.
* Bug fixes in compiler: * Replication of clauses in some cases (thanks to S. Craig).
* Improvements related to supported platforms: * Compilation and installation in different platforms have been improved. * New Mac OS X kernels supported.
* Improvement and bugs fixes in the engine: * Got rid of several segmentation violation problems. * Number of significant decimal digits to be printed now computed accurately. * Added support to test conversion of a Ciao integer into a machine int. * Unbound length atoms now always working. * C interface .h files reachable through a more standard location (thanks to R. Bagnara). * Compatibility with newer versions of gcc.
* New libraries and utilities added to the system: * Factsdb: facts defined in external files can now be automatically cached on-demand. * Symfnames: File aliasing to internal streams added.
* New libraries (in beta state): * fd: clp(FD) * xml_path: XML querying and transformation to Prolog. * xdr_handle: XDR schema to HTML forms utility. * ddlist: Two-way traversal list library. * gnuplot: Interface to GnuPlot. * time_analyzer: Execution time profiling.
* Some libraries greatly improved: * Pillow library improved in many senses. * HTTP media type parameter values returned are always strings now, not atoms. * Changed verbatim() pillow term so that newlines are translated to <br>. * Changed management of cookies so that special characters in values are correctly handled. * Added predicate url_query_values/2, reversible. Predicate url_query/2 now obsolete. * Now attribute values in tags are escaped to handle values which have double quotes. * Improved get_form_input/1 and url_query/2 so that names of parameters having unusual characters are always correctly handled. * Fixed bug in tokenizer regarding non-terminated single or multiple-line comments. When the last line of a file has a single-line comment and does not end in a newline, it is accepted as correct. When an open-comment /* sequence is not terminated in a file, a syntax error exception is thrown.
* Other libraries improved: * Added native_props to assertions package and included nonground/1. * In atom2terms, changed interpretation of double quoted strings so that they are not parsed to terms. * Control on exceptions improved. * Added native/{1,2} to basic_props. * Davinci error processing improved. * Foreign predicates are now automatically declared as implementation-defined. * In lists, added cross_product/2 to compute the cartesian product of a list of lists. Also added delete_non_ground/3, enabling deletion of nonground terms from a list. * In llists added transpose/2 and changed append/2 implementation with a much more efficient code. * The make library has been improved. * In persdb, added pretractall_fact/1 and retractall_fact/1 as persdb native capabilities. * Some minor updates in persdb_sql. * Added treatment of operators and module:pred calls to pretty-printer. * Updated report of read of syntax errors. * File locking capabilities included in open/3. * New input/output facilities added to sockets. * Added most_specific_generalization/3 and most_general_instance/3 to terms_check. * Added sort_dict/2 to library vndict. * The xref library now treats also empty references.
* Miscellaneous updates: * Extended documentation in libraries actmods, arrays, foreign_interface, javall, persdb_mysql, prolog_sys, old_database, and terms_vars.
Best regards and Happy programming,
The Ciao Prolog Crew