absolute_file_name/[2,3]would contain backslash instead of forward slash if the absolute file name contained certain non-ASCII characters. This bug also broke all directory listing functions in
system3:system/[1,2]to no longer work when the command string contains redirection and other special constructs. These predicates now always invoke the system shell.
library(sockets)to not accept a lone port number as an address. A port number
Portis now treated the same as
inet('', Port), as in earlier releases. This also broke
prologbeans:start/[0,1]when no port was specified.
Please note: This is an incompatible change that may cause a
Prolog program or data to be parsed differently (or not at
all). However, in practice we expect this to affect little or no
code. Data written using
write_canonical/[1,2] or similar will
not be affected and will be read back correctly regardless of operator
To preserve the old, incorrect, operator declarations, insert the following at the top of your Prolog files:
:- op( 500, fx,[+,-]). :- op( 300, xfx,[mod,rem]).
To ensure that the new, correct, operator declarations are in effect also
in releases predating 4.0.4, insert the following at the top
of your Prolog files (please note: this documentation was
updated after 4.0.4 to correct the associativity of
:- op( 200, fy,[+,-]). :- op( 400, yfx,[mod,rem]).