[m-rev.] for review: updated NEWS

Zoltan Somogyi zs at cs.mu.OZ.AU
Wed Nov 23 16:48:06 AEDT 2005


NEWS:
	Add some significant changes since 0.12.

Zoltan.

Index: NEWS
===================================================================
RCS file: /home/mercury/mercury1/repository/mercury/NEWS,v
retrieving revision 1.392
diff -u -b -r1.392 NEWS
--- NEWS	7 Nov 2005 07:47:07 -0000	1.392
+++ NEWS	23 Nov 2005 05:44:48 -0000
@@ -6,21 +6,30 @@
 
 Changes to the Mercury language:
 * The Mercury typeclass system now supports functional dependencies.
+* A new language construct allows programmers to promise that any given
+  goal is pure or semipure.
+* A new language construct allows programmers to promise that all solutions
+  of a given goal are equivalent with respect to the relevant equality
+  theories.
 * We now have support for optional module initialisation and finalisation.
 * We now have support for impure module-local mutable variables.
 * We now have support for recognizing switches in which multiple switch arms
   have shared code.
+* We now allow users to control how each argument of a `pragma memo' predicate
+  is tabled.
 * Support for the old-style lambda, mode and pragma syntax has been removed.
 * ':' is now the type qualification operator, not a module qualifier.
 * To ensure soundness, goals in negated contexts using non-local variables
   with dynamic modes (inst "any") must now be marked as impure.
 
-
 Changes to the Mercury standard library:
 * We have added an `injection' module, for reversible maps that are injective.
 
 Changes to the Mercury compiler:
-* None yet.
+* The compiler now generates better error messages for determinism errors
+  involving single-solution contexts.
+* We have significantly improved the compiler's performance on predicates
+  with many clauses.
 
 Portability Improvements:
 * None yet.
@@ -33,9 +42,30 @@
   left the goal at which the term was available as the value of a program
   variable.
 * Users can now see the set of places where two terms differ from each other.
+* The declarative debugger now supports an `undo' command, and allows users to
+  select the search algorithm.
+* The declarative debugger can now exploit information from the "code
+  footprints" of passed and failed test cases to find bugs with fewer
+  questions. We have also added two tools, mslice and mdice, to manipulate
+  files containing such footprints.
+* Subterm dependency tracking in the declarative debugger is now significantly
+  faster.
 
 Changes to the compiler backends:
-* None yet.
+* We have implemented an optimization, --optimize-constructor-last-call,
+  that can turn recursive calls that are followed only by unifications that
+  construct output arguments into tail calls. This can reduce the stack space
+  requirements of the predicates to which it is applicable from linear
+  in the size of the input data to constant.
+* We have implemented an optimization, --tuple, that can replace several
+  arguments that are usually passed to predicates together with a single
+  tuple. This can reduce parameter passing overheads.
+* The compiler can now optimize away the trail manipulation code that would
+  ordinarily be required around if-then-elses if the condition of the
+  if-then-else cannot affect the trail.
+* The compiler now optimizes away any instructions referring to values of dummy
+  types. A type is a dummy type if it has one function symbol of arity zero.
+* Higher order calls are now cheaper on the low level C backend.
 
 Changes to the extras distribution:
 * We've added a library of data structures designed to work with solver types. 
@@ -51,6 +81,32 @@
   See the "Type classes" section of the Mercury Language Reference Manual for
   details.
 
+* A new language construct allows programmers to promise that any given
+  goal is pure or semipure. Given Goal, a goal that uses impure and/or
+  semipure code, the goal
+
+	  promise_pure ( Goal )
+
+  promises that Goal presents a pure interface. Given Goal, a goal that
+  uses impure code, the goal
+
+	  promise_semipure ( Goal )
+
+  promises that Goal presents a semipure interface.
+
+* A new language construct allows programmers to promise that all solutions
+  of a given goal are equivalent with respect to the relevant equality
+  theories. Given Goal, a goal that computes values for two variables,
+  X and Y, the goal
+
+  	promise_equivalent_solutions [X, Y] ( Goal )
+
+  promises that all solutions of Goal are equivalent with respect to the
+  equality theories of the types of X and Y. This means that the
+  promise_equivalent_solutions goal will be det if Goal is cc_multi,
+  and that the promise_equivalent_solutions goal will be semidet if Goal
+  is cc_nondet.
+
 * We have added support for optional module initialisation.  See the 
   "Module initialisation" section of the Mercury Language Reference
   Manual for details.
--------------------------------------------------------------------------
mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the reviews mailing list