Estimated hours taken: Not much at all. :-)
Fixed some stuff in array.m.
library/array.m:
Moved array__fetch_items into the interface. Some general
cleanups of the documentation.
library/*.m:
Improve the documentation.
Add a "Stability: low/medium/high" comment to all modules,
which describes the stability of the interface to that module.
ops.m:
Add `:' as an infix operator.
require.m:
Implement require/1, since higher-order predicates now work.
term.m:
Use the type `comparison_result' from mercury_builtin.m,
rather than defining an identical type `comparison'.
Makefile.mercury:
Override the MERCURY_LIB_OBJS variable when invoking ml.
This avoids some bootstrapping problems.
Also, add mercury_compile.nu.
Makefile.common:
Bump NU-Prolog's -u option up to 2000 (8M), to avoid some memory
problems.
array.nl, bintree.nl, char.nl, dir.nl, globals.nl, list.nl, map.nl, modes.nl,
prog_util.nl, stack.nl, std_util.nl, string.nl, term.nl:
Avoid the use of implied modes.
code_info.nl, bimap.nl, make_hlds.nl, mercury_compile.nl,
mercury_to_mercury.nl, unify_proc.nl:
Fix determinism errors which had previously not been discovered
because of either implied modes or running out of memory.
(Note that I had to change the interface to bimap__lookup, since
it's not possible to make it bidirectional.)
code_util.nl, llds.nl, opt_debug.nl, value_number.nl:
Rename `operator' as `binary_op'.
hlds.nl, code_info.nl, unify_gen.nl, llds.nl, opt_debug.nl, switch_gen.nl:
*** Handle simple cases of higher-order pred terms. ***
(We don't yet handle taking the address of an overloaded
predicate or a predicate with multiple modes.
We don't handle closures. call/1 and call/N are not yet implemented.
This has not yet been tested.)
make_hlds.nl:
Modify the mode priority ordering so that semidet modes get
selected before det ones.
llds.nl:
Don't include the priority part of the mode number in the mangled
label name. *** Note: this will break some things! ***
mercury_compile.nl:
Move the NU-Prolog hacks into mercury_compile.nu.nl.
switch_gen.nl:
Fix a simple logic bug in handling the grab/slap of the code_info.
prog_io.nl, builtins.nl, int.nl:
Fix bugs and omissions with handling of the new arithmetic operators.
prog_io.nl:
As a quick hack, strip off calls to io__gc_call
(this avoids spurious error messages which are due to
the fact that we don't get mode analysis right in those cases).
array.nl:
Improved the code. Added array__resize.
call_gen.nl code_gen.nl code_info.nl switch_gen.nl unify_gen.nl:
Made a start towards abstracting "tag tests".
hlds.nl hlds_out.nl liveness.nl modes.nl code_gen.nl:
Fixed the "before" and "after" liveness problem.
mercury_builtin.nl:
Use det_pred(...), semidet_pred(...), nondet_pred(...)
rather than call_pred(...) for the higher-order predicate modes.
prog_io.nl, io.nl, varset.nl, etc.
Add determinism annotations.
hlds.nl, make_hlds.nl, LOTS of other files:
Reorganize the way the predicate table works.
Make hlds.nl a bit more modular.
Change call/4 to call/5.
Remove all/2 from the hlds.
Changed pred_id to an integer.
Added pred_call_id which is similar to the old pred_id.
Makefile:
Add a rule for creating *.hlds_dump.
array.nl:
Fix determinism error.
det_analysis.nl:
Fix a bug in printing determinism warnings.
fix_errors.sed:
Modify this so it allows all the `inferred nondet' determinism
errors but none of the `inferred semidet' ones.
llds.nl:
Rename llds__pred_mode_id as llds__proc_id.
mode_errors.nl:
Finally got around to implementing Zoltan's suggestions
about the error messages from the mode analysis.
If an error occurs in a conjunction, only one error message
is printed out - the first error which doesn't relate to
a head unification.
modes.nl:
Handle X = f(X) properly. NB: determinism analysis and code
generation still get it wrong!
undef_modes, undef_insts:
I've broken the error message code, since it's not easy
to print pred_ids. I just changed it so that it didn't
print the pred_ids out. Should fix this properly at some stage...
Makefile:
various changes. Added switch_gen.nl renamed the other codegen
files to fit the naming conventions.
array.nl:
added some determinism declarations.
bimap.nl:
fixed some of the determinism problems.
doit.nl:
minor changes.
hlds.nl:
added liveness to the procinfo structure.
added access predicates and type definition for liveness_info.
hlds_out.nl, modes.nl:
patched the explicit usage of proc/11. for the above change.
int.nl:
fixed it so that it compiles under mc!
map.nl, set.nl, term.nl:
fixed determinism warnings.
toplevel.nl:
import code_info.
various:
file renaming to fit naming conventions.
Makefile:
Change the `nit' rule to invoke nit on the files one at a
time rather than all at once, because nit was running out
of memory.
Makefile, doit.nl:
Add tree.nl.
codegen.nl:
Bug fix.
llds.nl:
Output `detstackvar(N)' instead of `stackvar(N)'.
hlds.nl:
Initialize the determinism to `deterministic' rather than
non-deterministic.
make_hlds.nl:
Fix bug where true/fail where being swapped.
modes.nl:
Copy the information in the predinfo struct to the procinfo struct.
(Mode checking itself is still not yet implemented.)
typecheck.nl:
Fix bug in last change.
that I'm not sure how to fix.
hlds.nl: a couple of minor alterations.
llds.nl: a few changes so that llds expressions can be used in
codegen.nl - a significant fix that gets rid of quite
a bit of weirdness in codegen.
string.nl: added a declaration (but no implementation) for
string__to_int - for use in converting cons_ids for
integer constants to type int.
- Added some new targets to the Makefile.
- In mercury_to_goedel.nl: handle calls to require/2.
- Replaced "require(fail, ...)" with "error(...)".
- Removed uses of floating point division in array.nl.
- Changed io__progname to take two io__state arguments.
- Removed direct references to $string from io.nl so that it is self-applicable.
- Added pair.nl and changed map.nl to use it.
Lots of bug fixes for make_hlds.nl.
A couple of bug fixes for hlds.nl.
Did some optimization of memory usage: added io__gc_call to io.nl
and used it in prog_io.nl and module.nl. Rewrote the main loop
of prog_io to take maximum advantage of manual garbage collection.
Started working on typecheck.nl.