ISL and Sussex University are currently beta-testing Poplog 15.0. In
version 15.0, the Pop-11 language has been changed to improve modularity
and consistency. Although these changes may mean that some programs need
to be modified, we believe the short-term cost of changing these
programs are substantially offset by the long-term benefits to the
language and its users. Note that users who don't wish to modify their
programs can restore the old behaviour of the compiler.
The changes are:
(1) The Pop-11 compiler now
# defaults undeclared procedure formal argument and result
variables to lvars rather than vars;
# defaults undeclared nested defines to lconstant rather than
vars;
# produces a warning message for any vars statement inside a
procedure.
However, the old behaviour can be recovered in all cases by
using
compile_mode :pop11 +oldvar;
(that is, setting the bit POP11_OLD_VARS in pop_pop11_flags.)
Note that the new behaviour makes the compile_mode option :pop11
+varsch redundant (except for the case of a vars statement in a
procedure, which will continue to mishap with +varsch rather
than issuing a warning).
(2) In define updaterof ..., the keyword active is no longer
required when defining the updater of an active variable, i.e.
define active foo;
...
enddefine;
define updaterof foo;
...
enddefine;
will now work as expected.
(3) The compile_mode construct can now take an initial keyword
global to mean change the given mode(s) globally throughout the
system, rather than just in the current file. (But compilation
of libraries is not affected.) For example, global makes it
possible to specify
compile_mode global :pop11 +strict;
or
compile_mode global :pop11 +oldvar;
in your init.p; this will then apply to all files you compile.
Julian Clinton
AI Products Manager
Integral Solutions Ltd.
|