13.16.1 New Features
- If the Prolog flag
source_info is on at compile time,
more information from the source code is kept around at runtime,
with improved functionality including:
- The debugger can show variable bindings for the current clause and its
- The Emacs interface offers a variable bindings window that is updated on
every debugger port interaction.
listing/[0,1] displays the clauses with their source code
- PO files and saved-states retain information about variable names and
- The SICStus Prolog IDE (SPIDER) also takes advantage of the improved
debugging information, e.g. the variable bindings view in SPIDER now has
information for more variables than in earlier releases.
- Generic runtime systems are now available on all platforms, not only on
Windows. See Generic Runtime Systems for details.
- Execution profiling has been reengineered:
- The execution profile can be printed in a format similar to
- There is no longer any need to specially instrument code for profiling.
- Execution profiling is available for compiled as well as interpreted code.
- Execution profiling is either globally on or globally off,
reflected by the value of the new
profiling Prolog flag.
- The new scheme keeps track of the number of calls per caller-callee pair.
- The new scheme detects calls that succeed nondeterminately.
- No clause level data is maintained, all data is per predicate.
profiledcode value of the
compiling Prolog flag has
- PO files don't store any profiling data.
- The built-in predicates
profile_reset/1 have been replaced by
- SPIDER can present the profile information.
- Improved performance on Linux Intel, 32 and 64 bits.
- Coverage analysis is now available, for compiled as well as interpreted code:
- It uses the same infrastructure as execution profiling.
- Code coverage can be reported textually in a hierarchical format,
or alternatively by highlighting the relevant lines of code in the
relevant Emacs buffers and in SPIDER.
- It is now possible to debug runtime systems, e.g. when SICStus is
embedded in some other applications, such as Java. It is also possible
to attach to a runtime system from SPIDER. See Debugging Runtime Systems.
meta_predicate/1 predicate property will retrieve the
specifications used in the original meta-predicate declaration, which
can be integers or the atoms
Previously, only the atoms
? would be retrieved.
Please note: This is an incompatible change. Code that
inspects this predicate property may need to be updated.
- A new stream property,
id, has been added. This property provides
a unique identity that is never re-used, even after the stream has been
case/[3,4] constraint has been extended to take linear inequalities
into account in addition to the DAG.
- The new constraint
smt/1 provides a front-end to the extended
- Reified constraints can be used as terms in arithmetic expressions.
library(zinc): upgraded to FlatZinc version 1.2.
- Changes to
- New predicates:
- Enumerate tables and their attributes.
- Enumerate table columns and their attributes.
odbc:odbc_query_close/1 can now close both result sets and
- The format has changed for some odbc exceptions.
Now all odbc-related exceptions have the same basic structure.
- When SICStus is started from Emacs, using M-x run-prolog, or from
the launcher script in the Applications folder, the system
property SP_ULIMIT_DATA_SEGMENT_SIZE is set to
unlimited. This ensures that overly restrictive default limits on
process memory usage don't affect SICStus. This is primarily an issue
on Mac OS X. Previously, this setting was only applied when SICStus was
invoked from the SICStus Prolog IDE (SPIDER).
Send feedback on this subject.