From: Howard T. <how...@di...> - 2009-08-14 19:45:00
|
Hi Wolfgang, On Friday 14 August 2009, you wrote: > > The approach to implement the persistence closure etc. > may be emphasized as follows: > The Eiffel compiler is written in Eiffel. > So, why not also implementing the Eiffel runtime system in Eiffel? > I considered writing the Eiffel GC substantially in Eiffel, and I may well transliterate much of the new GC code into Eiffel at some point, once we have [or I understand ... !] some means of either separately generating library code [with Gobo], or some means of ensuring that all of the GC classes are 'in' the system; actually not too difficult ... I think Gobo's ability to inline code needs to be enhanced before it makes sense to do that. > BTW, does your GC mark/seep or move/compress? In the former case, > object marking may also be interesting when building the persistence > closure. > Currently, the already seen objects are registered > in a DS_HASH_TABLE[INTEGER,POINTER]. This is inconvenient > because of the POINTER keys. Marking like the GC would be an > interesting alternative. It is currently a simple mark/sweep, non-moving, but precise collector, so the ability to move / compact could be added later. Correctness is much more important, and there are still some code generation changes that need to be made to ensure that all references are visible to the GC at any point where it may be invoked. > > > One of the areas of the code generator that I intend to alter is the > > polymorphic > > > > dispatch implementation, for two reasons: > > > > Firstly for rapid re-compilation, I want to be able to generate an > > initial code package as > > > > an executable stub with dynamic library, where libraries register > > their routine addresses > > > > with the runtime, with subsequent partial re-compilation code > > generated as an additional > > > > dynamic library whose routines override the registered routines of the > > initial library. This > > > > requires that routine dispatch be done using a tree data structure, of > > some sort ... > > > > Secondly, I envisage that it should be possible, as with Java and > > other languages [mostly interpreted ..], > > > > to dynamically add class libraries to an executable system, where such > > libraries have been packaged, > > > > [compiled or otherwise verified against] to be compatible with classes > > already in the current system. > > > > That would also require that the dispatch to reachable routines be > > dynamically extendable. > > > This sounds very interesting. Extendibility of a program, dynamic > linking etc. seems to be > necessary for contemporary software (otherwise, Eiffel will never have a > chance). > > I think it is essential ... Regards Howard -- "Only two things are infinite, the universe and human stupidity, and I'm not sure about the former." -- Albert Einstein |