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 library(file_systems)
, e.g.
file_systems:file_member_of_directory/[2,3,4]
.
system3:popen/3
,
system3:shell/[1,2]
and 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 Port
is 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
declarations.
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]).