In (at least) two places we say that partial instantiation doesn't work or
isn't supported. This has raised confusion so this patch attempts to
explain what exactly is unsupported and why.
doc/reference_manual.texi:
library/list.m:
LIMITATIONS:
As above.
library/list.m:
Delete deprecated modes.
Move partial instantiation states and modes into a private interface
section. Note all of the instantiation states are partial, some can be
safely used for subtyping so I've left those where they are.
LIMITATIONS:
Include Zoltan's explanation of why this doesn't work for our future
selves and others.
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.
Estimated hours taken: 3
Allow a predicate to have matching `cc' and `non-cc' modes.
compiler/det_analysis.m:
If there is a call to a cc procedure in a non-cc context,
then search for a mode of that predicate which is
identical to the called mode except that it is not cc.
If such a mode is found, use it, rather than reporting
an error.
compiler/modecheck_call.m:
Add predicate modes_are_identical_bar_cc, for use by
det_analysis.m.
NEWS:
LIMITATIONS:
doc/reference_manual.texi:
Document the new feature and delete documentation about the
lack of this feature.
tests/hard_coded/Mmakefile:
tests/hard_coded/cc_and_non_cc_test.m:
tests/hard_coded/cc_and_non_cc_test.exp:
Add a test case for the new feature.
Estimated hours taken: 6
Change the way mode analysis chooses which mode of a predicate to call.
If there are multiple matching modes, choose the best one, rather
than just the first one. "Best" is determined by comparing the
argument insts and livenesses, and (if that fails) determinism
of all the modes which do match. If two modes are equal, or
incomparable, in this partial ordering, we choose the first one
(according to the order in which they were declared).
Still to do (will be committed seperately): delete the hacks in make_hlds.m
etc. that assign mode numbers with a priority based on determinism.
compiler/modecheck_call.m:
For calls to predicates with multiple modes, find all the modes
which match and select the best one, rather than just picking
the first one that matches.
compiler/det_report.m:
Export compare_determinism/3, for use by modecheck_call.m.
NEWS:
LIMITATIONS:
We've fixed one of the limitations: unique mode declarations
no longer have to precede non-unique mode declarations.
tests/hard_coded/Mmake:
tests/hard_coded/mode_choice.m:
tests/hard_coded/mode_choice.exp:
Some tests cases for this change.
Estimated hours taken: 0.5
Update the documentation in preparation for the next release.
NEWS:
Move the "Work in Progress" section to a separate file.
Make the typography more consistent. Various minor cleanups.
WORK_IN_PROGRESS:
New file, containing a cleaned up version of the
"Work in Progress" section from the NEWS file.
BUGS, LIMITATIONS:
Minor wording changes.
Estimated hours taken: 0.5
Update the documentation in preparation for the next release.
BUGS:
Remove entries for bugs that we have fixed.
Point out that the bug with profiling & shared libraries
on DEC Alpha is Digital's fault, not ours.
LIMITATIONS:
Remove the entry for a limitation that we have fixed
(module qualifiers are fully implemented now, I think).
Add a brief remark about limitations in type and mode inference.
README:
Mention man pages, README.Linux, and README.MS-Windows.
Mention copyright on extras/graphics/Togl-1.2.
Remove mention of copyright on runtime/timing.c.
INSTALL:
Fix a mistake (`mmake install_opt_library' should have been
`mmake install_split_library').
Update the list of architectures for which we support gcc global
registers.
Estimated hours taken: 5
Allow the names of higher order types to be generated.
LIMITATIONS:
Document limitations introduced by this change.
compiler/polymorphism.m:
Map higher order predicates to pred/0 and functions to func/0.
library/mercury_builtin.m:
Move base_type_* for pred/0 out of library (into runtime).
library/std_util.m:
Check for pred/0 and func/0 when comparing type infos.
Create different ctor_infos for higher order preds, decode them
correctly for args and functors when needed.
Print functions nicely (eg func(foo) = bar).
Fix ML_create_type_info so it works correctly with higher order
types.
runtime/type_info.h:
Define macros to deal with new representation of higher order
ctor_infos.
runtime/deep_copy.c:
Fix make_type_info so it works correctly with higher order
types.
runtime/Mmakefile:
runtime/type_info.mod:
Add definitions for pred/0 and func/0 in runtime, they are
needed by deep copy.
tests/hard_coded/Mmake:
tests/hard_coded/higher_order_type_manip.exp:
tests/hard_coded/higher_order_type_manip.m:
Test case for this change.
Estimated hours taken: 0.5
LIMITATIONS:
Remove the mention of limitations on call/N, since those
limitations are now fixed.
NEWS:
Explain functional syntax a bit more.
Add note mentioning that the limitations on call/N have been fixed.
Estimated hours taken: 0.0833
Add documentation of one of the current limitations.
mercury/LIMITATIONS:
Add documentation of the limitation that call/N arguments have
input before output arguments.
RELEASE_NOTES:
Update for version 0.4.
Include the NEWS file, reformatted slightly.
NEWS:
Reformatted slightly to match the copy in RELEASE_NOTES.
LIMITATIONS:
A few minor changes.