Node:3.9 Miscellaneous, Next:3.9 Incompatibilities, Previous:3.9 Multiple SICStus in a Process, Up:Changes Introduced in Version 3.9
read_line/[1,2]
read one line of input into a
list of character codes.
stream_position_data/3
accesses the fields of a
stream position term.
goal_source_info/3
decomposes annotated goals
into a goal proper and a source position. Mostly used in displaying
error messages.
undo/1
, which posts a goal for execution on
backtracking, has been revived.
absolute_file_name/3
is a new variant of
absolute_file_name/2
taking a number of options to give full
control over the conversion from relative to absolute filename.
read_term/[2,3]
takes a new option which controls whether the
layout-text-item which follows the terminating . should be
consumed.
trimcore/0
trims the Prolog stacks.
,
, ;
, ->
, and \+
.
user:breakpoint_expansion/2
, has been added for user defined
breakpoint conditions.
library(bdb)
provides a way to flush all modified
records to disk after each operation.
library(charsio)
provides the new predicates
read_term_from_chars/3
and write_term_to_chars/[3,4]
.
library(system)
provides the new predicates now/1
and
datime/2
.
library(clpq,clpr)
provides the new predicate
projecting_assert/1
.
SP_set_read_hook()
is now obsolescent. See Hooks.
SP_event()
can now be called from arbitrary OS
threads. See Calling Prolog Asynchronously.
splfr
generates a header file from the foreign/[2,3]
declarations. This file should be included in the corresponding C file
to protect against incorrect foreign declarations and also to ensure
compatibility with various compile time settings used by splfr
.
The name of the file can be specified with
--header=
NAME. To produce the file and nothing more, you
can use the new
--nocompile
flag as in
splfr --header=foo.h --nocompile foo.plThis is especially useful when
foo.h
is a Makefile
prerequisite.
splfr
and spld
now use descriptive names for generated
files, especially when the flag --keep
is specified.
spld --moveable
now produces an executable which can be moved,
together with its directory tree (see Runtime Systems on Target Machines) on Solaris and Linux (it always worked on Windows).
spld
options,
--lang
--main=load
and --main=restore
.
--memhook
SP_set_memalloc_hooks
).
spld --help
to get details on these and other
options.
sicstus
and, on Windows, spwin
)
now take option --iso
and --sicstus
to start up in ISO
Prolog mode and SICStus Prolog mode respectively.
<sicstus/sicstus.h>
. For SICStus 3.9.1, they are
defined as:
#define SICSTUS_MAJOR_VERSION 3 #define SICSTUS_MINOR_VERSION 9 #define SICSTUS_REVISION_VERSION 1 #define SICSTUS_BETA_VERSION 0 /* Two digit position for MAJOR, MINOR and REVISION */ #define SICSTUS_VERSION 30901
SP_read_from_string
takes a string
representation of a Prolog term and a table of variable values and
creates a Prolog term. By reading a goal from a string and passing the
resulting term to call/1
, this also gives a very simple way to call
arbitrary goals from C.
See Mixing C and Prolog.
SP_define_c_predicate
makes it possible to
dynamically define a Prolog predicate that calls a C
function. See Mixing C and Prolog.
SP_mutex_lock
, SP_mutex_unlock
, C type
SP_mutex
and static initializer
SP_MUTEX_INITIALIZER
. These provide a platform independant
(recursive) mutual exclusion lock. These are mainly useful when more than
one SICStus run-time is used (in different threads) in the same
process.
See Operating System Services.
SP_APP_DIR
and SP_RT_DIR
are set
(by SP_initialize
) to the folder containing the executable and
the folder containing the SICStus run-time, respectively. This provides
a location independent way to locate files (such as saved states) that
are located together with the application.
Also available as the file search aliases application
and runtime
.
See Input Output.
SIGBREAK
will cause halt/0
to be
called in a development system. This will ensure that halt/0
is
called in sicstus.exe
when the console window is closed or when
the user logs off. The windowed version of SICStus (spwin.exe
)
also sends itself a SIGBREAK
when the GUI window is closed, causing
halt/0
to be called.