Version 3.8.5 is mainly a bugfix release. New features:
copy_term/2
and call_residue/2
now support finite domain
variables.
terms:term_variables_bag/2
is like
terms:term_variables/2
, but its output argument is a list of
variables in order of first occurrence.
bdb:db_open/5
is generalized so that a cache size can be provided.
clpfd:fd_neighbors/2
is a new exported predicates. It is the relation
that clpfd:fd_closure/2
is the transitive closure of.
Bug fixes:
current_atom/1
now terminates correctly.
once/1
is now handled correctly in ISO mode.
predicate_property/2
now handles built-in predicates correctly.
prolog_flag/2
alias current_prolog_flag/2
now behave as pure
relations in SICStus execution mode.
read/[1,2]
now handle character code 0 correctly.
save_files/2
, save_predicates/2
, and save_modules/2
do not replace given output file extensions. A `.po' extension
will be added if none is given. Note, however, that load_files/[1,2]
will only recognize files with a `.po' extension as `.po' files.
statistics(trail,L)
and statistics(choice,L)
are more
accurate.
stream_code/2
now handles errors correctly.
stream_interrupt/3
raises an existence error under Windows.
stream_property/2
now handles alias/1
property for standard
streams correctly.
stream_select/3
now returns a valid list of streams, and
raises an existence error under Windows.
call/1
.
SP_cons_list()
and SP_cons_functor()
.
SP_open_query()
are safe.
character_escapes
flag is obeyed in ISO execution mode.
prolog-comment-region
now
uses triple percent signs, to cater for indent-region
.
clpfd:full_answer
functionality has been repaired,
affecting frozen/2
, clpfd:attribute_goal/2
and clpfd:fd_copy_term/3
. clpfd:fd_global/3
is now
a meta-predicate.
sockets:socket_select/[5,6]
are now steadfast;
better error handling.
sockets:socket_select/[5,6]
now work correctly with non-socket
streams that use file descriptors on systems where sockets and file
descriptors are treated the same (i.e. not Windows).
system:working_directory/2
is now insensitive to any
loads in progress. Its arguments are not subject to
absolute_file_name/2
processing—that was never intended.
timeout:time_out/3
now cleans up properly after abort.
library(bdb)
now handles wide characters, e.g. in error messages.
library(clpfd)
now cleans up properly after integer overflows,
and does not assume a 32-bit architecture.
clpfd:cumulative/[4,5]
now check that the resource limit is not
exceeded by any single task.
[-term]
. The problem occurred if the foreign function
did many calls to SP_new_term_ref()
or if it raised an exception.
halt/0
and abort/0
are handled better in runtime systems
of type --main=load and --main=restore.
library(jasper)
and
se/sics/jasper/SICStus
etc.) has been improved:
SPTerm
and SPQuery
now properly detect improper usage and
raise exceptions instead of crashing in the Prolog runtime system.
jasper_call/4
makes foreign
resources and splfr strictly optional when calling Java from
Prolog.
SPTerm()
is no longer public, it was always
documented as "should really have been private". Use the contructor
SPTerm(SICStus)
instead.
IllegalCallerException
is no longer used. You
should change your code to reflect this. One possible change is to
change throws IllegalCallerException
into throws
SPException
, this works for the 3.8.4 version as well.
IllegalTermException
is new. It is signalled when
attempting to use a SPTerm where the corresponding SP_term_ref is no longer
valid. You need to update your code (typically adding throws
IllegalTermException
). One possible change is to use the less specific
throws SPException
instead of throws IllegalTermException
,
this should work for the 3.8.4 version as well.
SICStus.readFromString()
and new versions of
SICStus.openQuery()
etc.
SPPredicate
is now deprecated. The preferred method is to supply
module and predicate name explicitly.
call(M:Goal)
where M
is the module specified when creating the query. This
makes goal expansion and module name expansion do the right thing,
i.e. behave as if entered interactively.
SPTerm
object, making
the Prolog side SP_term-ref available for re-use. See
SPTerm.delete()
.
JavaServer
etc. is now more clearly marked as unsupported example
code. It represents an unfinished sockets based Jasper interface. It
does not belong in the se.sics.jasper
package and will be removed at a
later date.
library(tcltk)
. When Tcl/Tk calls Prolog, it now ignores the
returned values of all unbound variables and variables with names
starting with underscore `_'. In 3.8.4, it used to
ignore only anonymous variables.