Commit | Line | Data |
---|---|---|
7f918cf1 CE |
1 | Projects |
2 | ======== | |
3 | ||
4 | We have lots of ideas for projects to improve MLton, many of which we | |
5 | do not have time to implement, or at least haven't started on yet. | |
6 | Here is a list of some of those improvements, ranging from the easy (1 | |
7 | week) to the difficult (several months). If you have any interest in | |
8 | working on one of these, or some other improvement to MLton not listed | |
9 | here, please send mail to | |
10 | mailto:MLton-devel@mlton.org[`MLton-devel@mlton.org`]. | |
11 | ||
12 | * Port to new platform: Windows (native, not Cygwin or MinGW), ... | |
13 | * Source-level debugger | |
14 | * Heap profiler | |
15 | * Interfaces to libraries: OpenGL, Gtk+, D-BUS, ... | |
16 | * More libraries written in SML (see <!ViewGitProj(mltonlib)>) | |
17 | * Additional constant types: `structure Real80: REAL`, ... | |
18 | * An IDE (possibly integrated with <:Eclipse:>) | |
19 | * Port MLRISC and use for code generation | |
20 | * Optimizations | |
21 | ** Improved closure representation | |
22 | + | |
23 | Right now, MLton's closure conversion algorithm uses a simple flat closure to represent each function. | |
24 | + | |
25 | *** http://www.mlton.org/pipermail/mlton/2003-October/024570.html | |
26 | *** http://www.mlton.org/pipermail/mlton-user/2007-July/001150.html | |
27 | *** <!Cite(ShaoAppel94)> | |
28 | ** Elimination of array bounds checks in loops | |
29 | ** Elimination of overflow checks on array index computations | |
30 | ** Common-subexpression elimination of repeated array subscripts | |
31 | ** Loop-invariant code motion, especially for tuple selects | |
32 | ** Partial redundancy elimination | |
33 | *** http://www.mlton.org/pipermail/mlton/2006-April/028598.html | |
34 | ** Loop unrolling, especially for small loops | |
35 | ** Auto-vectorization, for MMX/SSE/3DNow!/AltiVec (see the http://gcc.gnu.org/projects/tree-ssa/vectorization.html[work done on GCC]) | |
36 | ** Optimize `MLton_eq`: pointer equality is necessarily false when one of the arguments is freshly allocated in the block | |
37 | * Analyses | |
38 | ** Uncaught exception analysis |