Branches: 10.04, main
Rewrite the BUGS file -- the (old) bugs that used to be listed here
have been shifted into the bug database, or have been deleted.
BUGS:
Mention the bug database -- mention that the list of current
bugs is located there.
Delete entries for bugs that are now in the bug database.
Mention that bug reports should include the name and version
of the C/Java/Erlang compiler involved and the command line
options used with mmc.
Estimated hours taken: 16
Branches: main
Replace the workaround for the bootstrapping problem with deep profiling grades
with a proper fix. The fix requires changing the builtin generic unify and
compare routines by removing the pretest comparing the two argument words
for equality. Since this can alter the algorithmic complexity of the program
(for the worse) which a profiler should definitely avoid, we compensate for
this by adding the pretest to the compiler-generated unify and compare
predicates. Since these pretests are executed even when the deleted pretest
wouldn't be, this can also alter algorithmic complexity (for the better)
at the cost of higher constant factors. However, the likelyhood of such
alteration is much smaller: if the top level of a term doesn't match, chances
are most of the function symbols at the lower levels won't match either.
In any case, the user has the option of getting this better algorithmic
complexity anyway by specifying the new option --should-pretest-equality.
However, until we have more experience with it, the documentation of the
new option is commented out.
runtime/mercury_conf_param.h:
Remove the workaround.
runtime/mercury_unify_compare_body.h:
Remove the problematic pretest, and document the problem that would
occur in its presence. Document the user_by_rtti dummy type
constructor. Fix some misleading abort messages.
compiler/options.m:
Add the --should-pretest-equality option.
Add (commented out) documentation for another option for which it was
missing.
doc/user_guide.texi:
Add (commented out) documentation for the new option, and for some
others which it was missing.
compiler/handle_options.m:
Make deep profiling imply the need for pretests in compiler generated
unify and compare predicates.
compiler/unify_proc.m:
If the new option is set, add pretests to unify and compare predicates.
We have to be careful to make sure that we don't add pretests if they
would try to unify two non-ground terms, or if the unification is
guaranteed to fail (since the casts in the pretest would obscure this
fact).
Implementing this required changing the approach of this module.
Instead of most predicates generating single clauses, they now generate
disjuncts for a disjunction that itself can be put inside the
if-then-else whose condition is the pretest. Since these predicates
not longer generate clauses, their names have been changed accordingly.
compiler/hlds_goal.m:
Add a goal feature for marking an if-then-else as representing
a pretest.
compiler/saved_vars.m:
Handle the new goal feature.
compiler/goal_util.m:
Add a function for stripping pretests away.
compiler/post_term_analysis.m:
compiler/term_constr_build.m:
compiler/term_pass1.m:
compiler/term_pass2.m:
Strip pretests away before termination analysis, since the analysis
can't yet prove termination in the presence of the pretest.
compiler/prog_type.m:
Add some auxilary predicates, and change the signature of an existing
predicate to make it more convenient to use.
compiler/type_util.m:
Conform to the change in prog_type.m, and in the process fix code to
avoid the assumption that the names of standard library modules are
unqualified (since the plan is to put them in package "std").
tests/hard_coded/profdeep_seg_fault.{m,exp}:
Fix the test case to be more readable and to generate properly
line-terminated output, now that we pass it.
BUGS:
Remove the entry for the bug fixed by this diff.
Estimated hours taken: 0.5
Branches: main
Merge late changes from the 0.13 branch onto the main branch.
BUGS:
Merge in additions from the 0.12(!) branch.
HISTORY:
Fix typos and be more consistent about the formatting of dates.
NEWS:
Move the news about checking inst declarations for consistency
with visible type constructors to the post-0.13 news where it belongs.
Merge changes to the 0.13 branch.
README.Solaris:
Merge changes from the 0.13 branch.
compiler/notes/todo.html:
Merge changes from the 0.13 branch.
doc/user_guide.texi:
Merge changes from 0.13 branch related to trace counts
documentation.
extras/curses/sample/smalltest.m:
extras/gator/genotype.m:
extras/references/tests/ref_test.m:
samples/rot13/rot13_ralph.m:
tests/mmc_make/complex_test.m:
tests/mmc_make/lib/complex.m:
Merge minor fixes from the 0.13 branch.
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: 0.1
Branches: main, release
BUGS:
Mention the puzzle_detism_bug and its workaround.
Update a bit of syntax that we shortly won't
support anymore.
Estimated hours taken: 3
Branches: main
Check for cycles in the typeclass hierarchy. This fixes a long-standing
bug whereby the compiler could go into an infinite loop in the polymorphism
stage if cycles were present.
compiler/check_typeclass.m:
Add a pass to check through all visible typeclass declarations and
report when a cycle is found.
The interface to this module has been made more general, to reflect
the fact that it checks the superclass relation as well as instance
declarations.
compiler/mercury_compile.m:
Use the new interface to the check_typeclass module.
compiler/error_util.m:
Add a new format_component for sym_name_and_arity.
BUGS:
Remove the bug report from this file.
tests/invalid/Mmakefile:
test/invalid/cyclic_typeclass.err_exp:
Enable the cyclic_typeclass test, since we now pass it, and add an
expected output file. Also add a couple of new tests.
test/invalid/cyclic_typeclass_2.m:
test/invalid/cyclic_typeclass_2.err_exp:
test/invalid/cyclic_typeclass_3.m:
test/invalid/cyclic_typeclass_3.err_exp:
New test cases.
Estimated hours taken: 0.25
Branches: main
BUGS:
Update the documentation of the GCC global register variable bug
with calls to memcpy() etc.: this bug is fixed in GCC CVS.
Estimated hours taken: 2
Branches: main
Fix a bug where we were missing mode errors, and in some cases generating
incorrect code as a result.
compiler/modecheck_unify.m:
Disallow the case of free-free unifications where both variables
are locked.
tests/invalid/Mmakefile:
tests/invalid/freefree.err_exp
Enable the freefree test case, since we now pass it.
BUGS:
Delete the bug report for this bug.
Estimated hours take: 5.5
Branches: main
Fix a bug in the termination analyser that caused it to ignore
pragma terminates/does_not_terminate declarations.
BUGS:
Delete the description of the bug regarding does_not_terminate
pragmas.
compiler/error_util:
Add a predicate describe_several_pred_names/3.
compiler/term_errors:
Add an error type indicating that the cause of non-termination was
inconsistent termination pragmas.
compiler/termination:
Fix a bug that caused pragma terminates and pragma does_not_terminate
declarations to be ignored.
Check that SCCs in the call-graph have not been annotated with
termination pragmas that are inconsistent.
Remove some old style lambda expressions.
doc/reference_manual.texi:
Describe how pramga terminates/does_not_terminate interact with
mutually recursive procedures.
tests/term/Mmakefile:
tests/term/pragma_non_term.m:
tests/term/pragma_non_term.trans_opt_exp:
tests/term/pragma_term.m:
tests/term/pragam_term.trans_opt_exp:
tests/warnings/Mercury.options:
tests/warnings/Mmakefile:
tests/warnings/pragma_term_conflict.m:
tests/warnings/pragma_term_conflict.exp:
Add some test cases for the termination pragmas.
Estimated hours taken: 3
Branches: main
NEWS:
RELEASE_NOTES:
WORK_IN_PROGRESS:
BUGS:
Update in preparation for the next release.
README.BSDI:
Delete. The contents of this file was mainly a very old patch
(against Mercury 0.3!) which would no longer apply correctly anyway,
so it was doing more harm than good.
Estimated hours taken: 0.1
BUGS:
Add documentation for the GCC bugs causing messages such as:
"fixed or forbidden register 4 (si) was spilled for
class SIREG. This may be due to a compiler bug or to
impossible asm statements or clauses."
Estimated hours taken: 0.25
Update a few files in preparation for release 0.8.
BUGS:
Delete one of the bugs from the list, since we have basically
fixed that one.
NEWS:
s/typeclasses/type classes/g
Estimated hours taken: 0.1
BUGS
Added an entry for spurious ambiguity errors due to
abstract exported equivalence types being made visible
by --intermodule-optimization.
Estimated hours taken: 2
Localize the definition of the version number into a single file.
Automate the building of releases, including daily "rotd"
(release-of-the-day) releases.
VERSION:
New file, defines the version number.
Also document the general scheme for assigning version numbers.
Mmake.common.in:
Add `include VERSION'.
Mmakefile:
bindist/Mmakefile:
configure.in:
Use the version number in VERSION rather than hard-coding it
in multiple places.
Mmakefile:
README:
.README.in:
INSTALL:
.INSTALL.in:
Change things so that README and INSTALL are automatically
generated from .README.in and .INSTALL.in respectively, using
the version number defined in VERSION.
BUGS:
Remove an unnecessary reference to the version number.
RELEASE_NOTES:
Change this file so that the version number is only mentioned
in one place. Bump the version number here to 0.7 in preparation
for the next release.
library/Mmakefile:
library/library.m:
library/library.m.in:
Change things so that library.m is automatically generated from
library.m.in using the version number in VERSION.
Also change it so that library__version says which architecture
it was configured for.
tools/test_mercury:
Override the version specified in the VERSION file in the CVS
repository with either `rotd-YYYY-MM-DD' or (when making a release)
with a specified $RELEASE_VERSION.
When running on murliboobo, if the version built passes all its
tests, copy it to the /pub/mercury/beta-releases directory on
ftp://turiel.cs.mu.oz.au.
compiler/notes/release_checklist.m:
Change the release checklist to say that you only need to
update the version number in VERSION rather than in 6 different
places. Also change the procedure for building the final
tar file to reflect the above changes to the `test_mercury' script.
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.25
Update the documentation in preparation for the next release.
BUGS:
Add an entry for the one bug currently on my outstanding
bugs list that is not already documented either here on
in the LIMITATIONS file.
RELEASE_NOTES:
Add mention of the stuff in the extras directory.
Mention that it works on Windows NT.
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.