mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-15 01:13:30 +00:00
Prepare for the 0.13 release and fix/update documentation.
Estimated hours taken: 1 Branches: main, release Prepare for the 0.13 release and fix/update documentation. NEWS: HISTORY: Update the NEWS and HISTORY files for the 0.13 release. RELEASE_NOTES: s/0.12/0.13/ Add Linux/x86_64 to the list of architectures supported by this release. Remove Solaris 8/x86 from the same list. .README.in: extras/README: Remove references to the clp(r) binding. We no longer support it. bindist/bindist.README: Update the year in the copyright message. Fix the gc version; 0.13 uses 6.5. BUGS: README.DotNet: README.Java: README.gcc-backend: doc/faq.texi: doc/make_manpage: doc/mercury.html.in: doc/mercury.info.in: s/.cs.mu.oz.au/.csse.unimelb.edu.au/ library/array.m: library/builtin.m: library/eqvclass.m: library/graph.m: samples/README: Fix typos.
This commit is contained in:
@@ -64,10 +64,6 @@ copyright licences:
|
||||
Sun Microsystems, Inc., and other parties.
|
||||
See the file extras/graphics/mtogl/LICENSE.TK.
|
||||
|
||||
The CLP(R) v1.2 implementation in extras/clpr/clpr is copyright
|
||||
by IBM; see the file extras/clpr/clpr/README for details, in
|
||||
particular the RESEARCH SOFTWARE DISCLAIMER and USER AGREEMENT.
|
||||
|
||||
THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY
|
||||
EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK. See the file COPYING.
|
||||
|
||||
@@ -84,7 +80,7 @@ README file for your particular platform, if there is one:
|
||||
README.Linux-Alpha Linux on DEC Alpha
|
||||
README.Linux-PPC Linux on PowerPC
|
||||
README.Linux-m68k Linux on Motorola 68000
|
||||
README.MacOS Apple PowerPC Mac systems running MacOS 10
|
||||
README.MacOS Apple PowerPC Mac systems running Mac OS X
|
||||
README.MS-Windows Microsoft Windows
|
||||
README.OSF1 DEC Alpha systems running OSF/1 version 3.x
|
||||
README.Solaris Solaris (SunOS) on SPARC or Intel x86.
|
||||
|
||||
4
BUGS
4
BUGS
@@ -1,4 +1,4 @@
|
||||
Bug reports should be sent to mercury-bugs@cs.mu.oz.au.
|
||||
Bug reports should be sent to mercury-bugs@csse.unimelb.edu.au.
|
||||
If you're reporting more than one bug, please use separate emails
|
||||
for each bug. Please include all the relevant information,
|
||||
including which version of Mercury you're using, what operating
|
||||
@@ -12,7 +12,7 @@ fully self-contained.
|
||||
|
||||
Below is a list of the known outstanding bugs.
|
||||
We'll try to record any other bugs that are discovered
|
||||
on our WWW page <http://www.cs.mu.oz.au/mercury>.
|
||||
on our WWW page <http://www.mercury.csse.unimelb.edu.au>.
|
||||
In addition to the bugs mentioned here, some bugs related
|
||||
to the implementation of particular languages features
|
||||
(existential types, nested modules, tabling)
|
||||
|
||||
461
HISTORY
461
HISTORY
@@ -2436,16 +2436,475 @@ Changes to the compiler back-ends:
|
||||
of the C files generated by the compiler with debugging enabled are now
|
||||
typically between a quarter and a third of their previous sizes.
|
||||
|
||||
|
||||
Mercury 0.12, September 9, 2005
|
||||
-------------------------------
|
||||
|
||||
HIGHLIGHTS
|
||||
==========
|
||||
|
||||
Changes to the Mercury language:
|
||||
* Infix `.' is now accepted as a module name separator.
|
||||
* Field access syntax can now be used at the top-level in func and mode
|
||||
declarations and in the head of a clause for a user-defined field access
|
||||
function.
|
||||
* We now support impure higher-order code.
|
||||
* We now allow user-defined comparison predicates.
|
||||
* User-defined equality and comparison predicates for a type are now
|
||||
required to be defined in the same module as the type.
|
||||
* Experimental support for user-defined constrained types has been added.
|
||||
* We now support the use of `..' as an infix operator.
|
||||
|
||||
Changes to the Mercury standard library:
|
||||
* We've added several new modules: cord, for sequences with O(1) consing and
|
||||
concatenation, array2d, for two-dimensional arrays, and version_array,
|
||||
version_array2d, version_bitmap, version_hash_table, and version_store,
|
||||
implementing non-unique versions of these types supporting O(1) access for
|
||||
non-persistent use. A new module term_to_xml has been added for converting
|
||||
arbitrary terms to XML documents. Two new modules, set_tree234 and
|
||||
set_ctree234, have been added to provide operations on sets with better
|
||||
worst-case behavior (but worse constant factors) than the current
|
||||
implementation. Ten new modules, svarray, sveqvclass, svmap, svmulti_map,
|
||||
svbimap, svset, svbag, svqueue, svrelation and svvarset now provide more
|
||||
convenient ways to update arrays, equivalence classes, maps, multi_maps,
|
||||
bimaps, sets, bags, queues, relations and varsets in code that uses state
|
||||
variables.
|
||||
* New procedures have been added to many of the existing standard library
|
||||
modules. Most notably, these include procedures for creating
|
||||
directories and symbolic links, for checking file types and file
|
||||
accessibility, for detecting floating point infinities and NaNs.
|
||||
* The dir module now handles Microsoft Windows pathnames correctly.
|
||||
|
||||
Changes to the Mercury compiler:
|
||||
* We have added optional support for a new type-accurate garbage collector
|
||||
as an alternative to using the Boehm et al conservative collector.
|
||||
* Better support for incremental program development:
|
||||
there's two new compiler options, `--allow-stubs' and `--no-warn-stubs',
|
||||
to support execution of incomplete programs.
|
||||
* There's a new warning option `--warn-dead-procs' for detecting unreachable
|
||||
code.
|
||||
* It's now easier to use shared libraries on Linux/x86 systems
|
||||
with `mmc --make'.
|
||||
* A new analysis: `--analyse-exceptions'.
|
||||
The compiler can use the results of this analysis to try and improve
|
||||
some optimizations.
|
||||
|
||||
Portability improvements:
|
||||
* We have made the implementation compatible with gcc 3.4.
|
||||
* Shared libraries now work on Mac OS X.
|
||||
|
||||
Changes to the Mercury debugger:
|
||||
* Users can now arrange to have the goal and/or some variables printed
|
||||
every time execution arrives at a breakpoint.
|
||||
* Users can now arrange to associate a condition with a breakpoint.
|
||||
Execution won't stop at the breakpoint if the condition is false.
|
||||
* Users can now limit the output from stack traces.
|
||||
* Users can now put breakpoints on unify and compare predicates.
|
||||
* Users can now save runtime values to files.
|
||||
* Users can now tell the declarative debugger to trust entire modules or
|
||||
individual predicates or functions.
|
||||
* The declarative debugger can track the origins of subterms.
|
||||
* The declarative debugger can now use the divide-and-query search strategy.
|
||||
|
||||
Changes to the compiler back-ends:
|
||||
* The .NET CLR back-end now bootstraps.
|
||||
* Improvements to the Java back-end.
|
||||
* The cost in disk space of enabling debugging is now much smaller.
|
||||
|
||||
Numerous minor improvements to the Mercury standard library.
|
||||
|
||||
Changes to the extras distribution:
|
||||
* Added easyx, a new Xlib based graphics library suitable for implementing
|
||||
simple interactive graphical applications.
|
||||
* Major improvements to the OpenGL binding.
|
||||
* We've added a binding to GLUT (the GL utility toolkit).
|
||||
* The OpenGL, GLUT and Tcl/Tk bindings have been ported to Mac OS X.
|
||||
|
||||
DETAILED LISTING
|
||||
================
|
||||
|
||||
Changes to the Mercury language:
|
||||
|
||||
* The deprecated support for NU-Prolog style `when' declarations has been
|
||||
removed.
|
||||
|
||||
* We have experimental support for user-defined constrained types, as
|
||||
documented in the reference manual section on "Solver types". Variables
|
||||
of a constrained type can have constraints placed upon them before they
|
||||
are instantiated, allowing for various styles of constraint logic
|
||||
programming.
|
||||
|
||||
* We now allow user-defined comparison predicates, using the syntax
|
||||
:- type t ---> t where equality is unify_t, comparison is compare_t.
|
||||
|
||||
See the "User-defined equality and comparison" chapter of the
|
||||
Mercury Language Reference Manual for details.
|
||||
|
||||
* User-defined equality and comparison predicates for a type are now
|
||||
required to be defined in the same module as the type.
|
||||
|
||||
* Infix `.' is now accepted as a module name separator. Hence it is
|
||||
now possible to write io.write_string and list.member to mean the
|
||||
same thing as io__write_string and list__member, for instance. This
|
||||
has required changing the associativity of `.' from xfy to yfx and
|
||||
from precedence 600 to 10.
|
||||
|
||||
* Field access notation can now be used at the top-level in func and
|
||||
mode declarations and in the head of a clause for a user-defined
|
||||
field access function. That is, one can now write
|
||||
|
||||
:- func a ^ f(b) = c.
|
||||
:- mode a ^ f(b) = c is <detism>.
|
||||
A ^ f(B) = ...
|
||||
|
||||
* Mercury's support for impure code now also includes support for
|
||||
impure higher-order code.
|
||||
|
||||
Specifically, impurity annotations can be used on higher-order types,
|
||||
lambda expressions, and higher-order calls; higher-order terms are
|
||||
permitted to call impure or semipure code provided that they are
|
||||
appropriately annotated as such.
|
||||
|
||||
For details, see the "Higher-order impurity" section of the "Impurity"
|
||||
chapter of the Mercury Language Reference Manual.
|
||||
|
||||
* `..' is now accepted as an infix operator. That means a list of
|
||||
successive integers can now be written as X .. Y. For example:
|
||||
|
||||
1 .. 5 = [1, 2, 3, 4, 5]
|
||||
|
||||
|
||||
Changes to the Mercury standard library:
|
||||
|
||||
* We've add the function queue.from_list/1 as a synonym for
|
||||
queue.list_to_queue/1, function queue.to_list/1 (and predicate
|
||||
queue.to_list/2) as the converse of queue.from_list/1, queue.put_on_front/2
|
||||
(and predicate queue.put_on_front/3) to put items on to the front of a
|
||||
queue, queue.put_list_on_front/2 (and predicate queue.put_list_on_front/3)
|
||||
to put a list of items on to the front of a queue, and predicate
|
||||
queue.get_from_back/3 which removes the last element from a queue.
|
||||
|
||||
* We've added the function pqueue.from_assoc_list/1 as a synonym
|
||||
for pqueue.assoc_list_to_pqueue/1.
|
||||
|
||||
* We've added functions set.from_list/1 and set.from_sorted_list/1
|
||||
as synonyms for set.list_to_set/1 and set.sorted_list_to_set/1
|
||||
respectively. Similar additions have also been made to the
|
||||
set_unordlist, set_ordlist and set_bbbtree modules.
|
||||
|
||||
* We've added some new higher-order predicates, rbtree.foldl2/6
|
||||
rbtree.foldl3 and rbtree.transform_value to the rbtree module. The
|
||||
predicate rbtree.remove/3 has been deprecated.
|
||||
|
||||
* We've add some new predicates and functions to int.m.
|
||||
int.fold_up/4, int.fold_down/4, int.fold_up/5, int.fold_down/5,
|
||||
int.fold_up2/7 and int.fold_down2/7 support iteration over
|
||||
contiguous integer ranges.
|
||||
|
||||
* The predicate int.to_float/2 has now been deprecated.
|
||||
|
||||
* We've added a new library module, `array2d', for two-dimensional arrays.
|
||||
|
||||
* We've added a new module, cord, for sequences with O(1) consing and
|
||||
concatenation. A cord is essentially a tree structure with data stored
|
||||
in the leaf nodes. Joining two cords together to construct a new cord
|
||||
is therefore an O(1) operation.
|
||||
|
||||
* The dir module now handles Microsoft Windows pathnames correctly.
|
||||
|
||||
* dir__split_name and dir__basename are now semidet, not det.
|
||||
dir__split_name fails for root directories or pathnames not
|
||||
containing a directory separator.
|
||||
dir__basename fails for root directories.
|
||||
|
||||
* We've added some new predicates and functions to the dir module:
|
||||
basename_det/1,
|
||||
expand_braces/1,
|
||||
is_directory_separator/1,
|
||||
make_directory/4,
|
||||
make_single_directory/4,
|
||||
foldl2/6,
|
||||
parent_directory/0,
|
||||
path_name_is_absolute/1,
|
||||
path_name_is_root_directory/1,
|
||||
recursive_foldl2/7.
|
||||
|
||||
* We've added several new predicates to the io module:
|
||||
have_symlinks/0,
|
||||
make_symlink/4,
|
||||
follow_symlink/4,
|
||||
check_file_accessibility/5,
|
||||
file_type/4,
|
||||
input_stream_foldl2_io_maybe_stop/{6,7},
|
||||
binary_input_stream_foldl2_io_maybe_stop/{6,7}.
|
||||
|
||||
* We've added several new predicates and functions to the bimap module:
|
||||
det_insert,
|
||||
forward_search,
|
||||
reverse_search,
|
||||
from_corresponding_lists,
|
||||
map_keys,
|
||||
map_values,
|
||||
det_insert_from_assoc_list,
|
||||
det_insert_from_corresponding_lists,
|
||||
set_from_assoc_list,
|
||||
set_from_corresponding_lists,
|
||||
delete_key,
|
||||
delete_value,
|
||||
delete_keys,
|
||||
delete_values,
|
||||
overlay,
|
||||
apply_forward_map_to_list,
|
||||
apply_reverse_map_to_list,
|
||||
foldl
|
||||
|
||||
* We've added predicates relation__lookup_key_set_from/3 and
|
||||
relation__lookup_key_set_to/3.
|
||||
|
||||
* The type of the arguments giving the initial set of visited nodes
|
||||
to relation__dfs and relation__dfsrev has changed from set_bbbtree
|
||||
to sparse_bitset.
|
||||
|
||||
* Efficiency of the operations in the relation module has been
|
||||
greatly improved.
|
||||
|
||||
* Some predicates and functions have been added to the sparse_bitset module:
|
||||
to_set/1,
|
||||
from_set/1,
|
||||
member/2,
|
||||
foldl/4,
|
||||
foldr/4.
|
||||
|
||||
* exception.m now contains a predicate finally/6 which can be used to
|
||||
ensure that resources are released whether a called closure exits
|
||||
normally or throws an exception.
|
||||
|
||||
* exception.m now contains a predicate throw_if_near_stack_limits which
|
||||
can be used to prevent an application running out of stack space.
|
||||
|
||||
* We've changed the interface of exception.try_all/2 to separate
|
||||
exceptional results from normal results.
|
||||
|
||||
* We've added predicates multi_map.to_flat_assoc_list/2 and
|
||||
multi_map.from_flat_assoc_list/2.
|
||||
|
||||
* Several new functions have been added to the string module, namely
|
||||
elem/2, unsafe_elem/2, chomp/1, lstrip/1, lstrip/2, rstrip/1, rstrip/2,
|
||||
strip/1, prefix_length/2, suffix_length/2, string/1, string/2, string/4
|
||||
and string.det_to_float/1.
|
||||
|
||||
* We've added some new predicates, list__map2_foldl, list__map_foldl3,
|
||||
and list__foldl4 to list.m.
|
||||
|
||||
* We've added a predicate, list__cons/3 to list.m. This is sometimes
|
||||
useful with higher-order code. It can also be useful with state
|
||||
variables. We've also added a function version.
|
||||
|
||||
* We've added some new predicates, map__common_subset, map__foldl3,
|
||||
map__overlay_large_map and map__transform_value, to map.m.
|
||||
|
||||
* We've added a predicate, map_fold, to set.m.
|
||||
|
||||
* We've added a function, pred_to_bool, to bool.m.
|
||||
|
||||
* We've added the three predicates, `is_nan/1', `is_inf/1' and
|
||||
`is_nan_or_inf/1' to float.m. These predicates are for use only on
|
||||
systems which support IEEE floating point arithmetic.
|
||||
|
||||
* We've added a function version of `hash_table__search/3'.
|
||||
|
||||
* We've added a predicate, copy_mutvar, to store.m.
|
||||
|
||||
* We've added a function, clk_tck, to time.m.
|
||||
|
||||
* builtin.m now contains types and insts `unify' and `compare' for use
|
||||
in defining user-defined equality and comparison predicates.
|
||||
|
||||
* builtin.m now defines insts `new' and `old' as synonyms for `free' and
|
||||
`any', respectively, since some of the HAL literature uses this terminology.
|
||||
Likewise it defines modes `no' for `new >> old' and `oo' for `old >> old'.
|
||||
|
||||
* We've fixed some problems with the use of `cc_nondet'.
|
||||
|
||||
The incorrect cc_nondet modes of the following predicates have been removed:
|
||||
deconstruct.arg/4
|
||||
deconstruct.named_arg/4
|
||||
deconstruct.limited_deconstruct/6
|
||||
std_util.arg_cc/3
|
||||
std_util.argument_cc/3
|
||||
std_util.named_argument_cc/3
|
||||
std_util.limited_deconstruct_cc/5
|
||||
These have been replaced by cc_multi versions in which success or failure
|
||||
is indicated by returning a maybe type.
|
||||
|
||||
* We've added functions get_equivalent_elements, get_minimum_element and
|
||||
remove_equivalent_elements to eqvclass.m.
|
||||
|
||||
* We've added semidet functions max_key and min_key to return the maximum and
|
||||
minimum keys in maps and 2-3-4 trees.
|
||||
|
||||
* We've added predicates member, remove_leq, remove_gt, foldl and filter
|
||||
to sparse_bitset.m.
|
||||
|
||||
* builtin.m now contains types and insts `unify' and `compare' for use
|
||||
in defining user-defined equality and comparison predicates.
|
||||
|
||||
* The following predicates, which were added in 0.11.0, have been deprecated:
|
||||
io.current_input_stream/3
|
||||
io.current_output_stream/3
|
||||
io.current_binary_input_stream/3
|
||||
io.current_binary_output_stream/3
|
||||
They were identical to the following long-existing predicates with
|
||||
similar names:
|
||||
io.input_stream/3
|
||||
io.output_stream/3
|
||||
io.binary_input_stream/3
|
||||
io.binary_output_stream/3
|
||||
|
||||
* The following functions have been added to the integer module:
|
||||
integer.zero/0
|
||||
integer.one/0
|
||||
integer.det_from_string/1
|
||||
integer.pow/2
|
||||
|
||||
The predicate integer.pow/3 has been deprecated.
|
||||
|
||||
* We've added some functions, rational.int/1, rational.from_integer/1,
|
||||
rational.from_integers/2 and rational.reciprocal/1 to rational.m
|
||||
The function rational.rational_from_integers/2 has been deprecated.
|
||||
|
||||
* A new module `term_to_xml' has been added to the standard library. This
|
||||
module contains predicates to write arbitrary Mercury terms to an output
|
||||
stream as XML. Automatic generation of DTDs for Mercury types is also
|
||||
supported. Once a Mercury term is in XML it can be converted to many other
|
||||
formats such as HTML or XUL using an appropriate stylesheet.
|
||||
|
||||
Changes to the Mercury compiler:
|
||||
|
||||
* We have added optional support for a new type-accurate garbage collector
|
||||
as an alternative to using the Boehm et al conservative collector.
|
||||
|
||||
The new collector is enabled by `--grade hlc.agc'.
|
||||
For details about how it works, see the paper
|
||||
"Accurate garbage collection in an uncooperative environment"
|
||||
which is available via our web page.
|
||||
|
||||
Note that the new collector is a very naive copying collector, and still
|
||||
has a number of serious limitations which may make it undesirable for
|
||||
most applications. It only works with `--high-level-code'. The heap
|
||||
size is fixed at program startup; the collector does not attempt to
|
||||
resize the heap. It does not do cheap heap reclamation on backtracking.
|
||||
There is no support for passing terms on the Mercury heap to C code.
|
||||
In most cases, the Boehm et all conservative collector will perform better.
|
||||
|
||||
* There's a new warning option `--warn-dead-procs' which can be used
|
||||
for detecting unreachable code.
|
||||
|
||||
This is not yet enabled by default, because it can cause some spurious
|
||||
warnings in modules containing code which mixes Mercury clauses and
|
||||
`pragma foreign_proc' declarations for the same procedure.
|
||||
|
||||
* `mmc --make' now works correctly with Microsoft Visual C++.
|
||||
|
||||
* It's now easier to use shared libraries on Linux/x86 systems with
|
||||
`mmc --make'. See the documentation for the `--mercury-linkage'
|
||||
and `--linkage' options and the `MERCURY_LINKAGE' Mmake variable
|
||||
in the Mercury User's Guide.
|
||||
|
||||
* The behaviour of the `--pre-link-command' and `--extra-init-command'
|
||||
options has changed. They now take a command which will be passed
|
||||
the names of all source files in the program or library, with the
|
||||
name of the main module's source file passed first.
|
||||
See the "Build system options" section of the "Invocation" chapter
|
||||
of the Mercury User's Guide for details.
|
||||
|
||||
* It is now possible to reconfigure an existing Mercury installation
|
||||
to use a different C compiler. See the "C compilers" chapter
|
||||
of the Mercury User's Guide for details.
|
||||
|
||||
* Inlining of builtins can now be disabled using the `--no-inline-builtins'
|
||||
option. This is done by default when debugging, as without this option the
|
||||
execution of builtins is not traced.
|
||||
|
||||
* The Mercury compiler now uses `.' and not `:' as the module separator
|
||||
in all output.
|
||||
|
||||
* The environment variables which were previously used to override the
|
||||
location of the standard library (MERCURY_ALL_C_INCL_DIRS,
|
||||
MERCURY_ALL_MC_C_INCL_DIRS, MERCURY_INT_DIR, MERCURY_C_LIB_DIR,
|
||||
MERCURY_MOD_LIB_MODS, MERCURY_TRACE_LIB_MODS) have been removed.
|
||||
|
||||
* There is a new analysis: `--analyse-exceptions'. This identifies
|
||||
predicates that will not throw an exception. This information is
|
||||
made available to the optimizing passes of the compiler.
|
||||
|
||||
Portability improvements:
|
||||
|
||||
* We have made the implementation compatible with gcc 3.4.
|
||||
* Shared libraries now work on Mac OS X.
|
||||
|
||||
Changes to the Mercury debugger:
|
||||
|
||||
* Users can now limit the output from stack traces.
|
||||
|
||||
The mdb command `stack' now takes an optional integer argument that
|
||||
specifies the maximum number of stack frames to be printed.
|
||||
|
||||
* Users can now put breakpoints on unify and compare predicates.
|
||||
|
||||
The syntax for procedure specifications now has provision for specifying
|
||||
unify and compare predicates.
|
||||
|
||||
* Users can now save runtime values to files.
|
||||
|
||||
We've added a new mdb command, `save_to_file', that saves a specified term
|
||||
to a specified file.
|
||||
|
||||
* The declarative debugger can now be told to trust entire modules or
|
||||
individual predicates or functions using the `trust' mdb command.
|
||||
|
||||
* The declarative debugger can now also tell you where a value
|
||||
appearing in an atom came from (i.e. the call which constructed the value).
|
||||
|
||||
* The declarative debugger also now supports a divide-and-query search mode.
|
||||
You can tell the declarative debugger to use this search mode by invoking
|
||||
it with the command `dd -s divide_and_query'.
|
||||
|
||||
* The "pretty" and "raw_pretty" print formats have had their names swapped, so
|
||||
the "pretty" format is now prettier than the "raw_pretty" format.
|
||||
|
||||
Changes to the compiler back-ends:
|
||||
|
||||
* The .NET CLR back-end now bootstraps.
|
||||
|
||||
We've fixed a lot of bugs, and implemented a lot more of the Mercury
|
||||
standard library. As well as being able to bootstrap in grade `il',
|
||||
we also now pass more than 90% of the applicable tests in the
|
||||
Mercury test suite. See README.DotNet for details.
|
||||
|
||||
* Improvements to the Java back-end.
|
||||
|
||||
We've fixed a lot of bugs, and implemented a lot more of the Mercury
|
||||
standard library. See README.Java for further details on the status
|
||||
of this backend.
|
||||
|
||||
|
||||
Mercury 0.12.1, November 21, 2005
|
||||
---------------------------------
|
||||
|
||||
This release is primarily a bug-fix release.
|
||||
It fixes a problem with predicates that have existentially typed
|
||||
arguments, makes sure that I/O tabling does not inadvertently
|
||||
inline predicates that have a `:- pragma no_inline' declaration
|
||||
attached to them, and makes various improvements to the MS-Windows
|
||||
ports.
|
||||
|
||||
|
||||
Mercury 0.12.2, January 25, 2006
|
||||
---------------------------------
|
||||
|
||||
See the NEWS file.
|
||||
This release fixes some bugs with `mmc --make' and `--smart-recompilation'.
|
||||
|
||||
|
||||
.NET CLR back-end history
|
||||
-------------------------
|
||||
|
||||
@@ -22,6 +22,6 @@ following fixed limits:
|
||||
* Higher order terms are limited to arity of about 500.
|
||||
|
||||
These limits can be lifted (with some effort), but would possibly incur
|
||||
performance penalties. Contact the Mercury team (mercury@cs.mu.oz.au) if
|
||||
you find these limits are affecting your application.
|
||||
performance penalties. Contact the Mercury team (mercury@csse.unimelb.edu.au)
|
||||
if you find these limits are affecting your application.
|
||||
|
||||
|
||||
477
NEWS
477
NEWS
@@ -1,5 +1,5 @@
|
||||
NEWS since 0.13 fork
|
||||
--------------------
|
||||
NEWS since Mercury 0.13
|
||||
-----------------------
|
||||
|
||||
Changes to the Mercury language:
|
||||
|
||||
@@ -32,8 +32,8 @@ Changes to the Mercury language:
|
||||
Unicode character is implementation dependent. For the Melbourne Mercury
|
||||
compiler, Unicode characters are represented using UTF-8 for the C backends.
|
||||
|
||||
NEWS since Mercury 0.12
|
||||
-----------------------
|
||||
NEWS for Mercury 0.13
|
||||
---------------------
|
||||
|
||||
HIGHLIGHTS
|
||||
==========
|
||||
@@ -418,473 +418,4 @@ Changes to the extras distribution:
|
||||
multiple hosts (by default, 1).
|
||||
|
||||
|
||||
NEWS for Mercury 0.12.2
|
||||
----------------------
|
||||
|
||||
This release fixes some bugs with `mmc --make' and `--smart-recompilation'.
|
||||
|
||||
|
||||
NEWS for Mercury 0.12.1
|
||||
------------------------
|
||||
|
||||
This release is primarily a bug-fix release.
|
||||
It fixes a problem with predicates that have existentially typed
|
||||
arguments, makes sure that I/O tabling does not inadvertently
|
||||
inline predicates that have a `:- pragma no_inline' declaration
|
||||
attached to them, and makes various improvements to the MS-Windows
|
||||
ports.
|
||||
|
||||
|
||||
NEWS for Mercury 0.12
|
||||
---------------------
|
||||
|
||||
HIGHLIGHTS
|
||||
==========
|
||||
|
||||
Changes to the Mercury language:
|
||||
* Infix `.' is now accepted as a module name separator.
|
||||
* Field access syntax can now be used at the top-level in func and mode
|
||||
declarations and in the head of a clause for a user-defined field access
|
||||
function.
|
||||
* We now support impure higher-order code.
|
||||
* We now allow user-defined comparison predicates.
|
||||
* User-defined equality and comparison predicates for a type are now
|
||||
required to be defined in the same module as the type.
|
||||
* Experimental support for user-defined constrained types has been added.
|
||||
* We now support the use of `..' as an infix operator.
|
||||
|
||||
Changes to the Mercury standard library:
|
||||
* We've added several new modules: cord, for sequences with O(1) consing and
|
||||
concatenation, array2d, for two-dimensional arrays, and version_array,
|
||||
version_array2d, version_bitmap, version_hash_table, and version_store,
|
||||
implementing non-unique versions of these types supporting O(1) access for
|
||||
non-persistent use. A new module term_to_xml has been added for converting
|
||||
arbitrary terms to XML documents. Two new modules, set_tree234 and
|
||||
set_ctree234, have been added to provide operations on sets with better
|
||||
worst-case behavior (but worse constant factors) than the current
|
||||
implementation. Ten new modules, svarray, sveqvclass, svmap, svmulti_map,
|
||||
svbimap, svset, svbag, svqueue, svrelation and svvarset now provide more
|
||||
convenient ways to update arrays, equivalence classes, maps, multi_maps,
|
||||
bimaps, sets, bags, queues, relations and varsets in code that uses state
|
||||
variables.
|
||||
* New procedures have been added to many of the existing standard library
|
||||
modules. Most notably, these include procedures for creating
|
||||
directories and symbolic links, for checking file types and file
|
||||
accessibility, for detecting floating point infinities and NaNs.
|
||||
* The dir module now handles Microsoft Windows pathnames correctly.
|
||||
|
||||
Changes to the Mercury compiler:
|
||||
* We have added optional support for a new type-accurate garbage collector
|
||||
as an alternative to using the Boehm et al conservative collector.
|
||||
* Better support for incremental program development:
|
||||
there's two new compiler options, `--allow-stubs' and `--no-warn-stubs',
|
||||
to support execution of incomplete programs.
|
||||
* There's a new warning option `--warn-dead-procs' for detecting unreachable
|
||||
code.
|
||||
* It's now easier to use shared libraries on Linux/x86 systems
|
||||
with `mmc --make'.
|
||||
* A new analysis: `--analyse-exceptions'.
|
||||
The compiler can use the results of this analysis to try and improve
|
||||
some optimizations.
|
||||
|
||||
Portability improvements:
|
||||
* We have made the implementation compatible with gcc 3.4.
|
||||
* Shared libraries now work on Mac OS X.
|
||||
|
||||
Changes to the Mercury debugger:
|
||||
* Users can now arrange to have the goal and/or some variables printed
|
||||
every time execution arrives at a breakpoint.
|
||||
* Users can now arrange to associate a condition with a breakpoint.
|
||||
Execution won't stop at the breakpoint if the condition is false.
|
||||
* Users can now limit the output from stack traces.
|
||||
* Users can now put breakpoints on unify and compare predicates.
|
||||
* Users can now save runtime values to files.
|
||||
* Users can now tell the declarative debugger to trust entire modules or
|
||||
individual predicates or functions.
|
||||
* The declarative debugger can track the origins of subterms.
|
||||
* The declarative debugger can now use the divide-and-query search strategy.
|
||||
|
||||
Changes to the compiler back-ends:
|
||||
* The .NET CLR back-end now bootstraps.
|
||||
* Improvements to the Java back-end.
|
||||
* The cost in disk space of enabling debugging is now much smaller.
|
||||
|
||||
Numerous minor improvements to the Mercury standard library.
|
||||
|
||||
Changes to the extras distribution:
|
||||
* Added easyx, a new Xlib based graphics library suitable for implementing
|
||||
simple interactive graphical applications.
|
||||
* Major improvements to the OpenGL binding.
|
||||
* We've added a binding to GLUT (the GL utility toolkit).
|
||||
* The OpenGL, GLUT and Tcl/Tk bindings have been ported to Mac OS X.
|
||||
|
||||
DETAILED LISTING
|
||||
================
|
||||
|
||||
Changes to the Mercury language:
|
||||
|
||||
* The deprecated support for NU-Prolog style `when' declarations has been
|
||||
removed.
|
||||
|
||||
* We have experimental support for user-defined constrained types, as
|
||||
documented in the reference manual section on "Solver types". Variables
|
||||
of a constrained type can have constraints placed upon them before they
|
||||
are instantiated, allowing for various styles of constraint logic
|
||||
programming.
|
||||
|
||||
* We now allow user-defined comparison predicates, using the syntax
|
||||
:- type t ---> t where equality is unify_t, comparison is compare_t.
|
||||
|
||||
See the "User-defined equality and comparison" chapter of the
|
||||
Mercury Language Reference Manual for details.
|
||||
|
||||
* User-defined equality and comparison predicates for a type are now
|
||||
required to be defined in the same module as the type.
|
||||
|
||||
* Infix `.' is now accepted as a module name separator. Hence it is
|
||||
now possible to write io.write_string and list.member to mean the
|
||||
same thing as io__write_string and list__member, for instance. This
|
||||
has required changing the associativity of `.' from xfy to yfx and
|
||||
from precedence 600 to 10.
|
||||
|
||||
* Field access notation can now be used at the top-level in func and
|
||||
mode declarations and in the head of a clause for a user-defined
|
||||
field access function. That is, one can now write
|
||||
|
||||
:- func a ^ f(b) = c.
|
||||
:- mode a ^ f(b) = c is <detism>.
|
||||
A ^ f(B) = ...
|
||||
|
||||
* Mercury's support for impure code now also includes support for
|
||||
impure higher-order code.
|
||||
|
||||
Specifically, impurity annotations can be used on higher-order types,
|
||||
lambda expressions, and higher-order calls; higher-order terms are
|
||||
permitted to call impure or semipure code provided that they are
|
||||
appropriately annotated as such.
|
||||
|
||||
For details, see the "Higher-order impurity" section of the "Impurity"
|
||||
chapter of the Mercury Language Reference Manual.
|
||||
|
||||
* `..' is now accepted as an infix operator. That means a list of
|
||||
successive integers can now be written as X .. Y. For example:
|
||||
|
||||
1 .. 5 = [1, 2, 3, 4, 5]
|
||||
|
||||
|
||||
Changes to the Mercury standard library:
|
||||
|
||||
* We've add the function queue.from_list/1 as a synonym for
|
||||
queue.list_to_queue/1, function queue.to_list/1 (and predicate
|
||||
queue.to_list/2) as the converse of queue.from_list/1, queue.put_on_front/2
|
||||
(and predicate queue.put_on_front/3) to put items on to the front of a
|
||||
queue, queue.put_list_on_front/2 (and predicate queue.put_list_on_front/3)
|
||||
to put a list of items on to the front of a queue, and predicate
|
||||
queue.get_from_back/3 which removes the last element from a queue.
|
||||
|
||||
* We've added the function pqueue.from_assoc_list/1 as a synonym
|
||||
for pqueue.assoc_list_to_pqueue/1.
|
||||
|
||||
* We've added functions set.from_list/1 and set.from_sorted_list/1
|
||||
as synonyms for set.list_to_set/1 and set.sorted_list_to_set/1
|
||||
respectively. Similar additions have also been made to the
|
||||
set_unordlist, set_ordlist and set_bbbtree modules.
|
||||
|
||||
* We've added some new higher-order predicates, rbtree.foldl2/6
|
||||
rbtree.foldl3 and rbtree.transform_value to the rbtree module. The
|
||||
predicate rbtree.remove/3 has been deprecated.
|
||||
|
||||
* We've add some new predicates and functions to int.m.
|
||||
int.fold_up/4, int.fold_down/4, int.fold_up/5, int.fold_down/5,
|
||||
int.fold_up2/7 and int.fold_down2/7 support iteration over
|
||||
contiguous integer ranges.
|
||||
|
||||
* The predicate int.to_float/2 has now been deprecated.
|
||||
|
||||
* We've added a new library module, `array2d', for two-dimensional arrays.
|
||||
|
||||
* We've added a new module, cord, for sequences with O(1) consing and
|
||||
concatenation. A cord is essentially a tree structure with data stored
|
||||
in the leaf nodes. Joining two cords together to construct a new cord
|
||||
is therefore an O(1) operation.
|
||||
|
||||
* The dir module now handles Microsoft Windows pathnames correctly.
|
||||
|
||||
* dir__split_name and dir__basename are now semidet, not det.
|
||||
dir__split_name fails for root directories or pathnames not
|
||||
containing a directory separator.
|
||||
dir__basename fails for root directories.
|
||||
|
||||
* We've added some new predicates and functions to the dir module:
|
||||
basename_det/1,
|
||||
expand_braces/1,
|
||||
is_directory_separator/1,
|
||||
make_directory/4,
|
||||
make_single_directory/4,
|
||||
foldl2/6,
|
||||
parent_directory/0,
|
||||
path_name_is_absolute/1,
|
||||
path_name_is_root_directory/1,
|
||||
recursive_foldl2/7.
|
||||
|
||||
* We've added several new predicates to the io module:
|
||||
have_symlinks/0,
|
||||
make_symlink/4,
|
||||
follow_symlink/4,
|
||||
check_file_accessibility/5,
|
||||
file_type/4,
|
||||
input_stream_foldl2_io_maybe_stop/{6,7},
|
||||
binary_input_stream_foldl2_io_maybe_stop/{6,7}.
|
||||
|
||||
* We've added several new predicates and functions to the bimap module:
|
||||
det_insert,
|
||||
forward_search,
|
||||
reverse_search,
|
||||
from_corresponding_lists,
|
||||
map_keys,
|
||||
map_values,
|
||||
det_insert_from_assoc_list,
|
||||
det_insert_from_corresponding_lists,
|
||||
set_from_assoc_list,
|
||||
set_from_corresponding_lists,
|
||||
delete_key,
|
||||
delete_value,
|
||||
delete_keys,
|
||||
delete_values,
|
||||
overlay,
|
||||
apply_forward_map_to_list,
|
||||
apply_reverse_map_to_list,
|
||||
foldl
|
||||
|
||||
* We've added predicates relation__lookup_key_set_from/3 and
|
||||
relation__lookup_key_set_to/3.
|
||||
|
||||
* The type of the arguments giving the initial set of visited nodes
|
||||
to relation__dfs and relation__dfsrev has changed from set_bbbtree
|
||||
to sparse_bitset.
|
||||
|
||||
* Efficiency of the operations in the relation module has been
|
||||
greatly improved.
|
||||
|
||||
* Some predicates and functions have been added to the sparse_bitset module:
|
||||
to_set/1,
|
||||
from_set/1,
|
||||
member/2,
|
||||
foldl/4,
|
||||
foldr/4.
|
||||
|
||||
* exception.m now contains a predicate finally/6 which can be used to
|
||||
ensure that resources are released whether a called closure exits
|
||||
normally or throws an exception.
|
||||
|
||||
* exception.m now contains a predicate throw_if_near_stack_limits which
|
||||
can be used to prevent an application running out of stack space.
|
||||
|
||||
* We've changed the interface of exception.try_all/2 to separate
|
||||
exceptional results from normal results.
|
||||
|
||||
* We've added predicates multi_map.to_flat_assoc_list/2 and
|
||||
multi_map.from_flat_assoc_list/2.
|
||||
|
||||
* Several new functions have been added to the string module, namely
|
||||
elem/2, unsafe_elem/2, chomp/1, lstrip/1, lstrip/2, rstrip/1, rstrip/2,
|
||||
strip/1, prefix_length/2, suffix_length/2, string/1, string/2, string/4
|
||||
and string.det_to_float/1.
|
||||
|
||||
* We've added some new predicates, list__map2_foldl, list__map_foldl3,
|
||||
and list__foldl4 to list.m.
|
||||
|
||||
* We've added a predicate, list__cons/3 to list.m. This is sometimes
|
||||
useful with higher-order code. It can also be useful with state
|
||||
variables. We've also added a function version.
|
||||
|
||||
* We've added some new predicates, map__common_subset, map__foldl3,
|
||||
map__overlay_large_map and map__transform_value, to map.m.
|
||||
|
||||
* We've added a predicate, map_fold, to set.m.
|
||||
|
||||
* We've added a function, pred_to_bool, to bool.m.
|
||||
|
||||
* We've added the three predicates, `is_nan/1', `is_inf/1' and
|
||||
`is_nan_or_inf/1' to float.m. These predicates are for use only on
|
||||
systems which support IEEE floating point arithmetic.
|
||||
|
||||
* We've added a function version of `hash_table__search/3'.
|
||||
|
||||
* We've added a predicate, copy_mutvar, to store.m.
|
||||
|
||||
* We've added a function, clk_tck, to time.m.
|
||||
|
||||
* builtin.m now contains types and insts `unify' and `compare' for use
|
||||
in defining user-defined equality and comparison predicates.
|
||||
|
||||
* builtin.m now defines insts `new' and `old' as synonyms for `free' and
|
||||
`any', respectively, since some of the HAL literature uses this terminology.
|
||||
Likewise it defines modes `no' for `new >> old' and `oo' for `old >> old'.
|
||||
|
||||
* We've fixed some problems with the use of `cc_nondet'.
|
||||
|
||||
The incorrect cc_nondet modes of the following predicates have been removed:
|
||||
deconstruct.arg/4
|
||||
deconstruct.named_arg/4
|
||||
deconstruct.limited_deconstruct/6
|
||||
std_util.arg_cc/3
|
||||
std_util.argument_cc/3
|
||||
std_util.named_argument_cc/3
|
||||
std_util.limited_deconstruct_cc/5
|
||||
These have been replaced by cc_multi versions in which success or failure
|
||||
is indicated by returning a maybe type.
|
||||
|
||||
* We've added functions get_equivalent_elements, get_minimum_element and
|
||||
remove_equivalent_elements to eqvclass.m.
|
||||
|
||||
* We've added semidet functions max_key and min_key to return the maximum and
|
||||
minimum keys in maps and 2-3-4 trees.
|
||||
|
||||
* We've added predicates member, remove_leq, remove_gt, foldl and filter
|
||||
to sparse_bitset.m.
|
||||
|
||||
* builtin.m now contains types and insts `unify' and `compare' for use
|
||||
in defining user-defined equality and comparison predicates.
|
||||
|
||||
* The following predicates, which were added in 0.11.0, have been deprecated:
|
||||
io.current_input_stream/3
|
||||
io.current_output_stream/3
|
||||
io.current_binary_input_stream/3
|
||||
io.current_binary_output_stream/3
|
||||
They were identical to the following long-existing predicates with
|
||||
similar names:
|
||||
io.input_stream/3
|
||||
io.output_stream/3
|
||||
io.binary_input_stream/3
|
||||
io.binary_output_stream/3
|
||||
|
||||
* The following functions have been added to the integer module:
|
||||
integer.zero/0
|
||||
integer.one/0
|
||||
integer.det_from_string/1
|
||||
integer.pow/2
|
||||
|
||||
The predicate integer.pow/3 has been deprecated.
|
||||
|
||||
* We've added some functions, rational.int/1, rational.from_integer/1,
|
||||
rational.from_integers/2 and rational.reciprocal/1 to rational.m
|
||||
The function rational.rational_from_integers/2 has been deprecated.
|
||||
|
||||
* A new module `term_to_xml' has been added to the standard library. This
|
||||
module contains predicates to write arbitrary Mercury terms to an output
|
||||
stream as XML. Automatic generation of DTDs for Mercury types is also
|
||||
supported. Once a Mercury term is in XML it can be converted to many other
|
||||
formats such as HTML or XUL using an appropriate stylesheet.
|
||||
|
||||
Changes to the Mercury compiler:
|
||||
|
||||
* We have added optional support for a new type-accurate garbage collector
|
||||
as an alternative to using the Boehm et al conservative collector.
|
||||
|
||||
The new collector is enabled by `--grade hlc.agc'.
|
||||
For details about how it works, see the paper
|
||||
"Accurate garbage collection in an uncooperative environment"
|
||||
which is available via our web page.
|
||||
|
||||
Note that the new collector is a very naive copying collector, and still
|
||||
has a number of serious limitations which may make it undesirable for
|
||||
most applications. It only works with `--high-level-code'. The heap
|
||||
size is fixed at program startup; the collector does not attempt to
|
||||
resize the heap. It does not do cheap heap reclamation on backtracking.
|
||||
There is no support for passing terms on the Mercury heap to C code.
|
||||
In most cases, the Boehm et all conservative collector will perform better.
|
||||
|
||||
* There's a new warning option `--warn-dead-procs' which can be used
|
||||
for detecting unreachable code.
|
||||
|
||||
This is not yet enabled by default, because it can cause some spurious
|
||||
warnings in modules containing code which mixes Mercury clauses and
|
||||
`pragma foreign_proc' declarations for the same procedure.
|
||||
|
||||
* `mmc --make' now works correctly with Microsoft Visual C++.
|
||||
|
||||
* It's now easier to use shared libraries on Linux/x86 systems with
|
||||
`mmc --make'. See the documentation for the `--mercury-linkage'
|
||||
and `--linkage' options and the `MERCURY_LINKAGE' Mmake variable
|
||||
in the Mercury User's Guide.
|
||||
|
||||
* The behaviour of the `--pre-link-command' and `--extra-init-command'
|
||||
options has changed. They now take a command which will be passed
|
||||
the names of all source files in the program or library, with the
|
||||
name of the main module's source file passed first.
|
||||
See the "Build system options" section of the "Invocation" chapter
|
||||
of the Mercury User's Guide for details.
|
||||
|
||||
* It is now possible to reconfigure an existing Mercury installation
|
||||
to use a different C compiler. See the "C compilers" chapter
|
||||
of the Mercury User's Guide for details.
|
||||
|
||||
* Inlining of builtins can now be disabled using the `--no-inline-builtins'
|
||||
option. This is done by default when debugging, as without this option the
|
||||
execution of builtins is not traced.
|
||||
|
||||
* The Mercury compiler now uses `.' and not `:' as the module separator
|
||||
in all output.
|
||||
|
||||
* The environment variables which were previously used to override the
|
||||
location of the standard library (MERCURY_ALL_C_INCL_DIRS,
|
||||
MERCURY_ALL_MC_C_INCL_DIRS, MERCURY_INT_DIR, MERCURY_C_LIB_DIR,
|
||||
MERCURY_MOD_LIB_MODS, MERCURY_TRACE_LIB_MODS) have been removed.
|
||||
|
||||
* There is a new analysis: `--analyse-exceptions'. This identifies
|
||||
predicates that will not throw an exception. This information is
|
||||
made available to the optimizing passes of the compiler.
|
||||
|
||||
Portability improvements:
|
||||
|
||||
* We have made the implementation compatible with gcc 3.4.
|
||||
* Shared libraries now work on Mac OS X.
|
||||
|
||||
Changes to the Mercury debugger:
|
||||
|
||||
* Users can now limit the output from stack traces.
|
||||
|
||||
The mdb command `stack' now takes an optional integer argument that
|
||||
specifies the maximum number of stack frames to be printed.
|
||||
|
||||
* Users can now put breakpoints on unify and compare predicates.
|
||||
|
||||
The syntax for procedure specifications now has provision for specifying
|
||||
unify and compare predicates.
|
||||
|
||||
* Users can now save runtime values to files.
|
||||
|
||||
We've added a new mdb command, `save_to_file', that saves a specified term
|
||||
to a specified file.
|
||||
|
||||
* The declarative debugger can now be told to trust entire modules or
|
||||
individual predicates or functions using the `trust' mdb command.
|
||||
|
||||
* The declarative debugger can now also tell you where a value
|
||||
appearing in an atom came from (i.e. the call which constructed the value).
|
||||
|
||||
* The declarative debugger also now supports a divide-and-query search mode.
|
||||
You can tell the declarative debugger to use this search mode by invoking
|
||||
it with the command `dd -s divide_and_query'.
|
||||
|
||||
* The "pretty" and "raw_pretty" print formats have had their names swapped, so
|
||||
the "pretty" format is now prettier than the "raw_pretty" format.
|
||||
|
||||
Changes to the compiler back-ends:
|
||||
|
||||
* The .NET CLR back-end now bootstraps.
|
||||
|
||||
We've fixed a lot of bugs, and implemented a lot more of the Mercury
|
||||
standard library. As well as being able to bootstrap in grade `il',
|
||||
we also now pass more than 90% of the applicable tests in the
|
||||
Mercury test suite. See README.DotNet for details.
|
||||
|
||||
* Improvements to the Java back-end.
|
||||
|
||||
We've fixed a lot of bugs, and implemented a lot more of the Mercury
|
||||
standard library. See README.Java for further details on the status
|
||||
of this backend.
|
||||
|
||||
|
||||
For news about earlier versions, see the HISTORY file.
|
||||
|
||||
@@ -76,7 +76,7 @@ call "C:\Program Files\Microsoft Visual Studio.NET\Common7\Tools\vsvars32.bat"
|
||||
If you're reading this file from somewhere other than the Mercury
|
||||
distribution, try the Mercury homepage at:
|
||||
|
||||
<http://www.cs.mu.oz.au/mercury/>
|
||||
<http://www.mercury.csse.unimelb.edu.au>
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
@@ -145,7 +145,7 @@ For example:
|
||||
For more information about the foreign language interface, refer to the Mercury
|
||||
Language Reference Manual, which you can find at:
|
||||
|
||||
<http://www.cs.mu.oz.au/mercury/information/documentation.html>
|
||||
<http://www.mercury.csse.unimelb.edu.au/information/documentation.html>
|
||||
|
||||
The implementation will put this C# in a separate file, which will be
|
||||
compiled with Microsoft's C# compiler. Mmake will automatically
|
||||
@@ -187,7 +187,7 @@ RESOURCES
|
||||
|
||||
You might find the following pages useful:
|
||||
|
||||
<http://www.cs.mu.oz.au/research/mercury/dotnet.html>
|
||||
<http://www.mercury.csse.unimelb.edu.au/mercury/dotnet.html>
|
||||
|
||||
<http://msdn.microsoft.com/netframework/>
|
||||
|
||||
|
||||
11
README.Java
11
README.Java
@@ -27,7 +27,7 @@ In order to try this system you will need
|
||||
|
||||
If you're reading this file from somewhere other than the
|
||||
Mercury distribution, try the Mercury homepage at
|
||||
<http://www.cs.mu.oz.au/mercury/>
|
||||
<http://www.mercury.csse.unimelb.edu.au>
|
||||
WARNING
|
||||
|
||||
Please note that the Java backend is still an experimental feature. It
|
||||
@@ -80,7 +80,8 @@ implemented using pure mercury code.
|
||||
|
||||
For more information about the foreign language interface, see the Mercury
|
||||
Language Reference Manual, which you can find at:
|
||||
<http://www.cs.mu.oz.au/mercury/information/documentation.html>
|
||||
|
||||
<http://www.mercury.csse.unimelb.edu.au/information/documentation.html>
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
@@ -88,11 +89,11 @@ RESOURCES
|
||||
|
||||
You might find the following pages useful:
|
||||
|
||||
<http://www.cs.mu.oz.au/research/mercury/java.html>
|
||||
<http://www.mercury.csse.unimelb.edu.au/backends.html>
|
||||
|
||||
<http://java.sun.com/reference/api/index.html>
|
||||
<http://java.sun.com/reference/api/index.html>
|
||||
|
||||
<http://www.cs.mu.oz.au/mercury/information/documentation.html>
|
||||
<http://www.mercury.csse.unimelb.edu.au/information/documentation.html>
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
|
||||
@@ -1,2 +1,4 @@
|
||||
For information about the GCC-based native-code back-end for the Mercury
|
||||
compiler, see <http://www.cs.mu.oz.au/mercury/download/gcc-backend.html>.
|
||||
compiler, see:
|
||||
|
||||
<http://www.mercury.csse.unimelb.edu.au/download/gcc-backend.html>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
We are pleased to announce the release of version 0.12 of the Mercury system.
|
||||
We are pleased to announce the release of version 0.13 of the Mercury system.
|
||||
|
||||
Mercury is a modern general-purpose programming language, designed and
|
||||
implemented by a small group of researchers at the University of
|
||||
@@ -141,8 +141,8 @@ generates code that is significantly better than all previous Prolog
|
||||
systems known to us. However, the system does not need these
|
||||
extensions, and will work in their absence.
|
||||
|
||||
The current Mercury system has been tested on Linux (x86),
|
||||
Solaris 8 (x86), MacOS X (PowerPC), and Windows (x86).
|
||||
The current Mercury system has been tested on Linux (x86), Linux (x86_64),
|
||||
Solaris 9 (x86), Mac OS X (PowerPC), and Windows (x86).
|
||||
For Windows, we have have tested this release only on Windows XP Pro
|
||||
but it should also run fine on Windows 95, 98, ME, NT, and 2000.
|
||||
|
||||
@@ -152,7 +152,7 @@ Compaq Tru64 Unix (Alpha), Solaris 2.7 (SPARC)
|
||||
|
||||
It should run without too many changes on other Unix variants as well.
|
||||
If you do encounter any problems, please report them to
|
||||
<mercury-bugs@cs.mu.oz.au> (see the BUGS file).
|
||||
<mercury-bugs@csse.unimelb.edu.au> (see the BUGS file).
|
||||
|
||||
We recommend that you use gcc as the C compiler, preferably
|
||||
gcc version 3.2 or later. Do not use gcc versions 2.96, 3.0
|
||||
@@ -188,7 +188,6 @@ The "mercury-extras" distribution contains some extra libraries for:
|
||||
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 an autotesting tool similar to Haskell's QuickCheck
|
||||
o UIs:
|
||||
@@ -212,7 +211,7 @@ The three components of the Mercury distribution are available
|
||||
via anonymous ftp or WWW from the following locations:
|
||||
|
||||
Australia:
|
||||
ftp://ftp.mercury.cs.mu.oz.au/pub/mercury
|
||||
ftp://ftp.mercury.csse.unimelb.edu.au/pub/mercury
|
||||
|
||||
We hope to be able to make it available at the following sites
|
||||
too, eventually:
|
||||
@@ -227,9 +226,11 @@ too, eventually:
|
||||
Europe:
|
||||
ftp://ftp.csd.uu.se/pub/Mercury
|
||||
|
||||
The home page of the project on the Web is <http://www.cs.mu.oz.au/mercury/>.
|
||||
The home page of the project on the Web is:
|
||||
|
||||
<http://www.mercury.csse.unimelb.edu.au>.
|
||||
|
||||
--
|
||||
The Mercury Team <http://www.cs.mu.oz.au/mercury/people.html>
|
||||
The Mercury Team <http://www.csse.unimelb.edu.au/contact/people.html>
|
||||
Department of Computer Science and Software Engineering
|
||||
The University of Melbourne, Australia
|
||||
|
||||
@@ -3,7 +3,7 @@ University of Melbourne Mercury compiler, version <VERSION>,
|
||||
built on a `<FULLARCH>' system.
|
||||
|
||||
The Mercury implementation is free software, but it is Copyright (C)
|
||||
1993-2005 The University of Melbourne. It is distributed under the
|
||||
1993-2006 The University of Melbourne. It is distributed under the
|
||||
terms of the GNU General Public License. See the file COPYING for
|
||||
copying permission. The Mercury library and runtime (libmer_std.* and
|
||||
libmer_rt.*) are distributed under the terms of the GNU Library General
|
||||
@@ -13,7 +13,7 @@ please contact us! We are willing to come to alternative arrangements,
|
||||
if the need should arise.)
|
||||
|
||||
This distribution also contains a slightly modified version of the
|
||||
conservative garbage collector distributed by Hans Boehm, version 5.0alpha3,
|
||||
conservative garbage collector distributed by Hans Boehm, version 6.5,
|
||||
which has the following copyright attached (taken from the README file
|
||||
of the garbage collector source):
|
||||
|
||||
@@ -71,16 +71,18 @@ For examples of larger programs, download the Mercury source distribution -
|
||||
the Mercury compiler and the Mercury profiler are written in Mercury.
|
||||
|
||||
For more information about Mercury, see the Mercury WWW home page at
|
||||
<http://www.cs.mu.oz.au/mercury/>, or send mail to mercury@cs.mu.oz.au.
|
||||
<http://www.mercury.csse.unimelb.edu.au>, or send mail to
|
||||
mercury@csse.unimelb.edu.au.
|
||||
|
||||
If you would like to join the Mercury mailing lists (there are two,
|
||||
mercury-users for general discussion, and mercury-announce for
|
||||
announcements), send mail with "subscribe" in the body to
|
||||
mercury-users-request@cs.mu.oz.au or mercury-announce-request@cs.mu.oz.au
|
||||
(respectively).
|
||||
mercury-users-request@csse.unimelb.edu.au or
|
||||
mercury-announce-request@csse.unimelb.edu.au (respectively).
|
||||
|
||||
Please send bug reports, enhancement requests, suggestions for improvements,
|
||||
and any other feedback to mercury-bugs@cs.mu.oz.au or mercury@cs.mu.oz.au.
|
||||
and any other feedback to mercury-bugs@csse.unimelb.edu.au or
|
||||
mercury@csse.unimelb.edu.au.
|
||||
If you find something you don't like, please tell us.
|
||||
If you find something you do like, please tell the world!
|
||||
|
||||
@@ -88,7 +90,7 @@ The Mercury binary and source distributions are available via anonymous
|
||||
ftp or WWW from the following locations:
|
||||
|
||||
Home site:
|
||||
Australia: ftp://ftp.mercury.cs.mu.oz.au/pub/mercury/
|
||||
Australia: ftp://ftp.mercury.csse.unimelb.edu.au/pub/mercury/
|
||||
|
||||
Mirrors:
|
||||
Sweden: ftp://ftp.csd.uu.se/pub/Mercury/
|
||||
|
||||
@@ -248,7 +248,7 @@ than usual.
|
||||
but it still didn't work. What do I do next?}
|
||||
@sp 1
|
||||
|
||||
Send email to @code{mercury-bugs@@cs.mu.oz.au},
|
||||
Send email to @code{mercury-bugs@@csse.unimelb.edu.au},
|
||||
and we'll try to solve your problem.
|
||||
|
||||
@end enumerate
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
#-----------------------------------------------------------------------------#
|
||||
# Copyright (C) 1997-1998, 2002 The University of Melbourne.
|
||||
# Copyright (C) 1997-1998, 2002, 2006 The University of Melbourne.
|
||||
# This file may only be copied under the terms of the GNU General
|
||||
# Public Licence - see the file COPYING in the Mercury distribution.
|
||||
#-----------------------------------------------------------------------------#
|
||||
@@ -100,13 +100,13 @@ $last_half
|
||||
.SH AUTHORS
|
||||
The Mercury team.
|
||||
.P
|
||||
See <http://www.cs.mu.oz.au/mercury/contact/people.html>.
|
||||
See <http://www.mercury.csse.unimelb.edu.au/contact/people.html>.
|
||||
.SH COPYRIGHT
|
||||
This program and its documentation are copyright by the University of Melbourne.
|
||||
They may be copied only under the terms of the GNU General Public License \-
|
||||
see the file COPYING in the Mercury distribution.
|
||||
.SH "SEE ALSO"
|
||||
<http://www.cs.mu.oz.au/mercury/information/documentation.html>
|
||||
<http://www.mercury.csse.unimelb.edu.au/information/documentation.html>
|
||||
.P
|
||||
The Mercury User's Guide.
|
||||
.P
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
</UL>
|
||||
<P>
|
||||
<UL>
|
||||
<LI><A HREF="http://www.cs.mu.oz.au/mercury">Mercury Home Page</A>
|
||||
<LI><A HREF="http://www.mercury.csse.unimelb.edu.au">Mercury Home Page</A>
|
||||
</UL>
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
@@ -18,5 +18,5 @@ Mercury Documentation, version <VERSION>
|
||||
* Prolog to Mercury Transition Guide: (mercury_trans_guide)
|
||||
* Frequently Asked Questions: (mercury_faq)
|
||||
|
||||
See also the Mercury WWW home page <http://www.cs.mu.oz.au/mercury/>.
|
||||
See also the Mercury WWW home page <http://www.mercury.csse.unimelb.edu.au>.
|
||||
|
||||
|
||||
@@ -8,10 +8,6 @@ running `mmake install'.
|
||||
cgi A couple of Mercury library modules for doing HTML forms
|
||||
programming using CGI (Common Gateway Interface).
|
||||
|
||||
clpr A Mercury interface to the CLP(R) constraint solver,
|
||||
for solving arithmetic constraints on (floating point)
|
||||
real numbers.
|
||||
|
||||
complex_numbers
|
||||
A Mercury library package containing support for
|
||||
complex and imaginary numbers.
|
||||
@@ -34,9 +30,9 @@ dynamic_linking
|
||||
that are supported by most modern Unix systems.
|
||||
|
||||
graphics Some packages for doing graphics programming
|
||||
and GUIs in Mercury: a Mercury interface to tcl/tk,
|
||||
a Mercury binding to OpenGL and a Mercury binding to
|
||||
GLUT.
|
||||
and GUIs in Mercury: a Mercury interface to Tcl/Tk,
|
||||
a Mercury binding to OpenGL, a Mercury binding to
|
||||
GLUT and simplified binding to Xlib.
|
||||
|
||||
lazy_evaluation
|
||||
A library module `lazy' containing support for optional
|
||||
@@ -44,7 +40,7 @@ lazy_evaluation
|
||||
of its use, including a module `lazy_list' that defines
|
||||
a lazy list data type.
|
||||
|
||||
lex A lexer package for Mercury that works over io__states,
|
||||
lex A lexer package for Mercury that works over the IO state,
|
||||
strings, and so forth. It comes with a rich set of
|
||||
standard regular expressions and the user is free to add
|
||||
their own.
|
||||
|
||||
@@ -608,7 +608,7 @@ array.init(Size, Item, Array) :-
|
||||
// XXX A better solution then using the null pointer to represent
|
||||
// the empty array would be to create an array of size 0. However
|
||||
// we need to determine the element type of the array before we can
|
||||
// do that. This could be done by examing the RTTI of the array
|
||||
// do that. This could be done by examining the RTTI of the array
|
||||
// type and then using System.Type.GetType(""<mercury type>"") to
|
||||
// determine it. However constructing the <mercury type> string is
|
||||
// a non-trival amount of work.
|
||||
|
||||
@@ -82,7 +82,7 @@
|
||||
|
||||
% graph.search_node(Graph, NodeInfo, Node) nondeterministically
|
||||
% produces bindings of Node such that Node is a node in Graph
|
||||
% that has the information NodeInfo attatched to it.
|
||||
% that has the information NodeInfo attached to it.
|
||||
%
|
||||
% This operation is O(lgN) for the first solution for a graph
|
||||
% containing N nodes.
|
||||
|
||||
@@ -20,7 +20,7 @@ calculator.m A simple four-function arithmetic calculator,
|
||||
|
||||
calculator2.m A simple four-function arithmetic calculator,
|
||||
which uses the parser module in the standard
|
||||
library with a user-defined operator precendence
|
||||
library with a user-defined operator precedence
|
||||
table.
|
||||
|
||||
committed_choice.m An example illustrating committed-choice
|
||||
|
||||
Reference in New Issue
Block a user