I'm a french independant programmer and web designer eventually interested by Ciao Prolog.
Can you precise if this language is currently in active development or not ?
It is in very active development indeed (and used in many thousands of sites, academic and industrial)! We may be slow sometimes to ask a question but it is because we are busy working on the system.
Most of the members of the Ciao group at UPM and UNM (see http://www.cliplab.org/members.html) as well many other people around the globe are making continuous improvements to it (and we always welcome additional collaboration of course).
We are about to release version 1.10 with many improvements (see list at the end of the message). Version 1.9patch351 which is posted on the web is the almost identical pre-release of this 1.10. A 1.12 version will follow shortly (the internal 1.11 version it corresponds to is already at patch 255).
Expected major improvements that are currently being worked on for later releases include:
- The first public release of the preprocessor (until now only available by request for research) which can infer and check types, modes, on-failure, determinacy, bounds on computational cost, bounds on sizes of terms in the program, etc. It can also certify programs, find bugs in programs, and perform several kinds of source to source program transformations such as program specialization, program parallelization (including granularity control), inclusion of run-time tests for assertions which cannot be checked completely at compile-time, etc.
- Optimizing compilation based on global analysis which produces a very major improvement in execution speed and space usage (see our PADL'04 paper).
We believe that Ciao is one of the most interesting programming systems available today and are totally committed to developing it to its fullest potential!
1.10 features: --------------
- Classical prolog mode as default behavior. - 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 dir. - Compatibility with newer versions of @apl{Cygwin}. - Changes to programming environment: - Double-click startup of 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 palatforms 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 added (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: - Interface to Tcl/Tk very improved. - Corrected many bugs in both interaction Prolog to Tcl/Tk and viceversa. - Execution of Prolog goals from TclTk revamped. - Treatment of Tcl events corrected. - Predicate @pred{tcl_eval/3} now allows the execution of Tcl procedures running multiple Prolog goals. - Documentation heavily reworked. - Fixed unification of prolog goals run from the Tcl side. - 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 @pred{url_query_values/2}, reversible. Predicate @pred{url_query/2} now obsolete. - Now attribute values in tags are escaped to handle values which have double quotes. - Improved @pred{get_form_input/1} and @pred{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 @pred{nonground/1}. - In atom2terms, changed interpretation of double quoted strings so that they are not parsed to terms. - Control on exceptions improved. - Added @pred{native/1,2} to basic_props. - Davinci error processing improved. - Foreign predicates are now automatically declared as implementation-defined. - In lists, added @pred{cross_product/2} to compute the cartesian product of a list of lists. Also added @pred{delete_non_ground/3}, enabling deletion of nonground terms from a list. - In llists added @pred{transpose/2} and changed @pred{append/2} implementation with a much more efficient code. - The make library has been improved. - In persdb, added @pred{pretractall_fact/1} and @pred{retractall_fact/1} as persdb native capabilities. - Improved behavior with user environment from persdb. - In persdb, added support for @pred{persistent_dir/4}, which includes arguments to specify permission modes for persistent directory and files. - 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 @pred{open/3}. - Several improvements in library system. - New input/output facilities added to sockets. - Added @pred{most_specific_generalization/3} and @pred{most_general_instance/3} to terms_check. - Added @pred{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.