14.20.2 Bugs Fixed
- Compiler bug, surfaced for example for
r(b) :- Y = b, t(X,Y).
.
- Error handling bug in floating point overflows caused (a) spurious
memory resource errors, (b) different interpreted and compiled behavior.
-
SP_printf()
stopped working if the output exceeded 2048 bytes.
- Unintended limitation, max 100 million interpreted clauses in memory, lifted.
-
predicate_property/2
with nonvar second argument would lose solutions.
-
add_breakpoint/2
warns if an undefined predicate is specified; it used to
silently accept any well-formed predicate identifier.
-
length/2
: used to loop if first argument cyclic or second
argument very large. Conformance with proposed future ISO standard.
-
when/2
could cause stack overflow.
- Declarations are silently ignored if they would have no effect.
-
[File|Files]
now uses the calling module context for the second
(Files
) argument, as documented.
-
ensure_loaded/1
would keep reloading non-module ‘.po’ files
whose name did not correspond to an existing source file.
-
stream_property(S,encoding(CS))
would succeed twice for
bi-directional text streams. It now succeeds at most once and the
per-direction encoding information can be obtained with the new stream
properties input_encoding/1
and output_encoding/1
.
-
call_cleanup/2
: memory management could cause the cleanup action to be delayed.
- In trace mode, the debugger would stop at spurious calls among code in
hidden modules, which was never intended.
- On Windows, the
absolute_file_name/3
option glob/1
is now
case-normalized, just like the file name.
-
aggregate:term_variables/3
steadfastness bug. Note that this
is largely made obsolecent by the new built-in term_variables/2
.
-
library(xref)
and spxref
would loop on cyclic import dependencies.
-
library(gauge)
: logarithmic scale was broken.
-
library(gauge)
: On OS X, menus had invisible text.
-
library(process)
: On Windows, process_create/3
did not
pass empty arguments correctly.
-
library(process)
: Some process_create/3
boolean options
did not accept the value ‘false’.
- CLPFD:
- - Bad use of the global constraint API could crash SICStus.
- - Critical bug in bounds-consistent
all_different/1
.
- - Enabling FDBG could cause missing propagation.
- -
geost/[2,3,4]
: memory performance bug;
ignored the lex/1
option in greedy assignment mode
- - Bugs in flattening logical and arithmetical expressions.
- -
X #= Y
, with unbound X and Y, was handled by
unification. This failed to type X and Y as domain
variables, and was often bad for performance. Now, such equations are
handled by a propagator.
- ZINC:
- - Parsing floats was broken, causing spurious errors.
- - The
fzn_file/1
and ozn_file/1
options misbehaved if used
without explicit ‘.fzn’ and ‘.ozn’ extensions.
- - Empty arrays caused spurious existence errors.
- CHR:
- - ‘+’ and ‘-’ are no longer incompatibly defined as prefix operators.
- In the build for 64-bit OS X 10.8,
library(tcltk)
would crash
the process.
- The ‘codes’ command specification was incorrectly documented as ‘chars’.
- On Windows,
pillow:fetch_url/3
would sometimes time out for some
web servers.
- A bug in Microsoft J# caused PrologBeans.NET to transmit some data
incorrectly from Prolog to .NET.
- The
splfr
tool now ensures that the C compiler will find
the generated headers also when the --namebase
option specifies
a folder.
Send feedback on this subject.