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.