[m-dev.] for review: update text files for 0.10
Fergus Henderson
fjh at cs.mu.OZ.AU
Sun Feb 4 14:31:53 AEDT 2001
Estimated hours taken: 2
RELEASE_NOTES:
Update for 0.10.
NEWS:
Add a "Highlights" section at the top.
Also, a minor fix to the documentation of the new back-end:
it's only _nondet_ fact tables that don't work.
NEWS:
HISTORY:
Move the news for 0.9 and 0.9.1 from NEWS to HISTORY.
.README.in:
Update some copyright dates.
Workspace: /mnt/hg/home/hg/fjh/mercury
Index: .README.in
===================================================================
RCS file: /home/mercury1/repository/mercury/.README.in,v
retrieving revision 1.11
diff -u -d -r1.11 .README.in
--- .README.in 1999/12/19 15:54:16 1.11
+++ .README.in 2001/01/03 06:47:47
@@ -2,7 +2,7 @@
Mercury compiler, version @VERSION at .
The Mercury implementation is free software, but it is Copyright
- (C) 1993-1999 The University of Melbourne. It is distributed
+ (C) 1993-2001 The University of Melbourne. It is distributed
under the terms of the GNU General Public License. See the file
COPYING for copying permission.
@@ -22,6 +22,7 @@
Copyright 1988, 1989 Hans-J. Boehm, Alan J. Demers
Copyright (c) 1991-1995 by Xerox Corporation. All rights reserved.
Copyright (c) 1996-1999 by Silicon Graphics. All rights reserved.
+ Copyright (c) 1999 by Hewlett-Packard Company. All rights reserved.
THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY
EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK.
Index: NEWS
===================================================================
RCS file: /home/mercury1/repository/mercury/NEWS,v
retrieving revision 1.184.2.1
diff -u -d -r1.184.2.1 NEWS
--- NEWS 2000/12/23 11:57:21 1.184.2.1
+++ NEWS 2001/02/02 06:27:42
@@ -1,6 +1,36 @@
-NEWS since Mercury release 0.9:
--------------------------------
+NEWS for Mercury release 0.10:
+------------------------------
+
+HIGHLIGHTS
+==========
+
+Changes to the Mercury language:
+* We've added support for explicit type quantification.
+* We've added support for tuples.
+* We've added support for record syntax.
+* Type class methods can now be defined by listing the clauses
+ directly in the instance declaration.
+* The syntax for defining insts and modes has been changed.
+ The old syntax is still accepted but is deprecated.
+
+Changes to the Mercury standard library:
+* We've added several new standard library modules:
+ - `pprint', for pretty printing.
+ - `counter', for managing counters.
+ - `sparse_bitset', an abstract data type for storing sets of integers.
+ - `enum', a typeclass for types which can be converted to and from integers.
+* The `store' module now makes use of existential types.
+Changes to the Mercury implementation:
+* We've implemented a new back-end for the Mercury compiler.
+ This features improved compilation speed, offers better portability,
+ and sometimes generates substantially better code.
+ (The original back-end is still included.)
+* Various improvements to `mtags'.
+
+DETAILED LISTING
+================
+
Changes to the Mercury language:
* We've added support for explicit type quantification.
@@ -181,7 +211,7 @@
- calling copy/2 on higher-order terms
It also does not support the following implemention-specific
features that the old back-end supports:
- - fact tables
+ - fact tables for procedures with determinism `nondet' or `multi'
- the Mercury debugger (mdb)
- the Morphine trace analysis system
- the Aditi deductive database interface
@@ -202,301 +232,3 @@
enhanced features of Vim. The command-line options to `mtags' have
changed and Vim-style tags files are now output as the default (but
will work with Vi as well). Do `mtags --help' for more information.
-
-NEWS for Mercury release 0.9.1:
--------------------------------
-
-This release is primarily a bug-fix release.
-It fixes some bugs with the binary distribution of 0.9,
-stops the compiler accepting some incorrect inst declarations,
-fixes a bug in exception handling and a problem with the source
-distribution where `configure' did the wrong thing on some architectures
-if you ran it twice.
-
-In addition, Morphine has been added to the extras distribution.
-Morphine is a trace analysis system, which allows Mercury programs to be
-debugged and dynamically analyzed using a Prolog interface. You need
-the ECLiPSe Prolog system to use Morphine. See the README file in the
-Morphine directory for more details.
-
-
-NEWS for Mercury release 0.9:
------------------------------
-
-HIGHLIGHTS
-==========
-
-Changes to the Mercury language:
-* The Mercury type system now supports existentially quantified types.
-* We now allow abstract instance declarations.
-* We now support a simple form of user-defined infix operators.
-
-Changes to the Mercury standard library:
-* Exception handling support is now part of the standard library.
-* There are two new standard library modules `time' and `gc'.
-* We've added function versions of many of the predicates in the
- Mercury standard library.
-
-New library packages in the Mercury extras distribution:
-* We've added support for optional lazy evaluation.
-* The extras distribution now includes support for dynamic linking.
-* We've added some bindings to POSIX.3 functionality.
-
-Changes to the Mercury implementation:
-* Mmake, the Mercury make tool, now includes better support for
- installing libraries.
-* The Mercury debugger (mdb) is much improved.
- It now includes support for interactive queries, command-line editing
- and command-line history, display of source line numbers, and
- setting breakpoints on source line numbers.
- The GNU Emacs interface provides a source-linked debugger.
-* We've removed the support for using a Prolog debugger on Mercury programs.
-* We've added support for user-guided type specialization.
-* Numerous bug fixes.
-
-DETAILED LISTING
-================
-
-Changes to the Mercury language:
-********************************
-
-* The Mercury type system now supports existentially quantified types.
-
- Existential types let you create heterogenous collections (e.g. lists
- containing objects of different types). In combination with type
- classes, they allow you to write code in an OOP-like style.
- See the "Existential types" chapter of the Mercury Language Reference
- Manual for details.
-
- Our current implementation still has a couple of important limitations;
- see the "Known bugs and limitations" section of the "Existential types"
- chapter of the Mercury Language Reference Manual.
-
-* We now allow abstract instance declarations.
-
- You can declare in the interface of a module that a type is an
- instance of a particular type class, and provide the definition
- of that instance in the implementation section of that module.
-
-* We now support a simple form of user-defined infix operators.
-
- Terms in the form of x `fun` y are transformed into fun(x, y). `fun`
- is parsed as an infix operator with the highest possible precedence
- and left associativity.
-
-* We've made a small change to the rule for quantification of lambda
- expressions.
-
- The new rule is that all variables in the arguments of lambda
- expressions are treated as locally quantified to that lambda expression.
- For function lambda expressions, variables in the result term
- use the normal quantification rules. See the "Data-terms" section
- of the "Syntax" chapter of the Mercury Language Reference Manual
- for details.
-
- Previously, the exact quantification rule for lambda expressions was
- not documented, but the compiler would locally quantify variables in
- function return values, and it would only locally quantify variables
- occuring at the top level of an argument term, not those occurring in
- subterms. Both of these were rather surprising for functional
- programmers.
-
- It is possible that this change may break some existing code using
- predicate lambda expressions with compound terms as arguments, but we
- expect this to be extremely rare. If it does occur, the compiler
- will issue a warning about variables having overlapping scopes, and
- the work-around is simple: use a fresh variable for the lambda
- predicate argument and unify it with the compound term in the body of
- the lambda expression.
-
-* The old-style syntax for predicate lambda expressions,
- `lambda([<Args>] is <Det>, <Goal>)', is now officially deprecated.
-
- Please use the new syntax-style `(pred([<Args>]) is <Det> :- <Goal>)'
- instead. The compiler still supports the old-style syntax, but
- we plan to eventually drop this support in some future release.
-
-Changes to the Mercury standard library:
-****************************************
-
-* Exception handling support is now part of the standard library.
-
- The module `exception', which was previously part of the "extras"
- distribution, has been moved into the standard library.
- The predicate error/1 now throws an exception rather than just
- terminating execution.
-
- However, many of the operations in the standard library still handle
- errors by aborting execution rather than by throwing exceptions.
-
-* There's a new standard library module `time'.
-
- The `time' module provides an interface to the ANSI/ISO C <time.h>
- functions, and to the POSIX times() function. Thanks to Tomas By
- for contributing the original version of this module.
-
-* There's a new standard library module `gc', for controlling the
- garbage collector.
-
- Currently it contains only one predicate, `garbage_collect',
- which forces a garbage collection. We may add more later.
-
-* We've added some new predicates to the Mercury standard library:
- array__map/3,
- bag__count_value/3,
- std_util__do_while/4.
-
-* We've added function versions of many of the predicates in the
- Mercury standard library.
-
- One small drawback of this change is that it is not completely
- backwards compatible; in certain circumstances, there is a potential
- ambiguity between a function call and a partially applied predicate,
- and for some occurrences of this the compiler may not be able to
- resolve the ambiguity unless the user provides additional type
- declarations (or the like). But such cases should be quite rare,
- and when they do occur the fix is easy, so we thought the clear
- advantages of using a functional syntax were well worth this minor
- glitch in backwards compatibility.
-
-* The following predicates have been replaced by functions with
- the same names, and will be removed in a future release.
-
- The predicate versions were intended for use in programs which needed
- to work in both Prolog and Mercury, but executing Mercury programs using
- Prolog is no longer supported.
-
- float__ceiling_to_int/2,
- float__floor_to_int/2,
- float__round_to_int/2,
- float__truncate_to_int/2,
- float__abs/2,
- float__max/3,
- float__min/3,
- float__pow/3,
- float__hash/2,
- float__max/1,
- float__min/1,
- float__epsilon/1,
- float__radix/1,
- float__mantissa_digits/1,
- float__min_exponent/1,
- float__max_exponent/1.
-
-* The implementations of `int:>>/2' and `int:<</2' have been changed to define
- the results for negative shift counts and shift counts greater than the
- word size.
-
- For efficiency, we also provide the functions `int:unchecked_left_shift/2'
- and `int:unchecked_right_shift/2' that, like the previous implementations
- of `int:>>/2' and `int:<</2', do not check for these cases.
-
-* `int:^/2' and `integer:^/2' have been replaced by `int__xor/2' and
- `integer__xor/2', and will be removed in a future release.
- The operator `^' will be used by record syntax.
-
-New library packages in the Mercury extras distribution:
-********************************************************
-
-* We've added support for optional lazy evaluation.
-
- The extras distribution now includes a new module `lazy',
- which provides support for optional lazy evaluation
- via a type `lazy(T)', with `delay' and `force' operations.
- There's also a `lazy_list' module which uses the `lazy' module.
- See the files in extras/lazy_evaluation for details.
-
-* The extras distribution now includes support for dynamic linking.
-
- The interface is based on the C functions dlopen(), dlsym(), and co.,
- which are supported by most modern Unix systems.
- See the files in extras/dynamic_linking for details.
-
-* We've added some bindings to POSIX.3 functionality.
-
- At this stage it's quite incomplete.
- See the files in extras/posix for details.
-
-Changes to the Mercury implementation:
-**************************************
-
-* Mmake, the Mercury make tool, now includes better support for
- installing libraries.
-
- It's now much easier to build and install libraries in several
- different grades (e.g. for debugging, time profiling, and memory
- profiling) or for more than one architecture.
-
- See the "Supporting multiple grades and architectures" section
- of the "Libraries" chapter of the Mercury User's Guide.
-
-* We've fixed a bug in switch detection.
-
- This change may break some code written for Mercury 0.8. Some
- disjunctions which Mercury 0.8 found to have determinism `det'
- now have determinism `nondet'.
-
- Mercury 0.8 (but not Mercury 0.7) allowed switches where a unification
- to test the switched-on variable against a function symbol occurred after
- the first call in the disjunct. Doing this may remove infinite loops,
- violating the strict sequential semantics (see the "Semantics" chapter
- of the Mercury Language Reference Manual).
-
- To fix switches for which determinism errors are now reported, simply
- reorder the goals in each disjunct so that only unifications occur
- before the test of the switched-on variable.
-
-* The Mercury debugger (mdb) now includes support for interactive queries.
-
- See the "Interactive query commands" subsection of the "Debugger commands"
- section of the "Debugging" chapter of the Mercury User's Guide for details.
-
-* The Mercury debugger (mdb) now optionally supports command-line editing
- and command-line history.
-
- This support uses the GNU Readline library. For the source distribution,
- the Mercury configure script will detect whether readline has been
- installed and will only enable the command-line editing and history
- support if readline has been installed. For the binary distribution,
- if the binary distribution was built with readline, then you will
- need to install GNU readline in order to use the debugger.
-
- For information on where to obtain GNU Readline, see the INSTALL file.
-
-* The Mercury debugger (mdb) now displays source line numbers and allows
- setting breakpoints on source line numbers.
-
- The GNU Emacs interface takes advantage of this to provide a
- source-linked debugger.
-
-* We've removed the support for using a Prolog debugger on Mercury programs.
-
- Now that we have a working Mercury debugger, there's no longer any need to
- use a Prolog debugger for debugging Mercury code.
-
- Normally we would warn at least one or two releases in advance, if
- any feature is to be removed. However, in this case
-
- - it was an implementation feature rather than a language feature;
- - the cost of maintaining the feature was quite high;
- - the feature was already broken is various ways [one being that it
- doesn't work with the latest versions of SICStus Prolog, due to
- those versions removing support for a SICStus Prolog feature
- (save/1), apparently without any advance notice]; and
- - a simple work-around is available if anything breaks as a result
- of the feature being removed.
-
- In the unlikely event that anyone happened to have any makefiles or
- scripts that depended on the support for using Prolog, they can
- install the latest Mercury distribution and still continue to use the
- Prolog support from Mercury 0.8, just by including the `bin'
- directories for both versions in their PATH, with the more recent one
- first, of course.
-
-* We've added support for user-guided type specialization.
-
- See the "Type specialization" section of the "Pragmas" chapter of the
- Mercury Language Reference Manual for details.
-
-* Numerous bug fixes.
-
Index: RELEASE_NOTES
===================================================================
RCS file: /home/mercury1/repository/mercury/RELEASE_NOTES,v
retrieving revision 1.26
diff -u -d -r1.26 RELEASE_NOTES
--- RELEASE_NOTES 2000/01/06 05:00:53 1.26
+++ RELEASE_NOTES 2001/02/04 03:27:36
@@ -1,5 +1,5 @@
-We are pleased to announce the release of version 0.9.1 of the Mercury system.
+We are pleased to announce the release of version 0.10 of the Mercury system.
Mercury is a new general-purpose programming language, designed and
implemented by a small group of researchers at the University of
@@ -142,14 +142,17 @@
extensions, and will work in their absence.
The current Mercury system has been tested extensively on Solaris 2.x,
-IRIX 5.x, OSF/1.1, and Linux, and is also known to run on Ultrix 4.3,
-BSDI 1.1, AIX, and HPUX; it should run without too many changes on
-other Unix variants as well. It also runs on Windows 95 and Windows
-NT, using the Cygwin library. If you do encounter any problems,
-please report them to <mercury-bugs at cs.mu.oz.au> (see the BUGS file).
+OSF/1.1, and Linux, and has in the past been known to run on IRIX 5.x,
+Ultrix 4.3, BSDI 1.1, AIX, and HPUX; it should run without too many
+changes on other Unix variants as well. It also runs on Windows 95
+and Windows NT, using the Cygwin library. If you do encounter any
+problems, please report them to <mercury-bugs at cs.mu.oz.au> (see the
+BUGS file).
-The current source distribution uses gcc as the compiler. We require gcc
-version 2.6.3 or higher. You will also need GNU make version 3.69 or higher.
+We recommend that you use gcc as the C compiler, preferably gcc
+version 2.95.2 or later. If you're using gcc, you will need at least
+version 2.7.2 or higher, except on Solaris, where you need version
+2.95 or higher. You will also need GNU make version 3.69 or higher.
The Mercury distribution is split into three parts.
The "mercury-compiler" distribution contains:
@@ -172,16 +175,25 @@
o some sample Mercury programs
The "mercury-extras" distribution contains some extra libraries for:
- o processing HTML forms using the CGI interface
- o arithmetic on complex and imaginary numbers
- o graphics using Tk and OpenGL
o lazy evaluation
o dynamic linking
- o POSIX interface
o backtrackable (trailed) destructive update
- o an ODBC database interface
+ o concurrency
+ o arithmetic
+ - arithmetic on complex and imaginary numbers
+ - a CLP(R) interface, i.e. constraint solving over real numbers
+ o a set of generic stream type classes
+ o UIs:
+ - graphics using Tk and OpenGL
+ - text interfaces using curses
+ - processing HTML forms using the CGI interface
+ o interfacing:
+ - XML parsing
+ - POSIX interface
+ - an ODBC database interface
+and
o the Morphine trace analysis system
- o a CLP(R) interface, i.e. constraint solving over real numbers
+ o Moose, a parser generator for Mercury.
The "mercury-tests" distribution contains a test suite.
Index: HISTORY
===================================================================
RCS file: /home/mercury1/repository/mercury/HISTORY,v
retrieving revision 1.15
diff -u -d -r1.15 HISTORY
--- HISTORY 2000/05/24 05:18:24 1.15
+++ HISTORY 2001/02/02 06:29:37
@@ -1200,6 +1200,304 @@
distribution for 0.8.
+Mercury 0.9:
+------------
+
+HIGHLIGHTS
+==========
+
+Changes to the Mercury language:
+* The Mercury type system now supports existentially quantified types.
+* We now allow abstract instance declarations.
+* We now support a simple form of user-defined infix operators.
+
+Changes to the Mercury standard library:
+* Exception handling support is now part of the standard library.
+* There are two new standard library modules `time' and `gc'.
+* We've added function versions of many of the predicates in the
+ Mercury standard library.
+
+New library packages in the Mercury extras distribution:
+* We've added support for optional lazy evaluation.
+* The extras distribution now includes support for dynamic linking.
+* We've added some bindings to POSIX.3 functionality.
+
+Changes to the Mercury implementation:
+* Mmake, the Mercury make tool, now includes better support for
+ installing libraries.
+* The Mercury debugger (mdb) is much improved.
+ It now includes support for interactive queries, command-line editing
+ and command-line history, display of source line numbers, and
+ setting breakpoints on source line numbers.
+ The GNU Emacs interface provides a source-linked debugger.
+* We've removed the support for using a Prolog debugger on Mercury programs.
+* We've added support for user-guided type specialization.
+* Numerous bug fixes.
+
+DETAILED LISTING
+================
+
+Changes to the Mercury language:
+********************************
+
+* The Mercury type system now supports existentially quantified types.
+
+ Existential types let you create heterogenous collections (e.g. lists
+ containing objects of different types). In combination with type
+ classes, they allow you to write code in an OOP-like style.
+ See the "Existential types" chapter of the Mercury Language Reference
+ Manual for details.
+
+ Our current implementation still has a couple of important limitations;
+ see the "Known bugs and limitations" section of the "Existential types"
+ chapter of the Mercury Language Reference Manual.
+
+* We now allow abstract instance declarations.
+
+ You can declare in the interface of a module that a type is an
+ instance of a particular type class, and provide the definition
+ of that instance in the implementation section of that module.
+
+* We now support a simple form of user-defined infix operators.
+
+ Terms in the form of x `fun` y are transformed into fun(x, y). `fun`
+ is parsed as an infix operator with the highest possible precedence
+ and left associativity.
+
+* We've made a small change to the rule for quantification of lambda
+ expressions.
+
+ The new rule is that all variables in the arguments of lambda
+ expressions are treated as locally quantified to that lambda expression.
+ For function lambda expressions, variables in the result term
+ use the normal quantification rules. See the "Data-terms" section
+ of the "Syntax" chapter of the Mercury Language Reference Manual
+ for details.
+
+ Previously, the exact quantification rule for lambda expressions was
+ not documented, but the compiler would locally quantify variables in
+ function return values, and it would only locally quantify variables
+ occuring at the top level of an argument term, not those occurring in
+ subterms. Both of these were rather surprising for functional
+ programmers.
+
+ It is possible that this change may break some existing code using
+ predicate lambda expressions with compound terms as arguments, but we
+ expect this to be extremely rare. If it does occur, the compiler
+ will issue a warning about variables having overlapping scopes, and
+ the work-around is simple: use a fresh variable for the lambda
+ predicate argument and unify it with the compound term in the body of
+ the lambda expression.
+
+* The old-style syntax for predicate lambda expressions,
+ `lambda([<Args>] is <Det>, <Goal>)', is now officially deprecated.
+
+ Please use the new syntax-style `(pred([<Args>]) is <Det> :- <Goal>)'
+ instead. The compiler still supports the old-style syntax, but
+ we plan to eventually drop this support in some future release.
+
+Changes to the Mercury standard library:
+****************************************
+
+* Exception handling support is now part of the standard library.
+
+ The module `exception', which was previously part of the "extras"
+ distribution, has been moved into the standard library.
+ The predicate error/1 now throws an exception rather than just
+ terminating execution.
+
+ However, many of the operations in the standard library still handle
+ errors by aborting execution rather than by throwing exceptions.
+
+* There's a new standard library module `time'.
+
+ The `time' module provides an interface to the ANSI/ISO C <time.h>
+ functions, and to the POSIX times() function. Thanks to Tomas By
+ for contributing the original version of this module.
+
+* There's a new standard library module `gc', for controlling the
+ garbage collector.
+
+ Currently it contains only one predicate, `garbage_collect',
+ which forces a garbage collection. We may add more later.
+
+* We've added some new predicates to the Mercury standard library:
+ array__map/3,
+ bag__count_value/3,
+ std_util__do_while/4.
+
+* We've added function versions of many of the predicates in the
+ Mercury standard library.
+
+ One small drawback of this change is that it is not completely
+ backwards compatible; in certain circumstances, there is a potential
+ ambiguity between a function call and a partially applied predicate,
+ and for some occurrences of this the compiler may not be able to
+ resolve the ambiguity unless the user provides additional type
+ declarations (or the like). But such cases should be quite rare,
+ and when they do occur the fix is easy, so we thought the clear
+ advantages of using a functional syntax were well worth this minor
+ glitch in backwards compatibility.
+
+* The following predicates have been replaced by functions with
+ the same names, and will be removed in a future release.
+
+ The predicate versions were intended for use in programs which needed
+ to work in both Prolog and Mercury, but executing Mercury programs using
+ Prolog is no longer supported.
+
+ float__ceiling_to_int/2,
+ float__floor_to_int/2,
+ float__round_to_int/2,
+ float__truncate_to_int/2,
+ float__abs/2,
+ float__max/3,
+ float__min/3,
+ float__pow/3,
+ float__hash/2,
+ float__max/1,
+ float__min/1,
+ float__epsilon/1,
+ float__radix/1,
+ float__mantissa_digits/1,
+ float__min_exponent/1,
+ float__max_exponent/1.
+
+* The implementations of `int:>>/2' and `int:<</2' have been changed to define
+ the results for negative shift counts and shift counts greater than the
+ word size.
+
+ For efficiency, we also provide the functions `int:unchecked_left_shift/2'
+ and `int:unchecked_right_shift/2' that, like the previous implementations
+ of `int:>>/2' and `int:<</2', do not check for these cases.
+
+* `int:^/2' and `integer:^/2' have been replaced by `int__xor/2' and
+ `integer__xor/2', and will be removed in a future release.
+ The operator `^' will be used by record syntax.
+
+New library packages in the Mercury extras distribution:
+********************************************************
+
+* We've added support for optional lazy evaluation.
+
+ The extras distribution now includes a new module `lazy',
+ which provides support for optional lazy evaluation
+ via a type `lazy(T)', with `delay' and `force' operations.
+ There's also a `lazy_list' module which uses the `lazy' module.
+ See the files in extras/lazy_evaluation for details.
+
+* The extras distribution now includes support for dynamic linking.
+
+ The interface is based on the C functions dlopen(), dlsym(), and co.,
+ which are supported by most modern Unix systems.
+ See the files in extras/dynamic_linking for details.
+
+* We've added some bindings to POSIX.3 functionality.
+
+ At this stage it's quite incomplete.
+ See the files in extras/posix for details.
+
+Changes to the Mercury implementation:
+**************************************
+
+* Mmake, the Mercury make tool, now includes better support for
+ installing libraries.
+
+ It's now much easier to build and install libraries in several
+ different grades (e.g. for debugging, time profiling, and memory
+ profiling) or for more than one architecture.
+
+ See the "Supporting multiple grades and architectures" section
+ of the "Libraries" chapter of the Mercury User's Guide.
+
+* We've fixed a bug in switch detection.
+
+ This change may break some code written for Mercury 0.8. Some
+ disjunctions which Mercury 0.8 found to have determinism `det'
+ now have determinism `nondet'.
+
+ Mercury 0.8 (but not Mercury 0.7) allowed switches where a unification
+ to test the switched-on variable against a function symbol occurred after
+ the first call in the disjunct. Doing this may remove infinite loops,
+ violating the strict sequential semantics (see the "Semantics" chapter
+ of the Mercury Language Reference Manual).
+
+ To fix switches for which determinism errors are now reported, simply
+ reorder the goals in each disjunct so that only unifications occur
+ before the test of the switched-on variable.
+
+* The Mercury debugger (mdb) now includes support for interactive queries.
+
+ See the "Interactive query commands" subsection of the "Debugger commands"
+ section of the "Debugging" chapter of the Mercury User's Guide for details.
+
+* The Mercury debugger (mdb) now optionally supports command-line editing
+ and command-line history.
+
+ This support uses the GNU Readline library. For the source distribution,
+ the Mercury configure script will detect whether readline has been
+ installed and will only enable the command-line editing and history
+ support if readline has been installed. For the binary distribution,
+ if the binary distribution was built with readline, then you will
+ need to install GNU readline in order to use the debugger.
+
+ For information on where to obtain GNU Readline, see the INSTALL file.
+
+* The Mercury debugger (mdb) now displays source line numbers and allows
+ setting breakpoints on source line numbers.
+
+ The GNU Emacs interface takes advantage of this to provide a
+ source-linked debugger.
+
+* We've removed the support for using a Prolog debugger on Mercury programs.
+
+ Now that we have a working Mercury debugger, there's no longer any need to
+ use a Prolog debugger for debugging Mercury code.
+
+ Normally we would warn at least one or two releases in advance, if
+ any feature is to be removed. However, in this case
+
+ - it was an implementation feature rather than a language feature;
+ - the cost of maintaining the feature was quite high;
+ - the feature was already broken is various ways [one being that it
+ doesn't work with the latest versions of SICStus Prolog, due to
+ those versions removing support for a SICStus Prolog feature
+ (save/1), apparently without any advance notice]; and
+ - a simple work-around is available if anything breaks as a result
+ of the feature being removed.
+
+ In the unlikely event that anyone happened to have any makefiles or
+ scripts that depended on the support for using Prolog, they can
+ install the latest Mercury distribution and still continue to use the
+ Prolog support from Mercury 0.8, just by including the `bin'
+ directories for both versions in their PATH, with the more recent one
+ first, of course.
+
+* We've added support for user-guided type specialization.
+
+ See the "Type specialization" section of the "Pragmas" chapter of the
+ Mercury Language Reference Manual for details.
+
+* Numerous bug fixes.
+
+
+Mercury 0.9.1:
+-------------
+
+This release is primarily a bug-fix release.
+It fixes some bugs with the binary distribution of 0.9,
+stops the compiler accepting some incorrect inst declarations,
+fixes a bug in exception handling and a problem with the source
+distribution where `configure' did the wrong thing on some architectures
+if you ran it twice.
+
+In addition, Morphine has been added to the extras distribution.
+Morphine is a trace analysis system, which allows Mercury programs to be
+debugged and dynamically analyzed using a Prolog interface. You need
+the ECLiPSe Prolog system to use Morphine. See the README file in the
+Morphine directory for more details.
+
+
MLDS back-end history
---------------------
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
| of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh> | -- the last words of T. S. Garp.
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to: mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions: mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------
More information about the developers
mailing list