Files
mercury/compiler/notes/work_in_progress.html
Zoltan Somogyi 5af71b60ac Remove support for the Aditi backend. It is a pain to have to update it every
Estimated hours taken: 2
Branches: main

Remove support for the Aditi backend. It is a pain to have to update it every
time a data structure changes when we don't see any benefit from it, and its
presence makes compilation of the compiler directory take about 10% longer
(since the Aditi backend modules are roughly 10% of the code in the compiler
directory). Deleting the Aditi-specific data structures from the HLDS should
also speed up compilation a little bit.

I have spoken to Rao and he is fine with this step.

Aditi users, if there are any, can continue to use the Aditi support in
release 0.12.*. I also tagged the last version on the trunk to support aditi
with the name "last_aditi". The need for modifications in this Aditi support
is likely to be very rare to nonexistent, if the recent past is any guide:
the Aditi backend hasn't seen a nontrivial modification in a year or more.

This diff removes a net 31492 lines.

compiler/add_aditi.m:
compiler/aditi_backend.pp:
compiler/aditi_builtin_ops.m:
compiler/context.m:
compiler/dnf.m:
compiler/magic.m:
compiler/magic_util.m:
compiler/rl.m:
compiler/rl_analyse.m:
compiler/rl_block.m:
compiler/rl_block_opt.m:
compiler/rl_code.m:
compiler/rl_dump.m:
compiler/rl_exprn.m:
compiler/rl_file.pp:
compiler/rl_gen.m:
compiler/rl_info.m:
compiler/rl_key.m:
compiler/rl_liveness.m:
compiler/rl_loop.m:
compiler/rl_opt.m:
compiler/rl_out.pp:
compiler/rl_relops.m:
compiler/rl_sort.m:
compiler/rl_stream.m:
	Remove these compiler modules, since they existed only to support the
	Aditi backend.

compiler/hlds_goal.m:
	Delete the Aditi-specific components of goals (e.g. the aditi-builtin
	kind of generic calls and Aditi-evaluated lambdas).

compiler/hlds_pred.m:
	Delete the Aditi-specific components of pred_infos.

compiler/prog_data.m:
	Delete the Aditi-specific items.

compiler/passes_aux.m:
	Don't worry about processing all procedures or just all non-Aditi
	procedures.

compiler/add_clause.m:
	Add a predicate from a deleted module that is now used only here.

compiler/*.m:
	Conform to the data structure changes above.

compiler/notes/*.html:
	Remove references to the Aditi backend.

tests/invalid/aditi.m:
tests/invalid/aditi_errors.err_exp:
tests/invalid/aditi_errors.m:
tests/invalid/aditi_private_builtin.m:
tests/invalid/aditi_state_errors.err_exp:
tests/invalid/aditi_state_errors.m:
tests/invalid/aditi_update_derived_relation.err_exp:
tests/invalid/aditi_update_derived_relation.m:
tests/invalid/aditi_update_errors.err_exp:
tests/invalid/aditi_update_errors.m:
tests/invalid/aditi_update_mode_errors.err_exp:
tests/invalid/aditi_update_mode_errors.m:
tests/valid/aditi.m:
tests/valid/aditi_calls_mercury.m:
tests/valid/aditi_error_bug.m:
tests/valid/aditi_error_bug2.m:
tests/valid/aditi_error_bug3.m:
tests/valid/aditi_private_builtin.m:
tests/valid/aditi_query.m:
tests/valid/aditi_update.m:
tests/valid/base_relation.m:
tests/valid/base_relation2.m:
tests/valid/ite_to_disj.m:
	Remove these Aditi-specific tests.

tests/*/Mmakefile:
	Remove the references to these Aditi-specific tests.
2006-02-23 09:37:30 +00:00

115 lines
3.7 KiB
HTML

<html>
<head>
<title>
Work In Progress
</title>
</head>
<body bgcolor="#ffffff" text="#000000">
<hr>
<!---------------------------------------------------------------------------->
The compiler contains some code for the following features,
which are not yet completed, but which we hope to complete
at some time in the future:
<p>
<ul>
<li> There is a
<a href="http://www.cs.mu.oz.au/mercury/dotnet.html">`--target il'</a>
option, which generates MSIL code for Microsoft's new
<a href="http://msdn.microsoft.com/net/">.NET Common Language Runtime</a>.
We're still working on this.
<li> There is a `--target java' option, which generates Java.
We still need to add support for Java foreign language interfacing,
and implement the Mercury standard library for Java.
<li> Thread-safe engine (the `.par' grades).
<li> Independent AND-parallelism (the `&' parallel conjunction operator).
See Tom Conway's PhD thesis.
<li>
We have incomplete support for a new, more expressive design for representing
information about type classes and type class instances at runtime. When
complete, the new design would allow runtime tests of type class membership,
it would allow the tabling of predicates with type class constraints,
and it would allow the debugger to print type_class_infos.
<li> We have added support for dynamic link libraries (DLLs) on Windows.
This is not yet enabled by default because it has not yet been tested
properly.
<li> There is a new `--optimize-constructor-last-call' option
which identifies opportunities for LCO where a call
is followed only by some constructor invocations.
However, these opportunities are not exploited yet.
<li> There is a new garbage collector that does accurate garbage
collection (hlc.agc grade). See the comments in
compiler/ml_elim_nested.m and the paper on our web page for more details.
<li> There is a `--generate-bytecode' option, for a new back-end
that generates bytecode. The bytecode generator is basically
complete, but we don't have a bytecode interpreter.
</ul>
<p>
We also have some code that goes at least some part of the way towards
implementing the features below. However, for these features, the
code has not yet been committed and thus is not part of the standard
distribution.
<p>
<ul>
<li> A new implementation of the mode system using constraints.
This is on the "mode-constraints" branch of our CVS repository.
<li> Support for aliasing in the mode system.
This is on the "alias" branch of our CVS repository.
<li> Support for automatic structure reuse (reusing old data
structures that are no longer live, rather than allocating
new memory on the heap) and compile time garbage collection
This is on the "reuse" branch of our CVS repository.
<li> Better support for inter-module analysis and optimization.
<li> Support for GCC 3.3 in the native code back-end.
This is on the "gcc_3_3" branch of our CVS repository.
</ul>
<hr>
<!-------------------------->
<h2>
Work Not In Progress
</h2>
The compiler also contains some code for the following features,
but work on them has stopped, since finishing them off would be
quite a bit more work, and our current priorities lie elsewhere.
Still, these could make interesting and worthwhile projects
if someone has the time for it.
<p>
<ul>
<li> A SOAP interface.
<li> A bytecode interpreter, for use with the `--generate-bytecode' option.
<li> Sequence quantification (see the
<a href="http://www.cs.mu.oz.au/research/mercury/information/reports/minutes_15_12_00.html">description</a> from the meeting minutes).
</ul>
</html>
<hr>
<!-------------------------->
Last update was $Date: 2006-02-23 09:37:20 $ by $Author: zs $@cs.mu.oz.au. <br>
</body>
</html>