11.12.1 New Features
     
- SPIDER, the SICStus Prolog IDE, is a new Eclipse-based development
environment for SICStus with many powerful features. See SICStus Prolog IDE for more information.
     
 - Do-loops, a new control structure and built-in predicate 
do/2
for performing simple iterations. 
See Do-Loops.
      - Conditional compilation, a pre-processing step that selectively
discards parts of a file at compile time. This is especially useful
for writing code that needs to be compatible with more than one Prolog
implementation.  See Conditional Compilation for more
information.
     
 - New Prolog flags:
          
dialectversion_data- make it easier
to determine which version of SICStus is running. Especially useful with
conditional compilation.
          
 platform_dataos_data- make it easier
to determine on which operating system SICStus is running.
          
 min_tagged_integermax_tagged_integer- 
The range of small integers.
          
 argv- 
Not a new flag but is no longer read-only. Setting it can be useful,
e.g. in test cases. 
 
      - Added stream property 
interactive for interactive streams, like
the standard input and output streams when invoking sicstus on a
terminal or with the -i command line option.
      - Meta-predicate declarations now allow an integer instead of 
:
(colon) in order to help analysis tools follow code references. All
documentation and libraries have been updated to reflect this. (This was
always allowed in SICStus as a substitute for : (colon) but was
never documented).
      - Compound terms denoting references to dynamic clauses are
recognized by the new built-in predicate 
db_reference/1.
      - The previously reserved argument to 
SP_initialize() can now be
used to pass initialization options.
      - Saved-states and `.po' files are portable across architectures
that have the same word size.  Pre-4.1 `.sav' and `.po' files
are not compatible with this and future releases.
     
 - Several new statistics keywords are available.  Also, 
statistics/0
now resets the “time spent since the latest call” counters.
     
 library(odbc) is
a new ODBC library for interfacing with databases. ODBC (Open Database
Connectivity) is a standard API for using a DBMS (DataBase Management
System). By using ODBC you can access data from a multitude of DBMSs
without having to know the details of each DBMS.
     - It is now possible to pass environment variables to the sub-process
using the new 
environment/1 option to
process:process_create/3.
      random:setrand/1 can now be passed an arbitrary integer for
initializing the state of the random number generators.  This is easier
than constructing a valid random state like those returned by
getrand/1.
     library(clpfd):
          
geost/[2,3,4] is a new powerful constraint that constrains the
location in space of non-overlapping multi-dimensional objects. 
table/[2,3] is more scalable and has
several new options for controlling its DAG construction. 
automaton/3 is a shorthand for the most common use of automaton/8, and
automaton/9 extends automaton/8 with options. 
- Unary minus (
-) is allowed in arithmetic expressions. 
 - Several new demo examples. 
 
     library(zinc): upgraded to FlatZinc version 1.0.
     library(system): a new predicate, environ/3, for reading system properties,
environment variables or a merged view of both. See below for the new concept
“System Properties” that has replaced most uses of environment
variables.
     - 
library(sockets): The predicates that create socket streams now
take options encoding/1 and eol/1 with the same meaning as
for open/4. 
 
Send feedback on this subject.