UNPKG

@ciao-lang/ts-ciao-interface

Version:

Simple Ciao interface for node.

1 lines 89 kB
<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><meta name="theme-color" content="#273f79"/><link rel="stylesheet" href="lpdoc.css" type="text/css"/><script type="text/javascript" src="lpdoc.js"></script><title>Version/Change Log &mdash; The Ciao System v1.22</title></head><body><div class="lpdoc-page fixleftbar"><a href="#" id="sidebar-toggle-button" class="lpdoc-navbutton"><span id="sidebar-button-arrow">&#9776;</span></a><div id="sidebar" class="lpdoc-sidebar"><div style="height: 40px; margin-left: auto; margin-right: auto"><img src="ciao-logo_autofig.png" width=auto height=100%></div><div class="lpdoc-nav"><span class="lpdoc-on-right"><a class="lpdoc-navbutton" href="ciao.html">&#x2191;</a><a class="lpdoc-navbutton" href="ciaointro.html">&#x2190;</a><a class="lpdoc-navbutton" href="GettingStarted.html">&#x2192;</a><a class="lpdoc-navbutton" href="ciaosearch.html">&#x1F50D;</a></span><span><a href="ciaofulltoc.html">TOC</a></span></div><hr></hr><ul class="lpdoc-itemize-sectpath"><li><a href="ciao.html">The Ciao System</a> &raquo;<br/> </li><li><a href=""><strong>Version/Change Log</strong></a></li></ul></div><div class="lpdoc-main"><div id=""><h1>Version/Change Log</h1><dl><dt><strong>Version 1.22 (2022/9/28, 17:41:23 CET)</strong><dd> TBD <dt><strong>Version 1.21 (2022/3/2, 20:34:30 CET)</strong><dd> <ul> <li>Build system: <ul> <li>IMPROVED: Partial rewrite of network-based installation (better selection of releases, allow prebuilt docs and binaries). <li>IMPROVED: Tighter integration of <tt>ciao publish</tt> into the builder. <li>IMPROVED: Third-party commands moved to &quot;advanced&quot; help. </ul> <li>Core (compiler/engine, toplevel, libraries): <ul> <li>ADDED: Support PowerPC 64-bit in little-endian mode. <li>ADDED: Replaced using_tty/0 with system_extra:istty/1 (specify fd). <li>ADDED: cgoal/1 property (to distinguish from callable/1 ISO pred). <li>ADDED: <tt>binexec</tt> option for automatic spawning of active modules. This produces multi-purpose binaries that can start as either normal processes or active modules. <li>ADDED: Added <tt>ivar/1</tt> meta-property in assertions (expands to <tt>var/1</tt> plus independence from all other vars). <li>ADDED: New rtchecks (run-time assertion checking) code for <tt>det/1</tt>, <tt>semidet/1</tt>, <tt>multidet/1</tt>, <tt>nondet/1</tt> properties. <li>ADDED: Option to run unit tests in the same process. <li>ADDED: Custom headers in foreign interface gluecode (useful for custom type translations). <li>IMPROVED: Faster dependency checks in the compiler (see <tt>itf_sections</tt>). Improves x2 loading time of large executables. <li>IMPROVED: <tt>iso</tt> package renamed <tt>iso_strict</tt>, code adapted. <li>IMPROVED: merged <tt>bf</tt> and <tt>af</tt> search rule translation modules. <li>IMPROVED: Document need for <tt>devenv</tt> for running tests. <li>IMPROVED: Preserve timestamps when engine metadata does not change. <li>IMPROVED: More resilient unit test runner. <li>FIXED: Fixes to termux compilation (Android). <li>FIXED: Cleanup of itf when <tt>opt_suff/1</tt> used. <li>FIXED: Default hostname to <tt>localhost</tt> in active modules. <li>FIXED: Location of relative paths in <tt>reexport</tt>. <li>FIXED: Documentation of timeout library. <li>FIXED: Allow multiple doccomments before condcomp directives. <li>FIXED: Markdown parser issues. <li>FIXED: Fix <tt>|</tt> operator priority to 1105 (ISO DCG draft). <li>FIXED: Bug in <tt>sub_atom/5</tt>. <li>FIXED: Removed bashism in <tt>config-sysdep.sh</tt>. <li>FIXED: Use stderr consistently in unit test output. </ul> <li>Ciao emacs mode: <ul> <li>ADDED: Distribute flycheck and company support for ciao-mode. <li>ADDED: New <tt>ciao-emacs</tt> command (start emacs with &quot;batteries included&quot;). It preinstalls markdown mode and contrib packages. <li>IMPROVED: library for navigating options menus (used in, e.g., CiaoPP): allow cursor navigation, eliminated need for OK/cancel buttons, allow integer values in responses. <li>CHANGED: Change check assertions binding to <tt>C-c V</tt>. <li>FIXED: <tt>=&gt;</tt> is no longer a prompt recognised my ciao-emacs. <li>FIXED: Issue in passing of system-args to ciao process. </ul> </ul> <dt><strong>Version 1.20 (2021/3/18, 19:33:30 CET)</strong><dd> <ul> <li>Build system: <ul> <li>ADDED: Experimental <tt>analyze</tt> build grade for analyzing whole bundles (depends on CiaoPP). <li>FIXED: Fix activation links for <tt>pkgconfig</tt> files in 3rd-party installation. <li>DEPRECATED: Removed support for 3rd-party <tt>bower</tt> package system (all existing uses ported to <tt>npm</tt>). </ul> <li>Language, compiler, and toplevel: <ul> <li>FIXED: Fix a bug that redirected <tt>main/1</tt> calls from the toplevel to the <tt>ciaosh</tt> <tt>main/1</tt> predicate (accidentally via the <tt>user</tt> module). <li>FIXED: Detect wrong arity in <tt>add_goal_trans</tt> directives. <li>IMPROVED: Towards a more modular <tt>native_props.pl</tt>, documentation improvements. <li>IMPROVED: Progress towards merging optim-comp branch for native compilation. <li>IMPROVED: Refactored default language packages (they can be used from modules and toplevels). <li>CHANGED: <tt>note</tt> messages go to user error (like other compiler messages). </ul> <li>Engine: <ul> <li>ADDED: Support for new Apple M1. This port is based on existing support for the aarch64 (ARM64) architecture. NOTE: some executable formats depend on redoing &apos;codesign&apos; after the executable is linked (this may cause issues when distributing binaries). </ul> <li>Runtime checks, testing, and debugging: <ul> <li>IMPROVED: <tt>mshare/1</tt> internally represented as <tt>mshare/2</tt>, with explicit relevant arguments (for <tt>rtchecks</tt>). <li>IMPROVED: Refactor pieces of embedded debugger. <li>IMPROVED: Note message for modules compiled with the trace or debug packages. <li>FIXED: Do not ignore assertions with empty compats, calls, success, and comps fields (also for <tt>texec</tt>). <li>FIXED: Improve debugging of modules with rtcheck instrumentation. <li>FIXED: Expansion for runtime checks preserve <tt>?- ...</tt> directives. </ul> <li>Libraries: <ul> <li>ADDED: Support for Unicode (UTF8) in source code: <ul> <li>Pre-generated character code classes for 0..127 <li>Documented code class types and identifier syntax for Unicode source code (see <tt>tokenize.pl</tt>). <li>Very efficient and compact (8KB) code class table (see <tt>unicode_gen.pl</tt> for details). </ul> <li>ADDED: Unicode escape \uDDDD and \UDDDDDDDD in strings and atoms. <li>ADDED: Added byte-oriented predicates (see <tt>stream_utils.pl</tt>) and types (<tt>basic_props:bytelist/1</tt>), using them when needed. <li>ADDED: Added string_bytes/2 predicate. This predicate bidirectionally transforms between lists of character codes and lists of bytes (using UTF8 encoding/decoding). It is equivalent to =/2 when at least one of the lists is already a list of ASCII codes (0..127). <li>ADDED: Stronger redirection predicates (<tt>open_std_redirect/3</tt> and <tt>close_std_redirect/1</tt>), which allow the redirection of the standard output/error file descriptors together with the default output stream, user_output, and user_error. Added <tt>system:fd_dup/2</tt> and <tt>system:fd_close/1</tt> predicates to manipulate POSIX file descriptors. <li>ADDED: Added stream_utils:copy_stream/3 predicate (copies bytes from one stream to the other). <li>ADDED: Extended <tt>io_once_port_reify/{3,4}</tt> with better redirections (subset of process channels available for <tt>process_call/3</tt>). <li>ADDED: Parsing of version strings (<tt>version_strings:version_parse/4</tt>). <li>IMPROVED: Heuristics in <tt>write_assertion/{6,7}</tt>, more readable output. <li>IMPROVED: Allow JSON values (not only lists) as top argument for JSON write and parse. <li>IMPROVED: Faster and more reliable sockets predicates. New <tt>socket_sendall/2</tt>, <tt>socket_send_stream/2</tt>, changed <tt>socket_send/3</tt>. <tt>socket_recv_code/3</tt> is replaced by <tt>socket_recv/3</tt> (treating the returned length is encouraged, do not use <tt>socket_recv/2</tt>). <li>IMPROVED: Faster and more robust HTTP libraries (sockets improvements, faster IO). Several bug fixes. <li>FIXED: Fixed bug in markdown parser which confused some predicate heads with items. <li>FIXED: Allow numbers (as constants) in assertion head arguments. <li>FIXED: Fixed bug in <tt>attrdump.pl</tt> introduced when <tt>assoc</tt> replaced <tt>dict</tt>. <li>FIXED: Write blanks before -0.Nan if needed. Fixed some corner cases in parser for 0.Inf, 0.Nan . <li>FIXED: Cleanups in messages_basic:messages/1. <li>FIXED: Allow <tt>use_package(tabling)</tt> in a toplevel. </ul> <li>ISO and Portability: <ul> <li>ADDED: Implemented <tt>at_end_of_stream/0</tt>, <tt>at_end_of_stream/1</tt>. Peek byte in <tt>at_end_of_stream/{0,1}</tt> for improved ISO compatibility. <li>ADDED: Implemented <tt>peek_byte/1</tt>, <tt>peek_byte/2</tt>. <li>ADDED: Added call_det/2 predicate (compatible with <tt>gprolog</tt>). <li>ADDED: Added forall/2 predicate (compatible with <tt>gprolog</tt>). <li>FIXED: callable/1 is an instantiation check. <li>IMPROVED: Added version_data flag as <tt>ciao(Major,Minor,Patch,Extra)</tt>. <li>IMPROVED: Added stream property <tt>type(_)</tt> in <tt>open/4</tt> predicate (for compatibility). <li>ADDED: <tt>--iso-strict</tt> flag in <tt>ciaoc</tt> and <tt>ciaosh</tt> to enable stricter compatibility ISO mode by default. Use with care, switching the flag will not enforce the recompilation of already compiled user files and modules (i.e., .po files). <li>IMPROVED: Additions to the <tt>iso_strict.pl</tt> package (only for code using this package): <ul> <li>More compatible version of <tt>absolute_file_name/2</tt> (do not repeat last path component when resolving library paths). <li>Allow stream aliases in most IO operations. <li>Import <tt>keysort/2</tt> and <tt>format/?</tt> predicates by default. <li>Enable <tt>call/N</tt> by default. <li>Enable <tt>runtime_ops</tt> package by default. </ul> </ul> <li>Ciao emacs mode: <ul> <li>ADDED: Initial support for <tt>flycheck</tt>, integrating ciaoc, ciaopp, lpdoc, and testing. <li>ADDED: Support for company mode (text completion). Manuals are located dynamically. Completion list obtained using <a class="lpdoc-idx-anchor" id="0" href="librowser.html"><tt>librowser</tt></a>. <li>ADDED: Extended Ciao mode (<tt>ciao-emacs-plus.el</tt>) using <tt>flycheck</tt> and <tt>company</tt> extensions. <li>ADDED: <tt>M-x ciao-server-start</tt>, <tt>M-x ciao-server-stop</tt> to start/stop the <tt>ciao-serve</tt> process (serving local HTML documentation and hub for HTTP based interface to active modules). <li>ADDED: Mark and color new <tt>passed</tt>, <tt>failed</tt>, <tt>aborted</tt> message types (for unit tests). <li>IMPROVED: Replace outdated <tt>word-help</tt> by <tt>info-look</tt>. <li>IMPROVED: Better binding for next error, better code highlight, narrow error location. <li>IMPROVED: Allow short location paths (resolved from the elisp side). See <tt>bundle_paths:bundle_extend_path/2</tt> for details on path extension. <li>IMPROVED: Faster font-lock in <tt>ciao-inferior-mode</tt>, only treat keywords. <li>FIXED: Fixed indentation and coloring of <tt>=:=</tt>. <li>FIXED: Fix build errors when compiling using emacs 27.1. </ul> <li>Unit Tests: <ul> <li>ADDED: Allow <tt>opt_suff/1</tt> in unit tests (for alternative source files, e.g., for flycheck). <li>ADDED: New options for handling tests for stdout and stderr in unittest. <li>ADDED: Added support for test filters (see options in <tt>run_tests/4</tt>). <li>ADDED: Using &apos;passed&apos;, &apos;failed&apos;, and &apos;aborted&apos; message types. <li>ADDED: Test timeout. <li>ADDED: Initial support for integrated regression testing (see <tt>save</tt>, <tt>compare</tt>, etc. actions in <tt>run_tests/3</tt>). <li>IMPROVED: More flexible quering of results and statistics (<tt>get_statistical_summary/2</tt>, <tt>print_statistical_summary/1</tt>, <tt>status(S)</tt> option). <li>IMPROVED: Simpler one-line output per test. <li>IMPROVED: Warnings when predicate fails/throws and there were no failure/exception properties in test assertion. <li>FIXED: Unittest regression does not depend on Ciao root path. </ul> </ul> <dt><strong>Version 1.19 (2020/3/20, 14:48:45 CET)</strong><dd> Highlights of this release: <ul> <li>Build system: optional (weak) dependencies in bundle Manifest, out-of-tree builds by default in bundles (sources are no longer polluted with .po/.itf files). <li>Language and libraries: a more natural argument order in partial applications, clarified semantics of shared variables in predicate abstractions (and faster implementation), improvements in tabling with constraints (TCLP). <li>System: several fixes in small and large integer operations, new algorithm for float to string conversion (based on Ryu, fixing the round-trip property), and thread-safe exception handling mechanism. <li>Runtime checks and unit tests: major cleanups, fixes, and improvements in functionality and efficiency. <li>Top level: cyclic terms detected by default (<tt>check_cycles</tt> flag no longer needed), faster pretty printing of solutions. <li>Ciao emacs mode: 4-space indentation by default. Improvements to syntax coloring. Coloring of info manuals generated by LPdoc. Connection with ciao-serve. Dropped support for xemacs. <li>Installation: new instructions for Windows based on WSL and for Android based on Termux. </ul> <p>Detailed list of new features and changes: <ul> <li>Builder and installation: <ul> <li>ADDED: Optional (weak) dependencies in bundle Manifests. Weak dependencies allow bundles with conditional code which depends on the availability of other bundles. <li>ADDED: Allow gitlab aliases in <tt>ciao get</tt>, i.e., <tt>ciao get gitlab.x.y.z/some/path</tt> will recognize (as a heuristic) that we are trying to install a bundle from a Gitlab repository. It should work for any instance of gitlab (as long as there is public access to the repository). <li>ADDED: Exposed <tt>third-party-install</tt> command (e.g., <tt>ciao third-party-install ciao_ppl.ppl</tt> to install <tt>ppl</tt> 3rd-party from <tt>ciao_ppl</tt> bundle). <li>ADDED: Execute <tt>autoreconf -i</tt> when GNU build system is selected and the <tt>configure</tt> file is not available (3rd-party installer). <li>ADDED: Support for <tt>zsh</tt> shell, unified config in <tt>--core:update_shell=[yes|no]</tt> <li>ENHANCED: Improved interactive <tt>ciao-boot.sh</tt> (reordered questions, check deps). <li>EXPERIMENTAL: Support for <tt>--parallel=yes</tt> build option. <li>FIXED: Throw exception if foreign config tool is not found. <li>FIXED: Absolute path in rpath for 3rd-party libs. <li>FIXED: Make sure that <tt>cache/</tt> dir exists before loading bundle manifest hooks. <li>FIXED: <tt>ciao clean-tree</tt> works with non-absolute paths. <li>FIXED: Do not assume <tt>/bin/rm</tt> is there, use <tt>TMPDIR</tt> if defined. <li>FIXED: Make <tt>./ciao-boot.sh clean</tt> work even if <tt>core</tt> is not built. <li>FIXED: Make sure that building <tt>core</tt> prepares the bin grade (<tt>core.ciaobase</tt>). </ul> <li>Language, compiler, and toplevel: <ul> <li>ADDED: Out-of-tree builds, enabled by default. Use <tt>CIAOCCACHE=0</tt> to disable it. The compilation of modules under a bundle produces <tt>.itf</tt> and <tt>.po</tt> files located in the build/cache directory of their corresponding workspace. <li>ENHANCED: Using atomic file writes everywhere in the compiler. Now several processes may compile simultaneously the same code base without corrupting the <tt>.po</tt>/<tt>.itf</tt> compiler output files (there are a few documented bugs in the build scripts that should be fixed in the next commits to allow parallel systems builds). <li>ENHANCED: New internal representation for predicate abstraction, which fixes a potential performance problem due to unnecessary renaming of shared variables. <li>ENHANCED: Pretty printing of solutions from the toplevel is now orders of magnitude faster for some corner cases. <li>CHANGED: Using standard hiord argument order. This changes the argument ordering for predicate abstractions for <tt>hiord</tt> to make it compatible with other systems and languages. The old order was implemented to favor 1st argument indexing, but it can be confusing because of the difference with other languages with higher-order (specially for partial applications).<p>Note that was overdue because it was a complicated backwards incompatible change that required many changes in the compiler and libraries (including the assertion language, parametric properties, runtime checks, and parts of the CiaoPP analysis framework). <li>CHANGED: Made the semantics of shared variables in predicate abstractions more strict. Now only the variables specified in <tt>ShVs</tt> for <tt>call((ShVs -&gt; &apos;&apos;(...) :- ...), ...)</tt> will share with the caller&apos;s body variables. No other variables will be implicitly shared. <li>CHANGED: Conditional compilation is built-in in the compiler now. This improves the portability of some experimental libraries. <li>EXPERIMENTAL: <tt>string_type</tt> package for native strings. <li>EXPERIMENTAL: a default behavior was defined for <tt>ciao-serve</tt> so that it provides the available manuals in <tt>index.html</tt> (via the HTTP protocol). <li>FIXED: Make partial application work as expected (e.g., <tt>X=append, Y = X([1]), Y([2], Z)</tt>) <li>FIXED: Syntactic errors in assertion normalization are now treated correctly by <tt>c_itf.pl</tt>. <li>FIXED: Program point assertions (<tt>check/1</tt>,<tt>true/1</tt>,etc.) are not removed by <tt>mexpand.pl</tt> <li>FIXED: <tt>load_compilation_module/1</tt> was incorrectly ignoring modules that were already processed (e.g., compiled) but not loaded in the context of <tt>c_itf.pl</tt>. <li>ENHANCED: Pretty printing of solutions detects cyclic terms automatically. The <tt>check_cycles</tt> flag is no longer needed and has been removed. <li>REMOVED: <tt>check_cycles</tt> flag is no longer needed. </ul> <li>Engine: <ul> <li>ADDED: Support for <tt>aarch64</tt> on Android (using Termux). <li>ADDED: Support for 64-bits in tabling libraries. Trie adapted to allow the use of big numbers. <li>FIXED: using C <tt>-fno-stack-check</tt> option as a workaround for Darwin19/Xcode-11 bug (macOS Catalina) <li>FIXED: Using C <tt>MoveFileEx()</tt> intead of <tt>rename()</tt> in Win32. <li>FIXED: Normalize <tt>c_headers_directory()</tt> in Win32. <li>FIXED: Fix C warnings due to casts of integers of different sizes. <li>FIXED: Using <tt>__builtin_mul_overflow()</tt> for better 32-bit/64-bit portability. <li>FIXED: Fix evaluation of right shift with large numbers. <li>FIXED: Fixed round-trip property in float to string and string to float conversions. The new code is based on the extremely fast Ryu algorithm (see 2018 paper). <li>FIXED: Added <tt>lib(engine)</tt> to <tt>core/Manifest</tt> (this ensures that <tt>engine/</tt> files are copied in global installations). <li>FIXED: Thread-safe and more efficient reimplementation of exceptions. <li>FIXED: Handler for signals that are not intercepted. <li>FIXED: Fix right shift of negative <tt>smallint</tt>. For <tt>Shift</tt> in 0..70 and <tt>V=(-1&lt;&lt;57)</tt> or <tt>V=(-1)</tt>, <tt>X is V&gt;&gt;Shift</tt> produced <tt>X=0</tt> instead of a negative number. </ul> <li>Runtime checks, testing, and debugging: <ul> <li>ADDED: New <tt>timeout/2</tt> property for test assertions (10 min default). <li>ADDED: New <tt>generate_from_calls_n/2</tt> property for test assertions (generate multiple test states from the calls field, 1 by default). <li>ENHANCED: Major cleanups in <tt>rtchecks</tt> package. <li>CHANGED: Default value of <tt>try_sols/2</tt> is 2 (rather than infinite). <li>CHANGED: <tt>unittest</tt> aborts on compilation errors. <li>CHANGED: Replaced <tt>num_solutions(&apos;&gt;&apos;(N))</tt> by <tt>num_solutions(&apos;&lt;&apos;(N))</tt> (due to new hiord). <li>FIXED: rtchecks for exception properties rethrow rtcheck error exceptions. <li>FIXED: Added <tt>@</tt> option also in embedded debugger (see <tt>debug</tt> or <tt>trace</tt> package). </ul> <li>Libraries: <ul> <li>ADDED: Improvements to TCLP: support for 64 bits, interface with the Mod TCLP modular framework, new solver interfaces (difference constraints, CLP(Q), CLP(R)), new constraint solver over lattices (abs_new_constraint), a new framework for incremental evaluation of lattice-based aggregates (<tt>tclp_aggregates</tt>). <li>ADDED: New <tt>system:get_numcores/1</tt>, obtains the number of logical CPU cores. <li>ENHANCED: Updated pretty printing-style formatting of clauses and assertions. <li>CHANGED: Inline foreign code feature moved to <tt>foreign_inliner</tt> package. <li>CHANGED: Update indentation rules in <tt>write:portray_clause/{1,2}</tt>. <li>CHANGED: All code ported to the new hiord argument order and predicate abstraction sharing rules. <li>FIXED: Bug in fastrw due to wrong integer casting (64-bit). <li>FIXED: <tt>C-c</tt> restarts the toplevel only if it was started (for embedded toplevels). <li>FIXED: <tt>bfall</tt> and <tt>afall</tt> search rules compatible with more language extensions. <li>FIXED: Add missing parenthesis for <tt>(,)/2</tt> in <tt>assrt_write</tt> predicates. <li>FIXED: Fix foreign interface C embedding example. <li>FIXED: Missing cuts, <tt>==/2</tt>, and meta_predicate declarations in <tt>assoc.pl</tt>. <li>FIXED: Avoid invalid cross-device link errors in <tt>file_buffer.pl</tt> predicates. <li>FIXED: Missing GC roots in <tt>system:extract_paths/2</tt>. </ul> <li>Reference manual: <ul> <li>ADDED: Installation instructions for Windows based on WSL and for Android based on Termux. <li>ENHANCED: Improved documentation of several libraries (<tt>regexp</tt>, <tt>runtime_control</tt>, read). <li>ENHANCED: Separate language conventions from introduction. <li>FIXED: Document that <tt>call_with_time_limit/{2,3}</tt> behaves as <tt>once/1</tt>. <li>FIXED: Added <tt>classic_predicates.pl</tt> (for classic compatibility package) </ul> <li>Ciao emacs mode: <ul> <li>ENHANCED: Indentation code rewritten (supporting block syntax, better indentation of if-then-else, argument-based indentation for columns). <li>ENHANCED: New syntax coloring code (better multiline coloring of strings and comments, quoted atoms, doccomments blocks, documentation commands, assertion syntax) <li>ENHANCED: Coloring of info manuals generated by LPdoc. <li>ENHANCED: Do not set tty colors for ciao faces (modern terminals look great with the default colors). <li>CHANGED: Using 4-space indentation by default. <li>CHANGED: <tt>C-g</tt> clears compilation error marks. <li>CHANGED: Blanks instead of tabs in ciao-mode. <li>CHANGED: Set default emacs init file to <tt>~/.emacs.d/init.d</tt> (<tt>~/.emacs.el</tt>, <tt>~/.emacs</tt> are still detected if present) <li>EXPERIMENTAL: <tt>M-x ciao-serve</tt> (starts a Ciao server), <tt>M-x ciao-dist</tt> (prepares data for a Ciao service). <li>FIXED: <tt>word-help-extract-index</tt> ignore missing indices. <li>FIXED: use the lpdoc toplevel to generate/view buffer documentation (instead of a shell). <li>FIXED: Modified error location colors for clarity when background is dark. <li>FIXED: Fixing many elisp compilation warnings. <li>REMOVED: Dropped support for xemacs. </ul> </ul> <dt><strong>Version 1.18 (2018/12/6, 11:25:8 CEST)</strong><dd> <ul> <li>Backward-incompatible changes in this version: <ul> <li>Changed the defaults for modules declared with <tt>module/3</tt>. The following predicates and features are no longer included by default in module/3. They should be enabled explicitly with the following packages or modules: <ul> <li><tt>call/N</tt>: <tt>hiord</tt> package. <li><tt>data</tt>, <tt>concurrent</tt> declarations, <tt>assertz_fact/1</tt>, etc.: <tt>datafacts</tt> package. <li><tt>dynamic</tt> declarations, <tt>assertz/1</tt>, etc.: <tt>dynamic</tt> package. <li><tt>set_prolog_flag/2</tt>, etc.: <tt>engine(runtime_control)</tt> (which merges deprecated <tt>engine(prolog_flags)</tt> and <tt>engine(prolog_sys)</tt>). <li>nl/0, nl/1, display/0, open/3, etc.: library(streams) (which reexports stream handling and operations, namely <tt>engine(stream_basic)</tt> and <tt>engine(io_basic)</tt>). </ul> <li>Added <tt>noprelude</tt> that prevents loading the prelude (default definitions). <li>The <tt>pure</tt> package now includes a minimum set of control constructs <tt>(,)/2</tt>, <tt>true/0</tt>, <tt>fail/0</tt>. </ul> <li>Language, compiler, toplevel: <ul> <li>Major update of the Ciao manual (basic language, language extensions, Ciao standard library, additional libraries, abstract data types, ISO and compatibility, etc.). <li>Built-in build system and software packaging system (<em>bundles</em>) (see documentation for details). <li>Added (optional) <tt>CIAOROOT</tt> and <tt>CIAOPATH</tt> environment variables (replace <tt>CIAOLIB</tt>). <tt>CIAOROOT</tt> points to the root of the Ciao sources rather than the lib directory. <li>New <tt>ciao-env</tt> command to set up the environment for some specific Ciao installations. <li>Fix <tt>MANPATH</tt>,<tt>INFOPATH</tt> in <tt>ciao-env</tt> (trailing <tt>:</tt> was incorrectly removed, it is meaningful and represents default paths). <li>Fixed <tt>ciaosh -e Goal</tt> (accepts any goal), removed <tt>-g</tt> option. <li>DCG <tt>phrase/3</tt> available by default in classic mode (toplevel, user modules, and modules declared with <tt>module/2</tt>). <li>Fixes in runtime check versions of <tt>mshare/1</tt>, <tt>indep/1</tt>, <tt>indep/2</tt>, and <tt>covered/2</tt>. <li>Fixed issues with cyclic terms in debugger (when <tt>check_cycles</tt> flag is activated). <li>(experimental) <tt>ciao-serve</tt> command to start a Ciao server to serve both HTTP and active module requests. </ul> <li>Ciao emacs mode: <ul> <li>Added <tt>M-x ciao-set-ciao-root</tt>, <tt>M-x ciao-set-ciao-path</tt> (see <tt>CIAOROOT</tt> and <tt>CIAOPATH</tt> changes). <li>Improved syntax highlighting. </ul> <li>Engine: <ul> <li>Fixed a bug while freeing sources in <tt>eng_call/{3,4}</tt>. <li>Fixed bug in dynamic/data predicates (uninitialized registers may lead to memory corruption during garbage collection). <li>Added <tt>ciao_root/1</tt>, replaces <tt>ciao_lib_dir/1</tt>. <li>Improved documentation and examples for interfacing with C/C++ (including embedding engines in C/C++ applications). </ul> <li>Libraries: <ul> <li>Fixed bug in tokenizer (dealing with <tt>\^</tt> escape sequences in strings). <li>Refurbished HTTP libraries (separated from pillow, see documentation). <li>Added <tt>library(io_port_reify)</tt> (like <tt>port_reify</tt> but allows IO redirection). <li>Added <tt>filter/3</tt>, <tt>partition/4</tt>, <tt>maplist/N</tt> to <tt>library(hiordlib)</tt>. <li>Added <tt>library(opendoc)</tt> (opens a document with the default OS viewer). <li>Revamped active modules model and implementation (see documentation for details). <li>Renamed <tt>library(file_utils)</tt> to <tt>library(stream_utils)</tt>. <li>Predicates <tt>stream_to_string/{2,3}</tt> replaced by <tt>read_to_end/{2,3}</tt> (which do not close the stream). <li>Added <tt>library(terms_io)</tt> (<tt>terms_to_file/2</tt>, <tt>file_to_terms/2</tt>). <li>(experimental) <tt>library(timeout)</tt> (<tt>call_with_time_limit/{2,3}</tt>). <li>(experimental) package for traits (interfaces). </ul> </ul> <dt><strong>Version 1.16 (2016/12/31, 11:36:37 CEST)</strong><dd> <ul> <li>Engine: <ul> <li>Generating the emulator loop with our own code expansion and emulator generator (emugen). <li>Refactor, clean up, rewrite some engine parts. <li>Reworking custom engine compilation (under <tt>build/</tt> directory). Ciao headers must be included now using <tt>#include &lt;ciao/...&gt;</tt> rather than double quotes. <li>Fix bug in arithmetic shifting operators by 0. <li>Fix <tt>X is (1&lt;&lt;20)*(1&lt;&lt;10)</tt> returned <tt>X=0</tt> (detect multiplication overflows using <tt>__builtin_smul_overflow</tt> to avoid C undefined behaviours, i.e., in clang). <li>Fixes in bignums and float to integer conversion in 64-bits mode. <li><tt>lib/engine/</tt> merged into <tt>engine/</tt> (no need to separate Prolog and C files). <li>64-bit port, enabled by default (this was a very large change which required rewriting some parts of the engine). <li>Adding <tt>--trace-instr</tt> engine option (traces instructions, for debugging). <li>Faster implementation of <tt>unify_with_occurs_check/2</tt>. <li>Fix potential overflow in string to number conversion. <li>Better support for <tt>UTF8</tt>. <li>Properly escaping all control characters in quoted atom print (ISO compliance). <li>Fix ending of quoted atom and strings (ISO compliance). <li>Fix <tt>get_char/1</tt> (ISO conformance, past end of file). <li>Fix in treatment of <tt>EOF</tt> in IO predicates (do not assume <tt>EOF == -1</tt>). <li><tt>CIAOARCH</tt> replaced by <tt>CIAOOS</tt> (e.g., Linux) and <tt>CIAOARCH</tt> (e.g., <tt>i686</tt>). New <tt>ciao_sysconf</tt> command (replaces <tt>ciao_get_arch</tt> script), which accepts the arguments <tt>--os</tt>, <tt>--arch</tt>, and <tt>--osarch</tt>. </ul> <li>Portability and OS support: <ul> <li>Using <tt>clang</tt> as default C compiler in MacOS. <li>Identify <tt>MINGW64_NT</tt> as Win32 (which is commonly accepted as a generic OS name which does not necessarily mean 32-bits). <li>Drop support for IRIX and SunOS4. <li>Improved support for NetBSD (NetBSD 7), FreeBSD. <li>Support for Raspberry Pi. <li>(experimental) support for MINGW32 and MINGW64 (and MSYS2) builds (for Windows). <li>(experimental) support for EMSCRIPTEN as compilation target. </ul> <li>Language, compiler, toplevel: <ul> <li>Conditional compilation library <tt>library(condcomp)</tt> enabled by default. <li>Deprecated <tt>alias(a(b(...)))</tt> as a module specifier name (using the more compatible <tt>alias(a/b/...)</tt> instead). <li>Fix exit status (returns 1) for toplevel and executables on abort, e.g., due to uncaught exceptions or unexpected failure. <li>New <tt>ciaoc_sdyn</tt> tool to help in the distribution of standalone executables with foreign code (collects all required dynamic libraries). <li>Starting work on new build system. <li>(experimental) syntax extension for infix dot <tt>(A.B)</tt> (see <tt>set_prolog_flag(read_infix_dot, on)</tt>). <li>(experimental) syntax extension for string data type (see <tt>set_prolog_flag(read_string_data_type, on)</tt>). </ul> <li>Libraries: <ul> <li>Fix <tt>system:touch/1</tt>, implemented through C <tt>utime()</tt>. <li>Fix buffer overflow in <tt>absolute_file_name/?</tt> with <tt>nul/NUL</tt> in Win32 (it is a reserved name). <li>Fix bug in check for cyclic terms, implemented faster C (low-level) version. <li>Fix <tt>get_tmp_dir/1</tt> so that it always produces a normalized path, with no trailing <tt>/</tt>, and considering <tt>TMPDIR</tt> on POSIX systems. <li>Better use of <tt>current_executable/1</tt> implementation (macOS: <tt>_NSGetExecutablePath()</tt>, Linux: <tt>readlink</tt> on <tt>/proc/self/exe</tt>, Windows: <tt>GetModuleFileName()</tt> with <tt>hModule = NULL</tt>). <li>Added support for <tt>phrase/2</tt> and <tt>phrase/3</tt> in DCGs (in <tt>dcg_phrase</tt> package). <li>Added <tt>library(global_vars)</tt>, backtrackable global variables. <li>Added <tt>library(datetime)</tt>, manipulate date and time in different formats. <li>Added <tt>library(clpfd)</tt>, new CLP(FD) implementation. <li>Added <tt>library(glob)</tt>, support <em>glob</em> patterns, filenames with wildcard characters. <li>Added <tt>library(pathnames)</tt>, predicates for file path name manipulation, compatible with common semantics in other languages. <li>Added <tt>library(port_reify)</tt>, metacalls which reify the <tt>exit</tt> port so that it can be delayed. <li>Added <tt>library(process)</tt>, portable high-level interface for child process creation, supporting stream redirection, background processes, signals, etc. <li>Added <tt>library(text_template)</tt>, text-based templates. <li>Added <tt>library(http_get)</tt>, retrieve files via HTTP/HTTPs/FTP protocol. <li>Added <tt>system:get_home/1</tt>, <tt>system:find_executable/2</tt>. <li>Added <tt>system:extract_paths/2</tt>, split atom containing a colon-separated path list as individual paths. <li>Deprecated <tt>exec/?</tt> from <tt>library(system)</tt>. <li>Deprecated <tt>system:get_exec_dir/1</tt>, can be replaced by <tt>current_executable/1</tt> and <tt>path_dirname/2</tt>. <li>(experimental) <tt>library(indexer)</tt>, a package that extends first-argument indexing. <li>(experimental) heap limits exceptions (<tt>set_heap_limit/1</tt>). <li>(experimental) <tt>library(stream_wait)</tt>, wait for input to be available, with timeouts. </ul> <li>Ciao emacs mode: <ul> <li>Cleanups, refactoring into smaller individual components (highlighting, interaction with Ciao, etc.). <li><tt>M-x ciao-grep*</tt> emacs command (search over all code). </ul> <li>Foreign interface: <ul> <li>Fix exception throw from C builtins during shallow backtracking. <li>Allow exception throwing using arbitrary terms. <li>Foreign interface types corresponding to different fixed-width C types (<tt>c_int</tt>,<tt>c_size</tt>,<tt>c_uint8</tt>, etc.). </ul> </ul> <dt><strong>Version 1.15 (2011/7/8, 11:48:1 CEST)</strong><dd>New development version (Jose Morales)<dt><strong>Version 1.14#2 (2011/8/12, 18:14:31 CEST)</strong><dd> Merging r13606 (trunk) into 1.14. This backports an optimization for DARWIN platforms (Jose Morales)<dt><strong>Version 1.14#1 (2011/8/10, 18:17:10 CEST)</strong><dd> Merging r13583 through r13586 (trunk) into 1.14. This fixes problems in the Windows version of Ciao (Edison Mera, Jose Morales)<dt><strong>Version 1.14 (2011/7/8, 10:51:55 CEST)</strong><dd> It has been a long while since declaring the last major version (basically since moving to subversion after 1.10/1.12), so quite a bit is included in this release. Here is the (longish) summary:<p><ul> <li>Extensions to functional notation: <ul> <li>Introduced <tt>fsyntax</tt> package (just functional syntax). (Daniel Cabeza) <li>Added support to define on the fly a return argument different from the default one (e.g. <tt>~functor(~,f,2)</tt>). (Daniel Cabeza) <li>Use of &apos;<tt>:- function(defined(true)).</tt>&apos; so that the defined function does not need to be preceded by <tt>~</tt> in the return expression of a functional clause. (Daniel Cabeza) <li>Functional notation: added to documentation to reflect more of the FLOPS paper text and explanations. Added new functional syntax examples: arrays, combination with constraints, using func notation for properties, lazy evaluation, etc. (Manuel Hermenegildo) <li>Added functional abstractions to <tt>fsyntax</tt> and correct handling of predicate abstractions (the functions in the body where expanded outside the abstraction). (Jose Morales) <li>Improved translation of functions. In particular, old translation could lose last call optimization for functions with body or with conditional expressions. Furthermore, the translation avoids now some superfluous intermediate unifications. To be studied more involved optimizations. (Daniel Cabeza, Jose Morales). <li>More superfluous unifications taken out from translated code, in cases where a goal <tt>~f(X) = /Term/</tt> appears in the body. (Daniel Cabeza) <li>Added <tt>library/argnames_fsyntax.pl</tt>: Package to be able to use <tt>$~/2</tt> as an operator. (Daniel Cabeza) <li>Added a new example for lazy evaluation, saving memory using lazy instead of eager evaluation. (Amadeo Casas) </ul> <p><li>Improvements to signals and exceptions: <ul> <li>Distinguished between exceptions and signals. Exceptions are thrown and caught (using <a class="lpdoc-idx-anchor" id="1" href="exceptions.html#throw/1"><tt>throw/1</tt></a> and <a class="lpdoc-idx-anchor" id="2" href="exceptions.html#catch/3"><tt>catch/3</tt></a>). Signals are sent and intercepted (using <a class="lpdoc-idx-anchor" id="3" href="exceptions.html#send_signal/1"><tt>send_signal/1</tt></a> and <a class="lpdoc-idx-anchor" id="4" href="exceptions.html#intercept/3"><tt>intercept/3</tt></a>). (Jose Morales, Remy Haemmerle) <li>Back-port of the (improved) low-level exception handling from <tt>optim_comp</tt> branch. (Jose Morales) <li>Fixed <a class="lpdoc-idx-anchor" id="5" href="exceptions.html#intercept/3"><tt>intercept/3</tt></a> bug, with caused the toplevel to not properly handle exceptions after one was handled and displayed (bug reported by Samir Genaim on 04 Dec 05, in ciao mailing list, subject ``<tt>ciao top-level : exception handling</tt>&apos;&apos;). Updated documentation. (Daniel Cabeza) <li><a class="lpdoc-idx-anchor" id="6" href="exceptions.html#intercept/3"><tt>intercept/3</tt></a> does not leave pending choice points if the called goal is deterministic (the same optimization that was done for <a class="lpdoc-idx-anchor" id="7" href="exceptions.html#catch/3"><tt>catch/3</tt></a>). (Jose Morales) </ul> <p><li>New/improved libraries: <ul> <li>New <tt>assoc</tt> library to represent association tables. (Manuel Carro, Pablo Chico) <li>New <tt>regexp</tt> library to handle regular expressions. (Manuel Carro, Pablo Chico) <li>Fixed bug in string_to_number that affected ASCII to floating point number conversions (<a class="lpdoc-idx-anchor" id="8" href="atomic_basic.html#number_codes/2"><tt>number_codes/2</tt></a> and bytecode read). (Jose Morales) <li><tt>system.pl</tt>: Added predicates <a class="lpdoc-idx-anchor" id="9" href="system.html#copy_file/2"><tt>copy_file/2</tt></a> and <a class="lpdoc-idx-anchor" id="10" href="system.html#copy_file/3"><tt>copy_file/3</tt></a>. Added predicates <a class="lpdoc-idx-anchor" id="11" href="system.html#get_uid/1"><tt>get_uid/1</tt></a>, <a class="lpdoc-idx-anchor" id="12" href="system.html#get_gid/1"><tt>get_gid/1</tt></a>, <a class="lpdoc-idx-anchor" id="13" href="system.html#get_pwnam/1"><tt>get_pwnam/1</tt></a>, <a class="lpdoc-idx-anchor" id="14" href="system.html#get_grnam/1"><tt>get_grnam/1</tt></a> implemented natively to get default user and groups of the current process. (Edison Mera) <li>Added library for mutable variables. (Remy Haemmerle) <li>Added package for block declarations (experimental). (Remy Haemmerle) <li>Ported CHR as a Ciao package (experimental). (Tom Schrijvers) <li>Debugged and improved performance of the CHR library port. (Remy Haemmerle) <li><tt>contrib/math</tt>: A library with several math functions that depends on the GNU Scientific Library (GSL). (Edison Mera) <li><tt>io_aux.pl</tt>: Added <a class="lpdoc-idx-anchor" id="15" href="messages_basic.html#messages/1"><tt>messages/1</tt></a> predicate. Required to facilitate printing of compact messages (compatible with emacs). (Edison Mera) <li>Added library <tt>hrtimer.pl</tt> that allow us to measure the time using the higest resolution timer available in the current system. (Edison Mera) <li>Global logical (backtrackable) variables (experimental). (Jose Morales) <li>New dynamic handling (<tt>dynamic_clauses</tt> package). Not yet documented. (Daniel Cabeza) <li>Moved <tt>=</tt> from <tt>iso_misc</tt> to <tt>term_basic</tt>. (Daniel Cabeza) <li><tt>lib/lists.pl</tt>: Added predicate <a class="lpdoc-idx-anchor" id="16" href="lists.html#sequence_to_list/2"><tt>sequence_to_list/2</tt></a>. (Daniel Cabeza) <li><tt>lib/lists.pl</tt>: Codification of <a class="lpdoc-idx-anchor" id="17" href="lists.html#subordlist/2"><tt>subordlist/2</tt></a> improved. Solutions are given in other order. (Daniel Cabeza) <li><tt>lib/filenames.pl</tt>: Added <a class="lpdoc-idx-anchor" id="18" href="ciaosearch.html#file_directory_base_name/3"><tt>file_directory_base_name/3</tt></a>. (Daniel Cabeza) <li><tt>library/symlink_locks.pl</tt>: preliminary library to make locks a la emacs. (Daniel Cabeza) <li><tt>lib/between.pl</tt>: Bug in <tt>between/3</tt> fixed: when the low bound was a float, an smaller integer was generated. (Daniel Cabeza) <li>Fixed bug related to implication operator <tt>-&gt;</tt> in Fuzzy Prolog (Claudio Vaucheret) <li><tt>contrib/gendot</tt>: Generator of dot files, for drawing graphs using the dot tool. (Claudio Ochoa) <li>Addded <tt>zeromq</tt> library (bindings for the Zero Message Queue (ZeroMQ, 0MQ) cross-platform messaging middleware) (Dragan Ivanovic) <li>Minor documentation changes in <tt>javall</tt> library (Jesus Correas) <li>Fix a bug in calculator <tt>pl2java</tt> example (Jesus Correas) <li><tt>lib/aggregates.pl</tt>: Deleted duplicated clauses of <a class="lpdoc-idx-anchor" id="19" href="aggregates.html#findnsols/4"><tt>findnsols/4</tt></a>, detected by Pawel. (Daniel Cabeza) <li>Added library to transform between color spaces (HSL and HVS) (experimental). (Jose Morales) <li>Added module qualification in DCGs. (Remy Haemmerle, Jose Morales) <li><a class="lpdoc-idx-anchor" id="20" href="ciaosearch.html#prolog_sys:predicate_property/2"><tt>prolog_sys:predicate_property/2</tt></a> behaves similar to other Prolog systems (thanks to Paulo Moura for reporting this bug). (Jose Morales) <li>Added DHT library (implementation of distributed hash table) (Arsen Kostenko) <li>Adding property <tt>intervals/2</tt> in <tt>native_props.pl</tt> (for intervals information) (Luthfi Darmawan) <li>Added code to call polynomial root finding of GSL (Luthfi Darmawan) <li>Some improvements (not total, but easy to complete) to error messages given by errhandle.pl . Also, some of the errors in <tt>sockets_c.c</tt> are now proper exceptions instead of faults. (Manuel Carro) <li><tt>sockets</tt> library: added a library (<tt>nsl</tt>) needed for Solaris (Manuel Carro) <li>Driver, utilities, and benchmarking programs from the ECRC suite. These are aimed at testing some well-defined characteristics of a Prolog system. (Manuel Carro) <li><tt>library/getopts.pl</tt>: A module to get command-line options and values. Intended to be used by Ciao executables. (Manuel Carro) </ul> <p><li>Improved ISO compliance: <ul> <li>Ported the Prolog ISO conformance testing. <li>Fixed read of files containing single ``<tt>%</tt>&apos;&apos; char (reported by Ulrich Neumerkel). (Jose Morales) <li>Added exceptions in <a class="lpdoc-idx-anchor" id="21" href="term_basic.html#=../2"><tt>=../2</tt></a>. (Remy Haemmerle) <li>Added exceptions in arithmetic predicates. (Remy Haemmerle) <li>Arithmetics integer functions throw exceptions when used with floats. (Remy Haemmerle) <li>Added exceptions for resource errors. (Remy Haemmerle) </ul> <p><li>Improvements to constraint solvers: <ul> <li>Improved CLPQ documentation. (Manuel Hermenegildo) <li>Added clp_meta/1 and clp_entailed/1 to the clpq and clpr packages (Samir Genaim): <ul> <li><tt>clp_meta/1</tt>: meta-programming with clp constraints, e.g, <tt>clp_meta([A.&gt;.B,B.&gt;.1])</tt>. <li><tt>clp_entailed/1</tt>: checks if the store entails specific cnstraints, e.g, <tt>clp_entailed([A.&gt;.B])</tt> succeeds if the current store entailes <tt>A.&gt;.B</tt>, otherwise fails. </ul> <li>Exported the simplex predicates from CLP(Q,R). (Samir Genaim) </ul> <p><li>Other language extensions: <ul> <li>Added new <tt>bf/bfall</tt> package. It allows running all predicates in a given module in breadth-first mode without changing the syntax of the clauses (i.e., no <tt>&lt;-</tt> needed). Meant basically for experimentation and, specially, teaching pure logic programming. (Manuel Hermenegildo) <li>Added <tt>afall</tt> package in the same line as <tt>bf/bfall</tt> (very useful!). (Manuel Hermenegildo) <li>Improved documentation of <tt>bf</tt> and <tt>af</tt> packages. (Manuel Hermenegildo) <li>Added partial commons-style dialect support, including dialect flag. (Manuel Hermenegildo) <li><tt>yap_compat</tt> and <tt>commons_compat</tt> compatibility packages (for Yap and Prolog Commons dialects). (Jose Morales) <li><tt>argnames</tt> package: enhanced to allow argument name resolution at runtime. (Jose Morales) <li>A package for conditional compilation of code (<tt>:- use_package(condcomp)</tt>). (Jose Morales) </ul> <p><li>Extensions for parallelism (And-Prolog): <ul> <li>Low-level support for andprolog library has been taken out of the engine and moved to <tt>library/apll</tt> in a similar way as the sockets library. We are planning to reduce the size of the actual engine further, by taking some components out of engine, such as locks, in future releases. (Amadeo Casas) <li>Improved support for deterministic parallel goals, including some bug fixes. (Amadeo Casas) <li>Goal stack definition added to the engine. (Amadeo Casas) <li>And-parallel code and the definition of goal stacks in the engine are now wrapped with conditionals (via <tt>AND_PARALLEL_EXECUTION</tt> variable), to avoid the machinery necessary to run programs in parallel affects in any case the sequential execution. (Amadeo Casas) <li>Stack expansion supported when more than one agent is present in the execution of parallel deterministic programs. This feature is still in experimental. Support for stack expansion in nondeterministic benchmarks will be added in a future release. (Amadeo Casas) <li>Support for stack unwinding in deterministic parallel programs, via <tt>metachoice</tt>/<tt>metacut</tt>. However, garbage collection in parallel programs is still unsupported. We are planning to include support for it in a future release. (Amadeo Casas) <li>Backward execution of nondeterministic parallel goals made via events, without speculation and continuation join. (Amadeo Casas) <li>Improved agents support. New primitives included that aim at increasing the flexibility of creation and management of agents. (Amadeo Casas) <li>Agents synchronization is done now by using locks, instead of using <tt>assertz</tt>/<tt>retract</tt>, to improve efficiency in the execution of parallel programs. (Amadeo Casas) <li>Optimized version of <tt>call/1</tt> to invoke deterministic goals in parallel has been added (<tt>call_handler_det/1</tt>). (Amadeo Casas) <li>Optimization: locks/<tt>new_atom</tt> only created when the goal is stolen by other process, and not when this is pushed on to the <tt>goal_stack</tt>. (Amadeo Casas) <li>Integration with the new annotation algorithms supported by CiaoPP, both with and without preservation of the order of the solutions. (Amadeo Casas) <li>New set of examples added to the <tt>andprolog</tt> library. (Amadeo Casas) <li>Several bug fixes to remove some cases in execution of parallel code in which races could appear. (Amadeo Casas) <li><tt>andprolog_rt:&amp;</tt> by <tt>par_rt:&amp;</tt> have been moved to <tt>native_builtin</tt> (Amadeo Casas) <li><tt>indep/1</tt> and <tt>indep/2</tt> have been moved to <tt>native_props</tt>, as <tt>ground/1</tt>, <tt>var/1</tt>, etc. (Amadeo Casas) <li>Added assertions to the <tt>library/apll</tt> and <tt>library/andprolog</tt> libraries. (Amadeo Casas) <li>Removed clauses in <tt>pretty_print</tt> for the <tt>&amp;&gt;/2</tt> and <tt>&lt;&amp;/1</tt> operators. (Amadeo Casas) <li>Shorter code for <tt>&lt;&amp; / 1</tt> and <tt>&lt;&amp;! / 1</tt> (Manuel Carro) <li>Trying to solve some problems when resetting WAM pointers (Manuel Carro) <li>Better code to clean the stacks (Manuel Carro) </ul> <p><li>Improvements to foreign (C language) interface: <ul> <li>Better support for cygwin and handling of dll libraries in Windows. Now usage of external dll libraries are supported in Windows under cygwin. (Edison Mera) <li>Improvements to documentation of foreign interface (examples). (Manuel Hermenegildo) <li>Allow reentrant calls from Prolog to C and then from C to Prolog. (Jose Morales) <li>Fix bug that prevented <tt>ciaoc -c MODULE</tt> from generating dynamic <tt>.so</tt> libraries files. (Jose Morales) <li>Fix bug that prevented <tt>ciaoc MODULE &amp;&amp; rm MODULE &amp;&amp; ciaoc MODULE</tt> from emitting correct executables (previously, dynamic <tt>.so</tt> libraries files where ignored in executable recompilations when only the main file was missing). (Jose Morales) </ul> <p><li>Run-Time Checking and Unit Tests: <ul> <li>Added support to perfom run-time checking of assertions and predicates outside <a class="lpdoc-idx-anchor" id="22" href="ciaosearch.html#ciaopp"><tt>ciaopp</tt></a> (see the documentation for more details). In addition to those already available, the new properties that can be run-time checked are: <tt>exception/1</tt>, <tt>exception/2</tt>, <tt>no_exception/1</tt>, <tt>no_exception/2</tt>, <tt>user_output/2</tt>, <tt>solutions/2</tt>, <tt>num_solutions/2</tt>, <tt>no_signal/1</tt>, <tt>no_signal/2</tt>, <tt>signal/1</tt>, <tt>signal/2</tt>, <tt>signals/2</tt>, <tt>throws/2</tt>. See library <tt>assertions/native_props.pl</tt> (Edison Mera) <li>Added support for testing via the <a class="lpdoc-idx-anchor" id="23" href="ciaosearch.html#unittest"><tt>unittest</tt></a> library. Documentation available at <tt>library(unittest/unittest)</tt>. (Edison Mera) </ul> <p><li>Profiling: <ul> <li>Improved profiler, now it is cost center-based and works together with the run-time checking machinery in order to also validate execution time-related properties. (Edison Mera) <li>A tool for automatic bottleneck detection has been developed, which is able to point at the predicates responsible of lack of performance in a program. (Edison Mera) <li>Improved profiler documentation. (Manuel Hermenegildo) </ul> <p><li>Debugger enhancements: <ul> <li>Added the flag <tt>check_cycles</tt> to control whether the debugger takes care of cyclic terms while displaying goals. The rationale is that to check for cyclic terms may lead to very high response times when having big terms. By default the flag is in off, which implies that a cyclic term in the execution could cause infinite loops (but otherwise the debugger is much more speedy). (Daniel Cabeza) <li>Show the va