Version 3.9.1 is mainly a bugfix release. New features:
library('linda/server')
now also prints the address of connecting
clients.
library('linda/server')
can apply a user specified filter to
reject or accept incoming connections; see Server.
--moveable
option to splfr
.
--nocompile
option to spld
.
clpfd:case/4
takes a new option, which effectively extends the
relation by one argument, corresponding to the ID of the leaf node
reached by a particular tuple. Every ID should be a unique integer.
Several consistency checks added.
clpfd:all_different/1
takes a new option consistency(
C)
to control the level of consistency to be achieved. This supersedes the
old option global(
Bool)
.
clpfd:sorting/3
is a new constraint, capturing the relation
between a list of values, a list of the values in ascending order,
and their positions in the original list.
clpfd:fd_var/1
is new;
checks that the argument is currently an unbound variable that is
known to the CLPFD solver.
SP_get_integer_bytes()
, SP_put_integer_bytes()
can be used to
pass arbitrarily sized integers (bignums) between C and
Prolog. See Accessing Prolog Terms.
Other changes:
$SP_APP_DIR/sp-3.9.1/
. If no such directory can be found,
the old name ($SP_APP_DIR/lib/
) is tried as well.
Bugs fixed:
listing(_:_)
printing imported clauses multiple times.
knapsack/3
broken; problems with very large
domain bounds; bugs in disjoint2/2
with wrap/4
option;
missing solutions in case/4
; fd_copy_term/3
did not
preserve all domain variables.
--output
option to splfr
broken.
sp_GlobalSICStus
is now defined also when
--main=none
is passed to spld
.
spxref
: did not follow arbitrary directives;
problem with absolute file name resolution.
Jasper
: client thread did not detect failure of server thread to
create a SICStus object.
Jasper
: bugs in class Jasper$JasperProlog
:
consFunctor
and consList
gave
NoSuchMethodException
.
Jasper
: [-term]
in method meta-calls to Java from Prolog
did not work.
Jasper
: Java longs (64-bit signed ints) passed between Java and
Prolog are no longer truncated to 32 bits.
Jasper
: bugs in class Jasper$JasperTerm
: compare
,
getArg
, getDouble
, getFunctorArity
, getList
,
and unify
did not work properly.
Jasper
: bugs in class SICStus
: consFunctor(String,
Term[])
and newTerm(String, Term[])
gave
ClassCastException
.
Jasper
: Fixed bug causing ClassCastException
when doing
callbacks in thread safe Jasper. Jasper did not keep track of current
caller properly.
w
or W
.
--multi-sp-aware
foreign resources.
SP_raise_exception()
) and failure
(SP_fail()
) from foreign resource init or deinit
functions are now handled; see
Init and Deinit Functions.
unload_foreign_resource(
Name)
now raises an existence error
instead of merely failing if no foreign resource Name is loaded.
library(fastrw)
now raises an existence error when reading a term
from an already closed stream, similar to get/1
etc. It used to
give some arbitrary error in this case. The library still does not
handle end of file within terms.
library(fastrw)
is an (undocumented) support library used by
library('linda/client')
, library('linda/server')
and
library(bdb)
.
linda:linda/1
is now a meta-predicate.
library(comclient)
would crash for in/out arguments passed as a
mutable.
system:mktemp/2
, system:tmpnam/1
: Added error checking.
On some platforms the linker would complain about possibly unsafe use of
mktemp()
when linking statically with the system
foreign
resource. This has been worked around by using mkstemp()
internally when available. For this reason, file names created by
system:tmpnam/1
may differ from earlier releases.
The robustness and security issues surrounding the use of the ANSI C
mktemp()
and tmpnam()
routines also applies when using
system:mktemp/2
and system:tmpnam/1
.
library(sockets)
now ensures that SIGPIPE
is
ignored in run-time systems (It was always ignored on development
systems). This avoids having the process killed by SIGPIPE when SICStus
writes to a socket where the other end has closed the connection.