Next: 4.8.0 Bugs Fixed, Previous: 4.8.0 New Features, Up: 4.8.0 Changes [Contents]
call_cleanup/2
, which could be arbitrarily slow.
call_cleanup/2
is now called as if by
once/1
. This means that it cannot leave any choice points
behind.
For Cleanup goals called as the result of !
, this change was
introduced already in release 4.7.
The documentation used to warn that if exiting non-determinately from the Cleanup “unexpected behavior may result”. Now this is no longer possible. This is an incompatible change but we do not expect this to affect any correct code.
call/1
and
similar constructs, are faster.
length/2
used to loop for certain incorrect calls,
like length([a,b|L],L)
. Instead it will now immediately throw
an out of memory error, which is what would eventually have happened
anyway. This is similar to how some other incorrect argument
combinations are already handled.
Prior to release 4.8 the behavior was:
| ?- (write('Hello\n'); write('World\n')). Hello yes
i.e. the second alternative was never run.
In release 4.8 this changed so that the user can decide how to proceed after the first solution:
| ?- (write('Hello\n'); write('World\n')). Hello true ? ; World yes
i.e. the second alternative is run if the user asks for more solutions.
process:process_create/[2,3]
, and to let the sub-process use the standard
streams in the expected way.
The following changes have been made to enable this new feature:
sicstus
is invoked with the -i option. This means
that the SICStus process will no longer “steal” input from the
sub-process while the sub-process in running (unless something, like
the SICStus top level, also tries to read from the standard input
stream).
process:process_create/3
has changed so that the stdin(…)
option always defaults to std
as documented. Prior to this release the
default value was null
if a wait/1
option was specified. If you
want to use a null stream, you can explicitly pass the option stdin(null)
to process:process_create/3
.
process:process_create/[2,3]
, on Windows, now gives the
sub-process access to the parent (SICStus) process’s “console window”. This
lets the sub-process read from, and write to, the console window, which is
particularly useful if the sub-process is an interactive program, like a shell.
open/[3,4]
leaves too many files open.
resource_error
has been added, file_handle
, which
is thrown when attempting to open too many files.
See Resource Errors in the SICStus Prolog
Manual for details.
prolog:undo/1
has been removed. In many cases call_cleanup/2
can be used for
a similar purpose. Contact us if this is a problem.
PATH
. Instead the path to
sicstus.msc can be passed directly to the command line tool
minizinc
(with --solver), or the
library/zinc/ directory can be added to the the MiniZincIDE
preferences. See Zinc
Prerequisites in the SICStus Prolog Manual for details.
bags:length/3
, bags:member/3
and
bags:memberchk/3
have been deprecated, and may be removed in a
future release. They have been replaced by bags:bag_length/3
,
bags:bag_member/3
and bags:bag_memberchk/3
,
respectively.