Changes in Release 3
- Backslashes (
\
) in strings, quoted atoms, and integers written in 0'
notation denote escape sequences. Character escaping can be switched off.
- Multifile declarations are required in all files where
clauses to a multifile predicate are defined. This complies with the ISO
Prolog Standard.
- The built-in predicate
call_residue/2
has been modified so that
goals that are disjunctively blocked on several variables are returned
correctly in the second argument.
- The built-in predicate
setarg/3
has been removed. Its
functionality is provided by the new built-in predicates create_mutable/2
,
get_mutable/2
, update_mutable/2
, and is_mutable/2
,
which implement a timestamp technique for value-trailing with low-level
support.
- The built-in predicates
unix/1
and plsys/1
have been
removed. Their functionality is provided by
prolog_flag(argv,
X)
, by the new halt/1
built-in predicate, and
by the new library(system)
module, which also contains several new
predicates.
- The socket I/O built-in predicates have been moved to the new
library(sockets)
module.
- The built-in predicate
time_out/3
has been moved to the new
library(timeout)
module.
- The built-in predicates
term_hash/[2,4]
, subsumes_chk/2
, and
term_subsumer/3
have been moved to the new library(terms)
module, which also contains operations for unification with occurs-check,
testing acyclicity, and getting the variables of a term.
- The foreign language interface (Prolog-to-C) has been extended with the types
+chars
, -chars
and [-chars]
for fast conversion between
C strings and Prolog code-lists. Several new interface functions
are available.
- The memory handling of the C-to-Prolog interface has been simplified by
passing each Prolog term as a "handle" object, called an SP_term_ref,
making the functions
SP_show_term()
and SP_hide_term()
obsolete.
- The InterViews 2.6 based GUI module
library(gmlib)
has been replaced by
the Tcl/Tk based library(tcltk)
. A version of library(gmlib)
converted to SICStus Prolog release 3 is available from
ftp://ftp.sics.se/archive/sicstus3/gmlib.tar.gz
.
- The
library(objects)
module has been enhanced.
- Inheritance is static, i.e. determined at object creation
time, and is implemented as module importation.
- A new, very light-weight, type of object: instance.
- Attributes, efficient storage of terms in objects.
- Unprefixed goals in methods denote message passing to
self
.
Prolog goals in methods must be prefixed by :
.
- In
library(charsio)
, the open_chars_stream/[3,4]
predicates
have been replaced by open_chars_stream/2
and
with_output_to_chars/[2,3]
.
- The
library(assoc)
module now implements AVL trees instead of
unbalanced binary trees.
- The new
library(atts)
implements
attributed variables, a general mechanism for associating logical variables
with arbitrary attributes. Comes with a number of hooks that make it
convenient to define and interface to constraint solvers.
- The Boolean constraint solver has been moved to the new
library(clpb)
and is implemented on top of library(atts)
.
- New constraint solvers for rationals (
library(clpq)
) and reals
(library(clpr)
), implemented on top of library(atts)
.
user:goal_expansion/3
is a new hook predicate for macro-expansion.
bb_put/2
, bb_get/2
, bb_delete/2
, and bb_update/3
are new built-in predicates implementing blackboard primitives.
prolog_load_context/2
is a new built-in predicate
for accessing aspects of the context of files being loaded.
user:file_search_path/2
is a new hook predicate
providing a path expansion mechanism for filenames.
gcd/2
is a new built-in function.
- The statistics keyword
walltime
measures elapsed absolute time.
- In runtime systems,
ensure_loaded/1
and use_module/[1,2,3]
have the same semantics as in development systems.
- Native code compilation available for MIPS platforms.
- Problems in native code compilation for certain SPARC models
have been eliminated.
- Performance improvements include emulated code speed,
native code speed, and the foreign language interface.
- The system has been ported to the DEC OSF/1 Alpha (a 64-bit platform).