Work in progress
----------------

* There is a new `--generate-bytecode' option --
  but we haven't written the bytecode interpreter yet.

* There is a new `--generate-prolog' option
  which does not work yet.

* There is a new `--optimize-constructor-last-call' option
  which identifies opportunities for LCO where a call
  is followed only by some constructor invocations.
  However, these opportunities are not exploited yet.

* We now allow programmers to give names to the arguments of constructor
  function symbols. XXX

DRAFT NEWS for Mercury release 0.7
----------------------------

* We now support cross-module optimizations.

  The `--intermodule-optimization' option enables cross-module inlining
  and cross-module specialization of higher-order predicates.

* We've continued to improve the quality of the code we generate.

  We now use a more efficient argument-passing convention, and the code
  we generate for polymorphic predicates uses a more efficient "type-info"
  representation than previous versions. 
  [ XXX these are not yet the default ]

  (Note that this means code generated by Mercury 0.7 is not compatible
  with code generated by earlier versions, so you will need to
  recompile any existing Mercury object files or libraries when you
  install the new version.)

  We've made several improvements to the code generator that result in
  better code in common situations.

  There's also a new optimization option, `--inline-alloc', which can
  speed up code that does a lot of memory allocation by inlining the
  GC_malloc() function.  (This option is also enabled by `-O6'.)

* We have fixed quite a few bugs.

  Mode inference now works a little bit better. 
  
  We now allow a function of arity N to coexist with a predicate of
  arity N+1.

* We've improved the compiler's diagnostics a bit.

  Some of the compiler's error messages are a bit more informative, and
  it catches some errors that previously it missed (such as specifiying
  modes in some but not all of the arguments of a `:- pred' declaration).

* We have made a few changes to the Mercury standard library.

  The changes are listed here, but see the library reference manual for
  details such as documentation on the new predicates.

  - We have a new module called time.m XXX to make benchmarking easier.
    The predicate report_stats, which used to be in std_util, is now
    in this module.

  - The interface to the relation module has been changed extensively.
    Elements must now be explicitly added to the domain of the relation,
    using relation__add_element/4, and relation operations such as
    relation__add are now performed on relation_keys.  There are also
    four new operations which convert elements to relation_keys and
    vice versa:
	relation__search_element/3, relation__lookup_element/3,
	relation__search_key/3, and relation__lookup_key/3

  - set__subset XXX
