Next: 4.8.0 Known Issues, Previous: 4.8.0 Other Changes, Up: 4.8.0 Changes [Contents]
library(timeout)
, ^C, and similar methods, could cause
the process to exit abnormally. This was especially likely to happen
on Windows 11.
peek_code/[1,2]
or peek_byte/[1,2]
would
sometimes change the end_of_stream/1
stream property
unexpectedly, e.g., when the stream was opened with option
eof_action(eof_code)
.
library(mutarray)
.
add_breakpoint/2
,
atom_concat/3
,
atom_length/2
,
char_code/2
,
coverage_data/1
,
frozen/2
,
number_chars/2
,
number_codes/2
,
read_term/[2,3]
,
stream_property/2
,
sub_atom/5
, and
use_module/3
.
use_module(Module, File, Imports)
have been improved. Passing
an argument of the wrong type could have unexpected effects, e.g.,
loading the file even if it was already loaded, or changing the
type-in module. The file argument is always type-checked now. This
is consistent with what use_module/[1,2]
does. This change is
unlikely to affect correct code.
write_term/3
et al. have been fixed:
Note that declaring the same operator name as both infix and postfix is disallowed by the ISO Prolog standard, and warned about in the SPIDER IDE.
,
(comma) are
now bracketed when written, as required by the ISO Prolog
standard. E.g. writeq(((*),(*)))
outputs ‘(*),(*)’
(it used to output ‘*,*’).
Other operators have been treated this way since release 4.3.
fy
or
xfy
) with precedence 1200 no longer uses parentheses around its
right argument if the right argument is written with a prefix or infix
operator with the same precedence. This was never a problem for lower
precedences.
xf
or xfy
) would sometimes use unneeded
parentheses around the left argument even when the operator of the
left argument had lower precedence than that of the outer term.
+
, with
write_term/3
will now wrap the atom with parentheses if a
non-default priority/1
option is passed. This is for
consistency with how the ISO Prolog standard defines the precedence of
such atoms.
As before, no parentheses are used when writing atoms when a default
priority/1
option (1201) is explicitly or implicitly used.
float_integer_part/1
and
float_fractional_part/1
would sometimes wrongly accept an
integer argument.
current_input/1
, current_output/1
and
stream_property/2
now merely fail if the first argument is a
closed stream, and similar cases, instead of throwing an error. This
change is for alignment with the ISO Prolog standard.
element/3
and table/2
with negative integers.