« JSR-331 wins JCP Award “The Most Innovative JSR of 2010″ | Main | A first look at G12 Zinc: Basic learning models etc »

SICStus Prolog version 4.1.3 and SPIDER 0.0.23 released

SICStus Prolog version 4.1.3 and SPIDER 0.0.23 (SICStus Prolog IDE) has been released.
From Changes Introduced in Version 4.1.3:

SICStus Prolog version 4.1.3:

New Features
* library(plunit) provides a Prolog unit-test framework.
* CLPFD:
o automaton/9 takes several new options that allow capturing properties of the input string, such as the number of occurrences of given patterns, into domain variables.
o A much more general syntax is allowed for clauses of the form Head +: Body, which define dedicated propagators as indexicals. In particular, propositional combinations of arithmetic constraints are allowed.

Bugs Fixed
* Critical virtual machine bugs.
* Improvements to interrupt handling (SP_event(), SP_signal() and related functionality).
* When running under the SPIDER IDE, I/O operations could fail with SPIO_E_INTERRUPTED.
* When running under the SPIDER IDE, restore/1 would disrupt the debugging session.
* Linking with the SICStus runtime on Linux no longer marks the stack as executable. This would prevent SICStus from starting on some versions of SE Linux.
* Work around OS bugs on Mac OS X 10.5, Mac OS X 10.6 and Linux that sometimes causes SICStus to hang when closing streams.
* Source_info bug for huge interpreted clauses.
* Profiling: profile_reset/1 was broken; problems with multifile.
* library(timeout): time_out/3 would sometimes interrupt I/O or miss a timeout under Windows.
* library(sockets): Some operations would raise an exception when an interrupt occurred, e.g. at ^C.
* CLPQ/CLPR: constants \pi and e were inaccurate.
* CLPFD:
o relation/3, table/[2,3]: bugs with empty and infinite sets.
o Missing propagation in the context of unification.
*
* SPRM 11909 Prologbeans: passing deeply nested terms to and from Prolog could lead to stack overflow in Prologbeans client code (Java, .NET).

Other Changes
* The following I/O predicates are now several times faster: put_code/[1,2], put_byte/[1,2], get_code/[1,2], peek_code/[1,2], get_byte/[1,2], peek_byte/[1,2], and read_line/[1,2].
* JASPER: When creating a se.sics.sicstus.SICStus instance any (Java) system property named se.sics.sicstus.property.NAME will be passed to the created SICStus instance as the (Prolog) system property NAME.
* CLPFD: scalar_product/[4,5] is less prone to integer overflows, and faster in the most common cases.
* Linux: The installer script would sometimes fail to configure support for Java.

New features in SPIDER:

New Features
* Call Hierarchy shows references to a selected predicate or file.
* New key bindings:
Binding Function Mac OS X Binding
ALT-K Compile Prolog Code ALT-K
CTRL-ALT-Q C Open Prolog Toplevel CMD-ALT-Q C
CTRL-ALT-H Call Hierarchy CTRL-ALT-H
* Comments that contain the strings TODO, FIXME or XXX now generate tasks that are visible in the Tasks view.
* New warnings are generated, including
o Warnings when incorrect arguments can be detected. This is done for a number of builtins, including format/[2,3], predicates that takes a stream argument and predicates that take a predicate indicator list or predicate specification.
o Warn for foreign_resource/2 entries with no corresponding foreign/[2,3] and vice versa.
o Warnings for unused module imports.
* The toplevel view shows the working directory of the SICStus process.
* SICStus is now started automatically, by default, for comands like Compile Prolog Code. This can be turned off in the preferences.