Overview/Wishlist dynamics Problems to be solved: (pc/mac): - inefficiency due to compiler limitations and linker design. The compiler does *not* instantiate an overloaded function efficiently. (pc): - efficiency due to linker design. single pass linking and removing garbage from the linker table is not yet implemented. Perhaps also a buffer could be allocated to contain the pieces of object code to be read in. This probably saves a lot of garbage collection time. (pc/mac): - a more portable representation of the datagraph. The byte order is processor specific and thus platform dependent. A possible solution might 'convert' the graph in the required byte order. This may be done on the fly or as a seperate pass by the graph conversion functions. (pc/mac): - time & heap profiling support for lazily linked applications. In the case of a statically linked application, all goes well (if you link profile enabled code). Essential problems: (pc/mac): - throughout the application modules names *must* be unqiue. Suppose you have a module m has already been loaded. If you then load a dynamic which uses an equally named but different module m, the linker *cannot* correctly resolve the references. This problem is due to generation of non-unique module names. - modules containing Clean objects having at least one underscore in their names *cannot* be linked. This problem is due to the compiler/code generator which produce symbol names from which the module name cannot be extracted. (mac): - Table Of Contents (TOC) is currently limited to 64K. The code generator/{static,dynamic} linker should be adapted to support more TOCs in one application. For now a TOC overflow should be reported to the user. - Check if common subsexpression elimination is done in mac. If not, introduce it. Conversion functions: (pc/mac): - compiler generated functions are *not* supported e.g. closures in lazy contexts. This problem is due to the fact that the compiler generates, from the dynamic linkers view, random names for those functions. - lazy reading/writing is unimplemented. - updating unique Clean objects is unimplemented. - reading/writing complete *datastructures* at one is not implemented. (mac): - conversion functions still have to be written. Wishlist: - IDE 2.0; two *new* options: 1) Verbose-mode for the dynamic linker. In this mode the programmer gets feedback of what the dynamic linker is actually linking. 2) Search-procedures (with- or without GUI feedback) The programmer should be able to use the dynamic linker as a stupid application i.e. the dynamic linker takes no efforts to search missing objects (like the static linker). Or the active variant which uses search-procedures to locate missing objects. If this fails the programmer should specify if a dialogue should pop-up to let the user point to the missing object. - abstract datatypes cannot be packed into a dynamic. Probably some language construct is necessary to express the intention that the abstract datatype can be contained in a dynamic - overloaded functions in dynamics - name generation problems (solved by John/Ronny) - type storage and type equivalence checking - coercions