[m-rev.] for review: update website for 10.04 release
Julien Fischer
juliensf at csse.unimelb.edu.au
Mon Jul 19 15:12:46 AEST 2010
For review by Ian.
Update the Mercury website for the 10.04 release.
w3/news/newsdb.inc:
Announce the release of Mercury 10.04.
Push 0.13.1 back onto the old release page.
w3/download/include/release.inc:
10.04 is now the stable release.
We haven't tested 10.04 on Solaris 9.
Delete the old list of machines that Mercury "should" also work on.
It's doubtful that it does run on some of those things any more.
We require gcc 3.4 or later; it is not just recommended.
Mention MinGW/MSYS as an alternative to Cygwin.
Delete stuff about the preliminary .NET support - it's out-of-date
and the .NET backend isn't in a usable state anyway.
Update links to tarballs and the respective file sizes.
w3/download/include/release-10.04-bugs.inc:
Known problems with the 10.04 release. This is currently just a pointer
to Mantis. (We might eventually get mantis to generate a summary for us.)
w3/download/include/release-10.04.inc:
w3/download/include/release-10.04-contents.inc:
Add NEWS and contents for 10.04.
w3/download/include/old-release.inc:
Shift the release information for 0.13.1 into the old release page.
(XXX the information for 0.12.X and 0.13.0 seems to have gone missing.)
w3/Makefile.common:
Use php5 rather than php4 - the current version of the latter
appears to be broken on www.mercury.
w3/RELEASE_INFO:
Update from version 0.13.1.
w3/download/release-10.04.php3:
w3/download/release-10.04-bugs.php3:
w3/download/release-10.04-contents.php3:
New files for the 10.04 release.
w3/download/Makefile:
Process the new files with php.
Julien.
Index: Makefile.common
===================================================================
RCS file: /home/mercury/mercury1/repository/w3/Makefile.common,v
retrieving revision 1.22
diff -u -r1.22 Makefile.common
--- Makefile.common 28 Jul 2009 03:53:18 -0000 1.22
+++ Makefile.common 19 Jul 2010 04:59:56 -0000
@@ -5,14 +5,14 @@
#-----------------------------------------------------------------------------#
# NOTE: Even though it says PHP3 all over the place we are actually now using
-# php version 4. (The original version of this website used 3 and it's
+# php version 5. (The original version of this website used 3 and it's
# currently hardcoded all over the place, e.g. the .php3 file extensions.)
ifndef PHP3
- PHP3=/usr/lib/cgi-bin/php4 -q
+ PHP3=/usr/lib/cgi-bin/php5 -q
endif
ifndef WWW_DOMAIN
- WWW_DOMAIN="www.mercury.cs.mu.oz.au"
+ WWW_DOMAIN="www.mercury.csse.unimelb.edu.au"
endif
BETA_WEBDIR="$(INSTALL_WEBDIR)/download/files/beta-releases/rotd"
ifndef BETA_FTPDIR
Index: RELEASE_INFO
===================================================================
RCS file: /home/mercury/mercury1/repository/w3/RELEASE_INFO,v
retrieving revision 1.12
diff -u -r1.12 RELEASE_INFO
--- RELEASE_INFO 3 Dec 2006 13:38:40 -0000 1.12
+++ RELEASE_INFO 16 Jul 2010 15:15:44 -0000
@@ -1,5 +1,5 @@
# A descriptive name for the release. See mercury/VERSION
-RELEASE_VERSION=0.13.1
+RELEASE_VERSION=10.04
# A name for the next beta-release, e.g. 0.12.2-beta
# Note: only set this variable to a non-empty value if a source distribution
@@ -11,4 +11,4 @@
# We use the release *branch* tag, rather than the release tag,
# so that it will pick up any fixes to the documentation
# that have occurred after the release was made.
-RELEASE_TAG=version-0_13-branch
+RELEASE_TAG=version-10_04-branch
Index: download/Makefile
===================================================================
RCS file: /home/mercury/mercury1/repository/w3/download/Makefile,v
retrieving revision 1.13
diff -u -r1.13 Makefile
--- download/Makefile 15 Sep 2006 04:58:24 -0000 1.13
+++ download/Makefile 19 Jul 2010 04:54:17 -0000
@@ -19,6 +19,7 @@
release-0.11.html \
release-0.12.html \
release-0.13.html \
+ release-10.04.html \
release-0.3-bugs.html \
release-0.4-bugs.html \
release-0.5-bugs.html \
@@ -31,6 +32,7 @@
release-0.11-bugs.html \
release-0.12-bugs.html \
release-0.13-bugs.html \
+ release-10.04-bugs.html \
release-0.3-contents.html \
release-0.4-contents.html \
release-0.5-contents.html \
@@ -42,9 +44,10 @@
release-0.11-contents.html \
release-0.12-contents.html \
release-0.13-contents.html \
+ release-10.04-contents.html \
rotd.html
-current-release-bugs.html: release-0.13-bugs.inc
+current-release-bugs.html: release-10.04-bugs.inc
install: local_install
Index: download/release-10.04-bugs.php3
===================================================================
RCS file: download/release-10.04-bugs.php3
diff -N download/release-10.04-bugs.php3
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ download/release-10.04-bugs.php3 19 Jul 2010 04:53:07 -0000
@@ -0,0 +1,11 @@
+<HTML>
+<?
+ $menu="Download";
+ $submenu="Current Release";
+ $title="Release 10.04 known problems";
+ $dir="download";
+ $root="..";
+ $include="release-10.04-bugs.inc";
+ include "$root/include/template.inc"
+?>
+</HTML>
Index: download/release-10.04-contents.php3
===================================================================
RCS file: download/release-10.04-contents.php3
diff -N download/release-10.04-contents.php3
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ download/release-10.04-contents.php3 16 Jul 2010 15:20:35 -0000
@@ -0,0 +1,11 @@
+<HTML>
+<?
+ $menu="Download";
+ $submenu="Current Release";
+ $title="Release 10.04 Contents";
+ $dir="download";
+ $root="..";
+ $include="release-10.04-contents.inc";
+ include "$root/include/template.inc"
+?>
+</HTML>
Index: download/release-10.04.php3
===================================================================
RCS file: download/release-10.04.php3
diff -N download/release-10.04.php3
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ download/release-10.04.php3 16 Jul 2010 15:17:09 -0000
@@ -0,0 +1,11 @@
+<HTML>
+<?
+ $menu="Download";
+ $submenu="Current Release";
+ $title="Release 10.04 Notes";
+ $dir="download";
+ $root="..";
+ $include="release-10.04.inc";
+ include "$root/include/template.inc"
+?>
+</HTML>
Index: download/include/old-release.inc
===================================================================
RCS file: /home/mercury/mercury1/repository/w3/download/include/old-release.inc,v
retrieving revision 1.15
diff -u -r1.15 old-release.inc
--- download/include/old-release.inc 9 Sep 2005 07:32:09 -0000 1.15
+++ download/include/old-release.inc 18 Jul 2010 15:38:39 -0000
@@ -64,6 +64,172 @@
Please note, however, that the source and binaries for these
releases are often no longer available from the FTP site.
+<h2>Release 0.13.1</h2>
+
+Mercury 0.13.1 was released on December 1, 2006.
+
+<h3>Information</h3>
+
+<ul>
+<li> <a href = "release-0.13.html">
+ Release notes for 0.13.1
+ </a>
+<li> <a href = "release-0.13-contents.html">
+ Contents of release 0.13.1 distribution
+ </a>
+<li> <a href = "release-0.13-bugs.html">
+ Known problems with release 0.13.1
+ </a>
+<li> <a href = "limitations.html">
+ Limitations of the current release.
+ </a>
+</ul>
+
+<h3>Supported Platforms</h3>
+
+The 0.13.1 release is known to work on the following platforms:
+
+<p>
+
+<ul>
+ <li> x86 machines running Debian Linux
+ <li> x86 machines running Microsoft Windows XP
+ <li> x86 machines running Solaris 9 (SunOS 5.9)
+ <li> x86_64 machines running Debian Linux
+ <li> Apple PowerPC machines running Mac OS 10.3 and above
+</ul>
+
+<p>
+
+Mercury should also work on the following platforms, although we have
+not tested the latest release on these:
+
+<p>
+
+<ul>
+ <li> x86 machines running other versions of Microsoft Windows
+ (95, 98, 98SE, ME, NT, 2000)
+ <li> x86 machines running other versions of Linux
+ (however, there are some known problems with the version of GNU C
+ that shipped with Red Hat Linux 7.0)
+ <li> x86 machines running FreeBSD 3.0
+ <li> x86 machines running other BSD Unix systems
+ <li> x86 machines running Solaris 8 (SunOS 5.8)
+ <li> PowerPC machines running Linux
+ <li> Sun SPARC machines running SunOS 4.x and 5.x
+ <li> HP PA machines running HPUX
+ <li> IBM RS/6000 machines running AIX
+ <li> DEC Mips machines running ULTRIX
+ <li> DEC Alpha machines running OSF/1 (Digital Unix)
+ <li> DEC Alpha machines running Linux
+ <li> SGI Mips machines running IRIX 5.x
+</ul>
+
+<p>
+
+It should be pretty easy to port to any sufficiently Unix-like system.
+
+<h3>What do I need?</h3>
+
+<ul>
+<li> For Unix systems, you will need the following:<p>
+ <ol>
+ <li> <a href="http://gcc.gnu.org">GNU C (gcc)</a>
+ <p>
+ We recommend GCC 3.4.x.
+ <p>
+ GCC 3.0, 3.3.1 and 4.0 will NOT work.
+ They have bugs that cause
+ internal compiler errors when compiling the C code generated by the
+ Mercury compiler.
+ <p>
+ GCC 4.2 - 4.4 will NOT work either. We are working on it.
+ <p>
+ GCC 4.1 works for the most part, but there is a known problem
+ so we don't recommend that either.
+ <p>
+ Avoid GCC 2.96 (distributed with Red Hat Linux 7.x) and
+ other unofficial releases of GCC. Also avoid versions of GCC less
+ than GCC 2.95.X.
+ <p>
+ It is also possible to use other C compilers, such as
+ <a href="http://www.cs.princeton.edu/software/lcc/">lcc</a>,
+ but we don't recommend that.
+ <p>
+ <li> GNU make (version 3.69 or higher).
+ </ol>
+
+ <p>
+
+<li> For Windows,<p>
+ <ol>
+ <li> You will need <a href=http://www.cygwin.com/>Cygwin</a>,
+ which you can download
+ <a href=http://www.cygwin.com/setup.exe>here</a>.
+ Cygwin includes GNU C and GNU Make.<p>
+ <li> You can optionally use
+ <a href="http://msdn.microsoft.com/visualc/default.asp">
+ Microsoft Visual C</a> rather than GNU C.<p>
+ <li> If you want to take a look at our preliminary support for .NET,
+ you also need
+ <ol>
+ <li> the Microsoft .NET SDK version 1, available from
+ <a href="http://msdn.microsoft.com/netframework/">
+ MSDN</a>.
+ If you are an MSDN Universal subscriber you can
+ also order CDs as part of your subscription.
+ <li> A Windows system suitable for development with
+ Microsoft .NET, such as Windows XP.
+ </ol>
+ </ol>
+</ul>
+
+<h3><a name="source">Source Distribution</a></h3>
+
+The main "mercury-compiler" source distribution is about 15 Mb.
+This includes the compiler, standard library,
+debugger, profilers, and other tools.
+(Note that this does <em>not</em> include all the sources needed to build
+the <a href="<?echo $root?>/download/gcc-backend.html">
+native-code back-end</a>; for that you also need the
+"mercury-gcc" and "gcc" distributions.
+See <a href="<?echo $root?>/download/gcc-backend.html">here</a>
+for details.)
+
+<p>
+
+There is also a "mercury-extras" distribution which contains a number
+of useful additional libraries. This is distributed separately,
+mainly for copyright reasons (some of the additional libraries do
+not meet the Debian Free Software Guidelines).
+We recommend that everyone who downloads the "compiler"
+distribution should also download the "extras" distribution.
+
+<p>
+
+Finally there is also a "mercury-tests" distribution which contains our
+test suite. This may be useful if you are modifying the compiler,
+or porting it to a new system.
+
+<dl>
+<dt> Compiler (15 Mb)
+<dd>
+<? links_to_file("mercury-compiler-0.13.1.tar.gz", "yes") ?>
+<p>
+
+<dt> Extras (750 kb)
+<dd>
+<? links_to_file("mercury-extras-0.13.1.tar.gz", "no") ?>
+<p>
+
+<dt> Tests (914 kb)
+<dd>
+<? links_to_file("mercury-tests-0.13.1.tar.gz", "no") ?>
+</dl>
+
+
+
+
<h2>Release 0.11</h2>
Mercury 0.11.0 was released on Dec 24, 2002.
Index: download/include/release-10.04-bugs.inc
===================================================================
RCS file: download/include/release-10.04-bugs.inc
diff -N download/include/release-10.04-bugs.inc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ download/include/release-10.04-bugs.inc 19 Jul 2010 04:57:11 -0000
@@ -0,0 +1,6 @@
+<h2>Release 10.04 - Known Problems</h2>
+
+A list of known bugs may be found in our
+<a href="http://bugs.mercury.csse.unimelb.edu.au">Bug Database</a>.
+
+<hr>
Index: download/include/release-10.04-contents.inc
===================================================================
RCS file: download/include/release-10.04-contents.inc
diff -N download/include/release-10.04-contents.inc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ download/include/release-10.04-contents.inc 16 Jul 2010 15:23:56 -0000
@@ -0,0 +1,58 @@
+<h2>Release 10.04 - Contents</h2>
+
+The Mercury distribution is split into three parts.
+The "mercury-compiler" distribution contains:
+
+<ul>
+ <li>an autoconfiguration script
+ <li>the Mercury source for the compiler
+ <li>the Mercury source for the standard library
+ <li>the automatically generated C source for the compiler
+ and the standard library
+ <li>the runtime system (written in C)
+ <li>Hans Boehm's conservative garbage collector for C
+ <li>an integrated procedural and declarative debugger
+ <li>some profilers
+ <li>some utility programs, including a make front-end for Mercury
+ with automatic dependency recomputation
+ <li>the Mercury language reference manual
+ <li>the Mercury library reference manual
+ <li>the Mercury user's guide
+ <li>the Mercury frequently asked questions list
+ <li>the Prolog to Mercury transition guide
+ <li>some sample Mercury programs
+</ul>
+
+<p>
+
+The "mercury-extras" distribution contains some extra libraries for:
+
+<ul>
+ <li>lazy evaluation
+ <li>dynamic linking
+ <li>backtrackable (trailed) destructive update
+ <li>arithmetic
+ <ul>
+ <li>arithmetic on complex and imaginary numbers
+ </ul>
+ <li>an autotesting tool similar to Haskell's QuickCheck
+ <li>UIs:
+ <ul>
+ <li>graphics using Tk, OpenGL/GLUT, Xlib or Allegro.
+ <li>text interfaces using curses
+ <li>processing HTML forms using the CGI interface
+ </ul>
+ <li>interfacing:
+ <ul>
+ <li>XML parsing
+ <li>POSIX interface
+ <li>an ODBC database interface
+ </ul>
+ <li>the Morphine trace analysis system
+ <li>two curses bindings, one more complete than the other
+ <li>a general purpose lexer
+ <li>Moose, a parser generator for Mercury.
+ <li>quickcheck, an autotesting tool similar to Haskell's QuickCheck.
+</ul>
+
+The "mercury-tests" distribution contains a test suite.
Index: download/include/release-10.04.inc
===================================================================
RCS file: download/include/release-10.04.inc
diff -N download/include/release-10.04.inc
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ download/include/release-10.04.inc 19 Jul 2010 03:44:57 -0000
@@ -0,0 +1,720 @@
+<h2>New in relase 10.04 of the Mercury distribution</h2>
+
+<h3>HIGHLIGHTS</h3>
+
+Changes to the release numbering:
+<p>
+Stable releases are now numbered according to the year and month the
+release was made, e.g. 10.04 is the release made in April 2010.
+Previously the release naming scheme was 0.x where x was the x'th
+major release of the system.
+
+<p>
+
+Changes to the Mercury language:
+
+<ul>
+<li>We have removed support for automatic initialisation of solver variables.
+
+<li>A new pragma, foreign_enum, allows the constructors of Mercury
+ enumeration types to be assigned values from foreign language code.
+
+<li>A new pragma, foreign_export_enum, allows the constructors of Mercury
+ enumeration types to be referred to in foreign language code.
+
+<li>Some of the restrictions on typeclass instances have been relaxed, allowing
+ support for polymorphic instances with functional dependencies.
+
+<li>We now support trace goals, which can be used to print progress messages or
+ log messages in the middle of arbitrary computations.
+
+<li>Mutables can now be marked as constant, which is useful when working with
+ constant data structures that cannot be conveniently represented as constant
+ terms.
+
+<li>Mutables can now be marked as thread-local, which can take on different
+ values for each thread.
+
+<li>promise_equivalent_solutions scopes (et al.) must now also list variables
+ with inst any that may be constrained by the goal.
+
+<li>We now support !X ^ field_list := Term as a synonym for
+ !:X = !.X ^ field_list := Term.
+
+<li>We now support higher-order `any' insts.
+
+<li>We now support "implementation-defined literals", such as `$file', `$line',
+ `$pred', which are useful for producing better run-time error messages.
+
+<li>We now support currying of multi-moded predicates or functions when the
+ mode to curry can be determined from the insts of the higher-order
+ arguments.
+
+<li>We now support `try' goals for catching exceptions.
+</ul>
+
+<p>
+
+Changes to the Mercury standard library:
+
+<ul>
+<li>New predicates have been added to the assoc_list module, these are
+ map_keys_only/3, map_values_only/3 and map_values/3. They complement the
+ functions of the same name.
+
+<li>A new module, parsing_utils, has been added to provide support for
+ implementing recursive descent parsers.
+
+<li>The string.to_int family of predicates now fails (or throws an exception
+ for the det_ versions) on base 10 numbers that do not fit in the range
+ [int.min_int+1, int.max_int]. Numbers outside this range lead to overflow.
+ Numbers not in base 10 are assumed to denote bit patterns and are not
+ checked for overflow.
+
+<li>A module for handling directed graphs, digraph.m, has been added. This
+ supersedes relation.m and svrelation.m in that has a more consistent
+ interface (which supports state variable notation), provides more type
+ safety by using phantom types, and has a number of efficiency improvements.
+ Further use of relation.m and svrelation.m is deprecated.
+
+<li>An improved pretty printer module, pretty_printer.m, has been added. This
+ supersedes pprint.m in that it is more economical, produces better
+ quality output (line overruns are completely avoided wherever possible),
+ has better control over the amount of output produced, and supports
+ user-specifiable formatting for arbitrary types. Further use of pprint is
+ deprecated.
+
+<li>We have added extra modes to many of the fold style predicates in the
+ library in order to better support (mostly-)unique accumulators.
+
+<li>The foldr family of functions and predicates has been added to the map
+ and tree234 modules. We have also extended the arities for map_foldl
+ to map_foldl3 in both modules, and added versions of both map_foldl*
+ and just plain foldl* in which the higher order argument does not take
+ the key as an argument.
+
+<li>The following functions have been added to the integer module:
+ <ul>
+ <li>integer.from_base_string/2
+ <li>integer.det_from_base_string/2
+ </ul>
+
+<li>We have added a new builtin predicate, unsafe_cast_any_to_ground/1, that
+ can be useful when manipulating polymorphic values that have inst any.
+
+<li>Predicates and functions which create strings from lists of characters
+ now fail, throw an exception or return an error value if a null character
+ is found. Unexpected null characters in strings are a potential source of
+ security vulnerabilities.
+
+<li>Predicates string.semidet_from_char_list/2 and
+ string.semidet_from_rev_char_list/2 have been added. These fail rather
+ than throwing an exception if a null character is found.
+
+<li>We have added string.remove_suffix_det, a version of string.remove_suffix
+ that throws an exception if the suffix is not there.
+
+<li>string.float_to_string now trims redundant trailing zeroes (although
+ at least one fractional digit is always present). This change affects the
+ output from the debugger and io.print etc.
+
+<li>The globals field in the I/O state is no longer unique. The modes of
+ the access predicates, io.set_globals/3 and io.get_globals/3 have been
+ changed accordingly.
+
+<li>We have added io.update_globals/3 which allows for atomic updates to
+ the globals field in the I/O state in the presence of multiple threads.
+
+<li>We have moved some of the concurrency primitives out of the extras
+ distribution and into a new standard library module called `thread',
+ and its submodules `thread.channel', `thread.mvar', and `thread.semaphore'.
+ The predicates `thread.can_spawn', `thread.channel.try_take'
+ and `thread.mvar.try_take' have also been added.
+
+<li>Processes no longer terminate until all threads have finished. Previously
+ a process would terminate as soon as the original thread finished.
+
+<li>The following predicate has been added to the set module:
+ <ul>
+ <li>set.filter_map/3
+ </ul>
+
+<li> The following predicates have been added to the array modules:
+ <ul>
+ <li>array.fold/4
+ <li>array.foldl2/6
+ <li>version_array.foldl/4
+ </ul>
+
+<li>The following predicates have been added to the list module:
+ <ul>
+ <li>list.filter_map_foldl/5
+ <li>list.map_corresponding/4
+ <li>list.map2_foldl3/10
+ <li>list.map_corresponding_foldl/6
+ <li>list.map_corresponding_foldl2/8
+ <li>list.map_corresponding_foldl3/10
+ <li>list.map_corresponding3_foldl/7
+ <li>list.negated_filter/3
+ <li>list.foldl3_corresponding/9
+ <li>list.foldl_corresponding3/6
+ <li>list.foldl2_corresponding3/8
+ <li>list.foldl3_corresponding3/10
+ <li>list.foldl4_corresponding3/12
+ <li>list.split_upto/4
+ <li>list.contains/2
+ <li>list.find_index_of_match/4
+ <li>list.find_first_match/3
+ </ul>
+<p>
+ We have also added versions of list.foldl/4 and list.foldr/4 that have
+ determinism multi.
+
+<li>The following functions have been added to the string module:
+ <ul>
+ <li>string.split_at_separator/2
+ <li>string.split_at_char/2
+ <li>string.split_at_string/2
+ <li>string.remove_suffix_if_present/2
+ <li>string.remove_prefix_if_present/2
+ <li>string.is_all_digits/1
+ <li>string.all_match/2
+ <li>string.remove_prefix/3
+ </ul>
+
+<li>The following functions and predicates have been added to the bag module:
+ <ul>
+ <li>bag.count/1
+ <li>bag.count_unique/1
+ <li>bag.member/2
+ <li>bag.member/3
+ </ul>
+
+<li>A unique mode has been added to cord.foldl_pred/4
+
+<li>The following function has been added to the pqueue module
+ <ul>
+ <li>pqueue.length/1
+ </ul>
+
+<li>The following predicate has been added to the maybe module
+ <ul>
+ <li>maybe_is_yes/2
+ </ul>
+
+<li>We have changed the interface of the ops module to make lookups of operators
+ more efficient.
+
+<li>We have added string.c_pointer_to_string/{1,2} and string.from_c_pointer/1
+ to convert c_pointers to a human readable form.
+
+<li>The bitmap module has been modified and extended to make it more suitable
+ for use as a general container for binary data. See runtime/mercury_types.h
+ for the new definition of the bitmap type for interoperability with C code.
+<p>
+ Bitmaps now have fields `bit', `bits' and `byte' for getting and
+ setting a single bit, a group of bits (up to machine word size),
+ and an aligned eight bit byte respectively.
+<p>
+ bitmap.get/2 has been deprecated; use bitmap.bit/2 instead.
+<p>
+ There is a new type bitmap.slice/0 to represent segments of bitmaps.
+<p>
+ There are new functions to move data around in bulk:
+ <ul>
+ <li>copy_bits/5
+ <li>copy_bits_in_bitmap/4
+ <li>copy_bytes/5
+ <li>copy_bytes_in_bitmap/4
+ </ul>
+<p>
+ Other added functions include:
+ <ul>
+ <li>shrink_without_copying/2
+ <li>append_list/1
+ <li>to_byte_string/1
+ </ul>
+
+<li>The operations in bitmap.m and version_bitmap.m which treat bitmaps
+ as sets have been modified to throw an exception when the input
+ bitmaps are not the same size. Before this change bitmap.intersect/2
+ computed the wrong answer when the input bitmaps were of different sizes.
+
+<li>bitmap.difference/2 and version_bitmap.difference/2 now compute difference,
+ not xor. bitmap.xor/2 and version_bitmap.xor/2 have been added.
+
+<li>bitmap.to_string(BM) now returns "<0:>" for an empty bitmap BM.
+ Previously it returned "<0:00>".
+
+<li>Version bitmaps now have a field `bit' for getting and setting a single bit.
+
+ version_bitmap.get/2 has been deprecated; use version_bitmap.bit/2 instead.
+
+<li>The io module now contains predicates io.read_bitmap/{4,5,6,7},
+ io.write_bitmap{3,4,5,6} and io.read_file_as_bitmap/{3,4}.
+ io.write_bytes/{3,4} are now marked as obsolete. Note that the
+ interface of io.read_bitmap/* has changed since the first release
+ of the day implementation.
+
+<li>There are new modules bit_buffer, bit_buffer.write and bit_buffer.read
+ which give a bit-oriented interface to byte-oriented streams.
+
+<li>There is a new typeclass stream.bulk_reader/5. Instances of
+ stream.bulk_reader/5 support reading of multiple items at once
+ into a container such as an array or a bitmap.
+
+<li>Comparison of version_arrays is now the same as for arrays.
+
+<li>We have added predicates char.is_hex_digit/2 and char.int_to_hex_char/2.
+
+<li>We have changed term.variable so that it records the context where
+ the variable was used. This required the backward mode of
+ term.var_list_to_term_list to be removed. The backwards mode is
+ now accessed via term.term_list_to_var_list.
+
+ There is a new function, get_term_context, to return the context of any term.
+
+<li>We have renamed some library predicates whose names were ambiguous.
+
+<li>The type software_error/0 has been moved from the require module into
+ the exception module.
+
+<li>construct.num_functors/1 now fails rather than returning -1 for types
+ with no functors. There is a new function construct.det_num_functors/1
+ which aborts for types which do not have functors.
+
+<li>We have added predicates deconstruct.functor_number/3 and
+ deconstruct.deconstruct_du/4 which return functor numbers suitable
+ for use by construct.construct, rather than functor strings.
+
+<li>We have added a function construct.get_functor_lex/2 which converts
+ an ordinal functor number into a lexicographic functor number.
+
+<li>A new module string.builder has been added to the standard library.
+ The new module provides instances of the stream typeclasses that can
+ be used to build up a string using char and string writers.
+
+<li>We have added the types `string.line' and `string.text_file' and made
+ input streams instances of stream.reader/4 with those unit types.
+ This means stream.get/4 can be used to efficiently read lines
+ and files as string.
+
+<li>We have added a predicate io.remove_file_recursively/4
+ which can remove non-empty directories.
+
+<li>We have added the predicates `dir.current_directory',
+ `dir.relative_path_name_from_components'.
+
+<li>We have added the predicates rev_list, split_last, get_first, get_last,
+ filter, foldl_pred, foldr_pred, map_foldl, map_foldl[23], cord_list_to_cord
+ and cord_list_to_list to the cord module.
+
+<li>We have added two predicates that are useful for custom term construction:
+ <ul>
+ <li>construct.find_functor/5
+ <li>type_desc.same_type/2
+ </ul>
+
+<li>We have added new predicates to the tree234 and map modules for constructing
+ 2-3-4 trees and maps directly (without the creation of intermediate trees)
+ from sorted lists:
+ <ul>
+ <li>tree234.from_sorted_assoc_list/2
+ <li>tree234.from_rev_sorted_assoc_list/2
+ <li>map.from_rev_sorted_assoc_list/2
+ </ul>
+ map.from_sorted_assoc_list now also constructs the tree directly, so now
+ it requires its input list to be duplicate-free.
+
+<li>We have added tree234.map_values_only and map.map_values_only, which are
+ versions of tree234.map_values and map.map_values which do not give the
+ higher order argument the key associated with the value being transformed.
+
+<li>We have replaced the hash_table and version_hash_table implementations
+ with separate chaining schemes. Consequently delete works, and double
+ hashing predicates are not required.
+
+<li>We have added optional synchronisation to the version_array and
+ version_hash_table implementations. They are now thread safe, but slower,
+ by default.
+
+<li>We have added a calendar module to the standard library. This module
+ contains utilities for working with the Gregorian calendar.
+</ul>
+
+<p>
+
+Changes to the Mercury compiler:
+
+<ul>
+
+<li>The Java backend has been substantially improved and now supports
+ all the core features of the language and most of the standard library.
+ The Java backend is roughly three times slower (after allowing for JIT)
+ than the C backends.
+<p>
+ The Java backend improvements were contributed by Mission Critical IT
+ <http://www.missioncriticalit.com/>.
+
+<li>Interfacing with Mercury code from Java is also improved:
+ <ul>
+ <li>Polymorphic Mercury types are now translated to Java classes
+ with generics, allowing for greater type safety in the Java code.
+ <li>Exported Mercury procedures retain their argument order in the
+ corresponding Java versions (output arguments are handled with a new
+ Ref Java type).
+ </ul>
+
+<li>We have added support for trail segments, which allow programs to grow
+ the trail on demand.
+
+<li>Shared libraries are now used by default on Linux/x86 systems.
+
+<li>Support for the reserve tag grades has been removed.
+
+<li>We have added an Erlang back-end.
+ <p>
+ The Erlang back-end was contributed by Mission Critical IT
+ <http://www.missioncriticalit.com/>.
+
+<li>In parallel grades we now support thread-local trailing.
+
+<li>The compiler now issues a warning when an inst declaration is not
+ consistent with any of the types in scope.
+
+<li>We have added support for simultaneous execution of jobs with `mmc --make'.
+
+<li>We have added support for `mmc --make' to recompile modules if options have
+ changed.
+
+<li>We have added an option for `mmc --make' to compile more recently modified
+ source files first.
+
+<li>We have added support for stack segments, which allows programs to grow
+ stacks on demand.
+
+<li>We have made it easier to use single-precision floats, which do not need
+ to be boxed on 32-bit machines.
+
+<li>A new option, `--generate-standalone-interface', simplifies the task
+ of calling Mercury procedures from programs written in other languages.
+
+<li>We have added new option, `--inform-ite-instead-of-switch'. If this is
+ enabled, the compiler will generate informational messages about
+ if-then-elses that it thinks should be converted to switches for the
+ sake of program reliability.
+
+<li>We have removed support for Managed C++ as a foreign language for the IL
+ backend.
+
+<li>The width of error message lines can be adjusted with a new option,
+ `--max-error-line-width'.
+
+<li>Generation of 64-bit code on Mac OS X is now supported,
+ i.e. the x86_64*apple*darwin* architecture is now supported.
+
+<li>We have added another debugger, called the source-to-source debugger (ssdb).
+ It is more limited than mdb, but it does work with backends other than the
+ low-level C backend, e.g. the Java backend.
+
+</ul>
+
+<p>
+
+Changes to the Mercury deep profiler:
+
+<ul>
+<li>The deep profiler now supports measuring a proxy for time: a counter that
+ is incremented at each call. Since calls happen a lot more frequently than
+ clock interrupts, this can yield useful profiles for shorter-running
+ programs.
+</ul>
+
+<p>
+
+Changes to the samples directory:
+
+<ul>
+<li> The samples directory now includes an example of how to implement a
+ solver type.
+</ul>
+
+<p>
+
+Changes to the extras distribution:
+
+<ul>
+
+<li>The extras distribution now includes a binding to the Allegro and
+ AllegroGL game programming libraries.
+
+<li>`mtogl', the Mercury binding to the Tk widget `togl' has been removed
+ from the distribution.
+</ul>
+
+<p>
+
+Changes to the Mercury debugger:
+
+<ul>
+
+<li> A `track' mdb command has been added.
+
+<li> The `dd' command now accepts a `--reset-knowledge-base' option.
+
+<li> You can now put breakpoints on individual events inside procedures.
+
+<li> mdb now ignores lines beginning with a `#' character
+ in sourced files. This is useful for commenting mdb scripts.
+</ul>
+
+<p>
+
+<h3>DETAILED LISTING</h3>
+
+Changes to the Mercury language:
+
+<ul>
+
+<li>Support for the automatic initialisation of solver variables has been
+ removed because it was source of confusing errors and was not used in
+ practice anyway.
+ <p>
+ A consequence of this is that solver types are now properly polymorphic,
+ i.e. types like `foo(bar)' where:
+<pre>
+ :- solver type foo(T).
+ :- solver type bar.
+</pre>
+ are now supported.
+
+<li>The new pragma, foreign_enum, can be used to establish a
+ mapping between values in a foreign language and the constructors
+ of a Mercury enumeration type. This can be useful when writing
+ Mercury bindings to foreign code libraries.
+ <p>
+ For example,
+<pre>
+ :- type matrix_mode
+ ---> texture
+ ; modelview
+ ; projection.
+
+ :- pragma foreign_enum("C", matrix_mode/0, [
+ texture - "GL_TEXTURE"
+ modelview - "GL_MODELVIEW"
+ projection - "GL_PROJECTION"
+ ]).
+</pre>
+ When passed to C foreign clauses, values of type matrix_mode/0 will have
+ the corresponding C value specified by the foreign_enum pragma.
+
+<li>The new pragma, foreign_export_enum, can be used to establish a
+ mapping between the constructors of a Mercury enumeration type and
+ a symbolic name for values of that type in the foreign language.
+<p>
+ For example, given the type
+<pre>
+ :- type status ---> ok ; error.
+</pre>
+ the declaration
+<pre>
+ :- pragma foreign_export_enum("C", status/0, [prefix("STATUS_")]).
+</pre>
+ allows code in C foreign_proc and foreign_code pragma bodies to refer
+ to the value `ok' via the name `STATUS_ok' and to the value `error'
+ via the name `STATUS_error'.
+
+<li>The restriction on typeclass instances that all type variables appearing in
+ the range of a functional dependency must be monomorphic has been relaxed.
+ We now support cases where the type variables in the range are determined
+ by the type variables in the domain, using the functional dependency
+ information from any instance constraints.
+<p>
+ For example, given the typeclass
+<pre>
+ :- typeclass foo(A, B) <= (A -> B).
+</pre>
+ the following instance is now valid:
+<pre>
+ :- instance foo(list(S), list(T)) <= foo(S, T).
+</pre>
+ since the variable T, in the range, is determined from the variable S by the
+ functional dependencies on the foo(S, T) constraint.
+
+<li>A new language construct allows programmers to include debugging and/or
+ logging code in the middle of arbitrary computations. Trace goals
+ may have both compile time and run time conditions placed on their execution.
+ However, if they are enabled, then they can perform I/O (even if the
+ surrounding code can't); they can also access the values of mutables.
+<p>
+ Their capabilities, syntax and intended use are shown by the following
+ example.
+<pre>
+ :- mutable(logging_level, int, 0, ground, []).
+
+ :- pred time_consuming_task(data::in, result::out) is det.
+
+ time_consuming_task(In, Out) :-
+ trace [
+ compile_time(flag("do_logging") or grade(debug)),
+ run_time(env("VERBOSE")),
+ io(!IO),
+ state(logging_level, !LoggingLevel)
+ ] (
+ io.write_string("Time_consuming_task start\n", !IO),
+ ( !.LoggingLevel > 1 ->
+ io.write_string("Input is ", !IO),
+ io.write(In, !IO),
+ io.nl(!IO)
+ ;
+ true
+ )
+ ),
+ ...
+ % perform the actual task
+</pre>
+
+<li>Higher-order terms can now have an `any' inst, which means that they can
+ legally use non-local solver variables even though these variables may
+ become further bound when in it is called. Higher-order terms with an
+ `any' inst cannot be called or applied in a negated context (a negation,
+ the condition of an if-then-else, or the body of a higher-order expression
+ that does not itself have an `any' inst).
+<p>
+ Such terms can be expressed by using `any_pred' and `any_func' in place of
+ `pred' and `func', as in the following examples:
+<pre>
+ AnyPred = (any_pred(X::ia, C::in) is semidet :-
+ geqc(X, A, C) % X >= A + C
+ ),
+ ...
+ call(AnyPred, Z, 5) % Z >= A + 5
+
+ AnyFunc = (any_func(X::ia) = (Y::ia) is semidet :-
+ X = Y + A
+ ),
+ ...
+ Z = apply(AnyFunc, W) % W = Z + A
+</pre>
+
+<li>Try goals provide syntactic sugar for catching exceptions. An example is:
+<pre>
+ :- pred p_carefully(io::di, io::uo) is det.
+
+ p_carefully(!IO) :-
+ (try [io(!IO)] (
+ io.write_string("Calling p\n", !IO),
+ p(Output, !IO)
+ )
+ then
+ io.write_string("p returned: ", !IO),
+ io.write(Output, !IO),
+ io.nl(!IO)
+ catch S ->
+ io.write_string("p threw a string: ", !IO),
+ io.write_string(S, !IO),
+ io.nl(!IO)
+ catch 42 ->
+ io.write_string("p threw 42\n", !IO)
+ catch_any Other ->
+ io.write_string("p threw something: ", !IO),
+ io.write(Other, !IO),
+ % Rethrow the object.
+ throw(X)
+ ).
+</pre>
+</ul>
+
+<p>
+
+Changes to the Mercury compiler:
+
+<ul>
+<li>The option `--trail-segments', or grade component `.trseg', causes
+ programs to execute using trail segments, where segments can be allocated
+ at runtime, instead of using a fixed size trail. This can prevent trail
+ exhaustion, but execution time will be increased.
+
+<li>There's a new back-end that targets Erlang.
+<p>
+ Compiler support for this new back-end is mostly complete,
+ but large parts of the standard library are still not yet
+ implemented for this new port.
+<p>
+ For more details, see the README.Erlang.
+
+<li>The compiler now issues a warning when an inst declaration isn't
+ consistent with any of the types in scope.
+<p>
+ This makes it easier to diagnose mode errors caused by insts that are not
+ consistent with the type they are intended to be consistent with.
+
+<li> Simultaneous execution of jobs with `mmc --make' can be enabled with
+ the `--jobs <n>' option.
+
+<li>`mmc --make' can record what compiler options were used for each module
+ by enabling the `--track-flags' option. Then `mmc --make' can know to
+ recompile modules whose options have changed, even if the files haven't
+ been touched.
+
+<li>`mmc --make' can compile more recently modified files first, if the option
+ `--order-make-by-timestamp' is enabled.
+
+<li>The option `--stack-segments', or grade component `.stseg', causes
+ programs to execute using stack segments, where segments can be allocated
+ at runtime, instead of using fixed sized stacks. The program won't run out
+ of stack space and stack sizes can be much smaller, but execution time will
+ be increased.
+
+<li>Single-precision floats can now be selected for the C backends by using the
+ `.spf' grade component, or passing the `--single-prec-float' option to the
+ compiler.
+
+<li>The option `--generate-standalone-interface', causes the compiler to
+ create a "stand-alone" interface to the Mercury runtime and a set of
+ Mercury libraries. This interface allows programs written in languages
+ such as C or C++ to initialise the Mercury runtime and libraries prior to
+ calling any foreign exported procedures defined in those libraries.
+
+<li>We have removed support for Managed C++ as a foreign language for the IL
+ backend. This was desirable because it wasn't used, because it has been
+ deprecated by Microsoft, and because it complicated the dependencies for the
+ IL backend.
+</ul>
+
+<p>
+
+Changes to the Mercury standard library:
+
+<ul>
+<li>The predicates io.seek_binary/5 and io.binary_stream_offset/4 have been
+ deprecated. They have been replaced by the predicates:
+ io.seek_binary_input/5, io.seek_binary_output/5,
+ io.binary_input_stream_offset/4 and io.binary_output_stream_offset/4.
+</ul>
+
+<p>
+
+Changes to the Mercury debugger:
+
+<ul>
+
+<li>A `track' mdb command has been added. This command invokes the declarative
+ debugger and executes it's `track' command, before returning to the mdb
+ prompt.
+
+<li>The `dd' command now accepts a `--reset-knowledge-base' option.
+ This option resets the declarative debugger's knowledge base of previous
+ question answers.
+
+<li>You can now put breakpoints on individual events inside procedures.
+ Commands of the form "break <procedure-specification> <portname>"
+ will cause execution to stop only at the specified port in the specified
+ procedure. If there is more than event of the given port type in the
+ procedure, mdb will prompt the user to select one.
+
+<li>mdb now ignores lines beginning with a `#' character
+ in sourced files. This is useful for commenting mdb scripts.
+</ul>
+
Index: download/include/release.inc
===================================================================
RCS file: /home/mercury/mercury1/repository/w3/download/include/release.inc,v
retrieving revision 1.47
diff -u -r1.47 release.inc
--- download/include/release.inc 1 Oct 2009 07:11:11 -0000 1.47
+++ download/include/release.inc 19 Jul 2010 04:58:49 -0000
@@ -60,19 +60,19 @@
?>
<h2><a name="info">Current Release</a></h2>
-Mercury 0.13.1 was released on December 1, 2006.
+Mercury 10.04 was released on July 19, 2010.
<h3>Information</h3>
<ul>
-<li> <a href = "release-0.13.html">
- Release notes for 0.13.1
+<li> <a href = "release-10.04.html">
+ Release notes for 10.04
</a>
-<li> <a href = "release-0.13-contents.html">
- Contents of release 0.13.1 distribution
+<li> <a href = "release-10.04-contents.html">
+ Contents of release 10.04 distribution
</a>
-<li> <a href = "release-0.13-bugs.html">
- Known problems with release 0.13.1
+<li> <a href = "release-10.04-bugs.html">
+ Known problems with release 10.04
</a>
<li> <a href = "limitations.html">
Limitations of the current release.
@@ -86,37 +86,9 @@
<p>
<ul>
- <li> x86 machines running Debian Linux
+ <li> x86 and x86-64 machines running Linux
<li> x86 machines running Microsoft Windows XP
- <li> x86 machines running Solaris 9 (SunOS 5.9)
- <li> x86_64 machines running Debian Linux
- <li> Apple PowerPC machines running Mac OS 10.3 and above
-</ul>
-
-<p>
-
-Mercury should also work on the following platforms, although we have
-not tested the latest release on these:
-
-<p>
-
-<ul>
- <li> x86 machines running other versions of Microsoft Windows
- (95, 98, 98SE, ME, NT, 2000)
- <li> x86 machines running other versions of Linux
- (however, there are some known problems with the version of GNU C
- that shipped with Red Hat Linux 7.0)
- <li> x86 machines running FreeBSD 3.0
- <li> x86 machines running other BSD Unix systems
- <li> x86 machines running Solaris 8 (SunOS 5.8)
- <li> PowerPC machines running Linux
- <li> Sun SPARC machines running SunOS 4.x and 5.x
- <li> HP PA machines running HPUX
- <li> IBM RS/6000 machines running AIX
- <li> DEC Mips machines running ULTRIX
- <li> DEC Alpha machines running OSF/1 (Digital Unix)
- <li> DEC Alpha machines running Linux
- <li> SGI Mips machines running IRIX 5.x
+ <li> Apple Intel machines (both x86 and x86-64) running Mac OS X 10.5 and above
</ul>
<p>
@@ -130,22 +102,13 @@
<ol>
<li> <a href="http://gcc.gnu.org">GNU C (gcc)</a>
<p>
- We recommend GCC 3.4.x.
+ Version GCC 3.4.x or later is required.
<p>
- GCC 3.0, 3.3.1 and 4.0 will NOT work.
- They have bugs that cause
+ GCC 4.0 will NOT work.
+ It has bugs that cause
internal compiler errors when compiling the C code generated by the
Mercury compiler.
<p>
- GCC 4.2 - 4.4 will NOT work either. We are working on it.
- <p>
- GCC 4.1 works for the most part, but there is a known problem
- so we don't recommend that either.
- <p>
- Avoid GCC 2.96 (distributed with Red Hat Linux 7.x) and
- other unofficial releases of GCC. Also avoid versions of GCC less
- than GCC 2.95.X.
- <p>
It is also possible to use other C compilers, such as
<a href="http://www.cs.princeton.edu/software/lcc/">lcc</a>,
but we don't recommend that.
@@ -157,38 +120,19 @@
<li> For Windows,<p>
<ol>
- <li> You will need <a href=http://www.cygwin.com/>Cygwin</a>,
- which you can download
- <a href=http://www.cygwin.com/setup.exe>here</a>.
- Cygwin includes GNU C and GNU Make.<p>
+ <li> You will need a Unix-like enviroment such as <a href="http://www.cygwin.com/">Cygwin</a>,
+ or <a href="http://www.mingow/org/">MinGW and MSYS</a>. Both provide GNU C and GNU make.
<li> You can optionally use
<a href="http://msdn.microsoft.com/visualc/default.asp">
Microsoft Visual C</a> rather than GNU C.<p>
- <li> If you want to take a look at our preliminary support for .NET,
- you also need
- <ol>
- <li> the Microsoft .NET SDK version 1, available from
- <a href="http://msdn.microsoft.com/netframework/">
- MSDN</a>.
- If you are an MSDN Universal subscriber you can
- also order CDs as part of your subscription.
- <li> A Windows system suitable for development with
- Microsoft .NET, such as Windows XP.
- </ol>
</ol>
</ul>
<h3><a name="source">Source Distribution</a></h3>
-The main "mercury-compiler" source distribution is about 15 Mb.
+The main "mercury-compiler" source distribution is about 25 Mb.
This includes the compiler, standard library,
debugger, profilers, and other tools.
-(Note that this does <em>not</em> include all the sources needed to build
-the <a href="<?echo $root?>/download/gcc-backend.html">
-native-code back-end</a>; for that you also need the
-"mercury-gcc" and "gcc" distributions.
-See <a href="<?echo $root?>/download/gcc-backend.html">here</a>
-for details.)
<p>
@@ -206,21 +150,21 @@
or porting it to a new system.
<dl>
-<dt> Compiler (15 Mb)
+<dt> Compiler (25 Mb)
<dd>
-<? links_to_file("mercury-compiler-0.13.1.tar.gz", "yes") ?>
+<? links_to_file("mercury-compiler-10.04.tar.gz", "yes") ?>
<p>
<dt> Extras (750 kb)
<dd>
-<? links_to_file("mercury-extras-0.13.1.tar.gz", "no") ?>
+<? links_to_file("mercury-extras-10.04.tar.gz", "no") ?>
<p>
-<dt> Tests (914 kb)
+<dt> Tests (1 Mb)
<dd>
-<? links_to_file("mercury-tests-0.13.1.tar.gz", "no") ?>
+<? links_to_file("mercury-tests-10.04.tar.gz", "no") ?>
</dl>
<h3><a name="binaries">Binary Distributions</a></h3>
-Binary distributions for 0.13.1 are not yet available.
+There are no binary distributions for 10.04 currently available.
Index: news/newsdb.inc
===================================================================
RCS file: /home/mercury/mercury1/repository/w3/news/newsdb.inc,v
retrieving revision 1.120
diff -u -r1.120 newsdb.inc
--- news/newsdb.inc 23 Mar 2010 05:04:12 -0000 1.120
+++ news/newsdb.inc 18 Jul 2010 16:04:30 -0000
@@ -21,6 +21,14 @@
*/
$newsdb = array(
+"19 July 2010" => array("New release",
+
+"We are pleased to announce the release of version 10.04 of the
+Mercury system. The new release can be downloaded
+<a href=\"download/release.html\">here</a>. For a list of the changes since
+the last version see the <a href=\"download/release-10.04.html\">release notes</a>."
+),
+
"23 March 2010" => array("New paper and new slides",
"A new paper,
Towards Software Transactional Memory for Real-World Programs,
@@ -162,7 +170,7 @@
"1 December 2006" => array("Mercury 0.13.1 released",
"Release information is available
-<A HREF=\"./download/release.html\">here</A>."
+<A HREF=\"./download/old_release.html\">here</A>."
),
"30 October 2006" => array("New paper",
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to: mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the reviews
mailing list