_N_e_w_ _L_a_n_g_u_a_g_e_ _F_e_a_t_u_r_e_s

1) The  %free  directive,  supporting  parametrised  scripts,  has  been
implemented.   See  new manual page in the manual section on the library
mechanism.

2) Local definitions can now be polymorphic, and used at more  than  one
type  in  the  body  of  the  where  clause.   That  is, there is now no
difference between local definitions  and  top-level  ones,  as  regards
their  right  to  use  polymorphism.   This change is completely upwards
compatible, but removes a long standing  anomaly  in  the  type  system,
which  several  people  have  complained about.  As a side effect of the
changes to the compiler made to bring this  about,  the  compilation  of
large  where  clauses  is now more efficient (i.e.  takes less time, and
produces better code, than before).

3) Integers are now held in  a  distinct  internal  representation  from
floating  point  numbers - integers can be of unbounded size and are not
subject to rounding error.   The  internal  representation  of  floating
point numbers is double precision (circa 17 decimal digits of accuracy).
A numeric literal is integer if it contains neither a decimal point  nor
a  scale  factor,  otherwise it is floating point.  Both kinds of number
are still of  a  single  type,  `num'  as  far  as  the  typechecker  is
concerned, and there is an automatic run-time conversion from integer to
floating point when required.

The change is upwards compatible except in the following  two  respects.
(i)  It  is  now  a  (run-time) error to use a floating point number for
subscripting a list (x!n), or as an argument  to  the  integer  division
operations `div', `mod'.  (ii) The fractional division operation `/' now
always produces a floating point result.

In  connection  with  the  improvements  to  Miranda's  arithmetic   the
following have been added to the standard environment
	hugenum tinynum log10 showfloat showscaled
See comments in standard environment for explanation.

4) The definition of irrefutable pattern has  been  modified,  to  treat
user-defined  single  constructor  types  homogenously with tuple types.
(So any type with only one constructor  is  now  a  product  type.)  See
paragraphs  on  irrefutable  patterns at end of section 16 in the manual
for a description of Miranda's amended policy on product types.

5) There is an additional convention for literate scripts - that if  the
name  of  the file containing a Miranda script ends in `.lit.m', it must
contain a literate script.  This makes it possible to start  a  literate
script in `narrative mode' - so it could be eg a LaTeX source file.

6) The %insert directive now works in literate scripts  as  well  as  in
scripts  using the standard comment convention.  The %inserted text need
not use the same comment convention as the containing script.

7) The additional notation `-identifier' is now allowed  in  an  %export
list.   It has the effect of subtracting the identifier from the list of
things exported (see manual section on library directives).

8) The interface to UNIX has been made more powerful by the addition  of
two  new  functions  - `system' and `readvals'.  These are documented in
the manual section on UNIX/Miranda system interface.

The function `system' takes a string and returns the result of executing
it as a UNIX shell command.  See manual section on Input from UNIX files
etc for details.

The function `readvals' which takes a string denoting a UNIX  file,  and
reads  from  the file a list of Miranda values.  Note that for technical
reasons `readvals' is a reserved word, not an identifier.  Special  case
-  the  notation  `$+' reads values from the standard input.  See manual
page on `readvals' and `$+' for details.

9) The notation $- for the standard input is now permitted in scripts as
well as in command level expressions. (Likewise $+).

