Version 3.8.5 is mainly a bugfix release. New features:
call_residue/2now support finite domain variables.
terms:term_variables/2, but its output argument is a list of variables in order of first occurrence.
bdb:db_open/5is generalized so that a cache size can be provided.
clpfd:fd_neighbors/2is a new exported predicates. It is the relation that
clpfd:fd_closure/2is the transitive closure of.
current_atom/1now terminates correctly.
once/1is now handled correctly in ISO mode.
predicate_property/2now handles built-in predicates correctly.
current_prolog_flag/2now behave as pure relations in SICStus execution mode.
read/[1,2]now handle character code 0 correctly.
save_modules/2do 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(choice,L)are more accurate.
stream_code/2now handles errors correctly.
stream_interrupt/3raises an existence error under Windows.
alias/1property for standard streams correctly.
stream_select/3now returns a valid list of streams, and raises an existence error under Windows.
character_escapesflag is obeyed in ISO execution mode.
prolog-comment-regionnow uses triple percent signs, to cater for
clpfd:full_answerfunctionality has been repaired, affecting
clpfd:fd_global/3is 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/2is now insensitive to any loads in progress. Its arguments are not subject to
absolute_file_name/2processing—that was never intended.
timeout:time_out/3now 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.
abort/0are handled better in runtime systems of type --main=load and --main=restore.
se/sics/jasper/SICStusetc.) has been improved:
SPQuerynow properly detect improper usage and raise exceptions instead of crashing in the Prolog runtime system.
jasper_call/4makes 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
IllegalCallerExceptionis no longer used. You should change your code to reflect this. One possible change is to change
throws SPException, this works for the 3.8.4 version as well.
IllegalTermExceptionis 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 SPExceptioninstead of
throws IllegalTermException, this should work for the 3.8.4 version as well.
SICStus.readFromString()and new versions of
SPPredicateis now deprecated. The preferred method is to supply module and predicate name explicitly.
Mis 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.
SPTermobject, making the Prolog side SP_term-ref available for re-use. See
JavaServeretc. 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.jasperpackage 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.