cvs diff: New TODO list.
Tyson Richard DOWD
trd at students.cs.mu.oz.au
Thu Feb 13 15:49:52 AEDT 1997
Here are some modifications to the TODO list.
Can anyone who is interested please look at these, and add
anything that we've forgotten. With regards to the Wish List - some
things aren't all that important, but would still be nice, others
are not presently feasible, but would also still be nice.
===================================================================
Estimated hours taken: 0.5
compiler/notes/TODO:
Update TODO file with new research ideas, remove some things
that have been implemented.
Index: TODO
===================================================================
RCS file: /home/staff/zs/imp/mercury/compiler/notes/TODO,v
retrieving revision 1.60
diff -u -r1.60 TODO
--- TODO 1997/01/20 03:29:59 1.60
+++ TODO 1997/02/13 04:42:19
@@ -12,6 +12,8 @@
should not be allowed to test two values of that type for equality (similar
to Ada's limited private types). This would be useful for e.g. sets
represented as unordered lists with possible duplicates.
+ [this is a subset of the functionality of type classes]
+
mode analysis
-------------
@@ -55,6 +57,10 @@
- take advantage of unique modes to do compile-time garbage collection
and structure reuse.
+- floating point registers
+ - allow floating point fields of structures without boxing
+ (need multi-word fields)
+
module system
-------------
@@ -80,23 +86,43 @@
C interface
-----------
-- make C interface bidirectional: allow C programs to call Mercury programs
- [is being done by dgj]
+- nondeterministic C code
+
+- exporting things for manipulating Mercury types from C
+
+- better support for types defined in C, and documentation
+
+general
+-------
+
+- coroutining and parallel versions of Mercury
+ [being worked on by conway]
+
+- implement streams (need coroutining at least)
-- support functions (currently c_code pragmas are only allowed for predicates,
- not functions)
*******************************************************************************
WISH LIST
---------
-typechecking
-------------
+type-system
+-----------
- allow explicit type qualifications `X : Type'
[being done by stayl]
+- type classes
+
+- existential types (possibly)
+
+- subtypes
+
+- optimisation of type representation and manipulation (possibly
+ profiler guided)
+
+- fold/unfolding of types
+
mode analysis:
--------------
@@ -124,7 +150,6 @@
- allow taking the address of a predicate with multiple modes
(This would require mode inference.)
-
code generation:
----------------
@@ -134,12 +159,17 @@
routine allocated the memory. Then we can do heap-allocation
profiling to identify which routines use up all the bloody memory.
+- inter-procedural register allocation
+
+- stack allocation of structures
+
+- retarget code generator to Java VM
source-level transformations
----------------------------
- more work on module system, separate compilation, and the multiple
- specialization problem
+ specialisation problem
- deforestation
@@ -147,6 +177,9 @@
using accumulators
[being worked on by jammb]
+- partial deduction
+ [being worked on by stayl]
+
low-level optimizations
-----------------------
@@ -162,6 +195,7 @@
- trim stack frames before making recursive calls, to minimize stack usage
[this would probably be a pessimization much of the time - zs]
+
compilation speed
-----------------
@@ -197,8 +231,6 @@
general
-------
-- coroutining and parallel versions of Mercury
- [being worked on by conway]
- implement a very fast turn-around bytecode compiler/interpreter/debugger,
similar to Gofer
@@ -210,9 +242,36 @@
- implement "accurate" garbage collection
[being worked on by trd]
+- implement parallel garbage collection
+
- implement user-defined operators:
Add a new construct `:- op(Pred, Type, Op).' as in Prolog;
change prog_io.m to parse this construct and call io__op
accordingly. But how does this fit in with the module system?
+
+- support for easier formal specification translation (eg a Z library,
+ or Z to Mercury).
+
+- improve support for constraint programming
+
+- implement a source visualisation tool
+
+- distributed Mercury
+
+- improved development environment
+
+- additional software engineering tools
+ - coverage analysis
+ - automatic testing
+
+- literate Mercury
+
+- implement a GUI library (eg Hugs - Fudgets)
+
+- profiling guided optimisations
+ - use profiling information to direct linker for optimal
+ code placement (Alpha has a tool for this).
+
+- attribute grammars
*******************************************************************************
--
Tyson Dowd # Another great idea from the
# people who brought you
trd at .cs.mu.oz.au # Beer Milkshakes!
http://www.cs.mu.oz.au/~trd # Confidence --- Red Dwarf
More information about the developers
mailing list