87 lines · 3.5 KB · Text
RawDownload
					       Ken Friis Larsen, 2000 Note about the PM prototype--------------------------- * Getting started.  Compile the source with the command     mosmlc -toplevel Parsercomb-sig.sml Parsercomb.sml PMBasic.sml\                     PMCompile.sml ArgParse-sig.sml ArgParse.sml\                     mosmlpm.sml -o mosmlpm  Now from the toplevel invoke the function   PMCompile.compile "sources.pm"   (app load ["Mosml", "PMCompile"];    FileSys.chDir "/home/kfl/programming/ml/mlkit.mosml/kit/src";   PMCompile.compile "sources.pm";   PMCompile.link ["-o moskit "] "sources.pm";)  * Everything managed by pm is compiled with the command	mosmlc -c -toplevel context1 ... contextM file1 ... fileN  where file1 to fileN are .sml files and context1 to contextM are .ui  files.  (This is the general case in compileBodyOpt, in compileBody  N=1.  I thought compileBodyOpt would gain some speed but that does  not seem to be the case) * PMCompile.compilePM returns the context obtained from a pmfile  data structure. * All filenames are transformed to be fullpath'ed * 5/5 - 2000: Changes made to the kit so as it can be compiled with mosml 1.99  + Made a mosmlhacks.pm file.  The only thing in there now is the    Word32 hack.  + Added Compiler/compilerx86.pm  + Used mosmlhack.pm in Compiler/compilerx86.pm  + Changed sources.pm to use Compiler/compilerx86.pm and     Compiler/Backend/X86/ExecutionX86.sml  + Changes from Martin in basislib/Initial.sml  + Changed 	    val garbage_collection = ref true    to	    val garbage_collection = ref false    in src/Common/Flags.sml  + Changed `status' to `~1' on line 128 in    Manager/ManagerObjects.sml  + Renamed Edlib/List.sml Edlib/edList.sml    and Edlib/ListPair.sml Edlib/edListPair.sml  + Renamed Parsing/Topdec.grm.sig to Parsing/Topdec.grm-sig.sml (also    in Common/common.pm)   + Renamed Common/BasicIO.sml Common/commonBasicIO.sml  + Corrected a sharing spec bug (not decteded by sml/nj) in    Compiler/Backend/X86/CodeGenX86.sml   Many of these errors can be boiled down to:  + We need a way to rename a compilation unit  * After I have implemented the findFiles functions, I realize that the  Right Way to handle the pm files is to build a graph representation  from them.  This will also make it easy to check that the pm files  don't contains cycles (we just check that the graph is a DAG). * Locals might be handled wrong when things are linked, because  compilation unit renaming is not supported. * 3/4- 2000: Smarter recompilation implemented.  Broke compileBodyOpt  doing this, but who cares.  BUG: .pm files are not considered in the uptodate check. * 4/5 - 2000: Even smarter recompilation scheme implemented thanks to  Martin.  Now .ui is checked for equality. TODO ( - : not implemented, + : implemented, * : droped )   - Implement compilation unit renaming when mosmlc supports it  - Figure out how to handle .sig files  - Reimplement using graph data structure  + Implement smart recompilation.  That is, don't recompile if the    context and the .u? files are up to date. (This might also be    easier, if we had a graph.  But on the other hand Holmake seems to    do fine without one)  - Make everything robust wrt missing files, syntax errors in pm    files, etc.  - Testing, testing, testing.  Lots of test done in the interactive    environment, and the kit seems to be a good test case but still it    would be nice with some systematic test files so as we can track    when and how we break pm.