Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Diff of /sml/trunk/src/system/README
ViewVC logotype

Diff of /sml/trunk/src/system/README

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 536, Fri Feb 18 16:51:54 2000 UTC revision 537, Fri Feb 18 17:20:16 2000 UTC
# Line 1  Line 1 
1  !!! ATTENTION !!!  Compiler Hacker's Guide to the new CM...
2  As an SML/NJ compiler developer, please read this document carefully.  ========================================
3  The new CM has a lot of good things to offer, but you must be aware  
4  of the many changes that it incurs to the process of compiling the  Last change: 2/2000
 SML/NJ compiler.  
                         Matthias Blume (July 1999)  
 -------------------------------------------------------------------------  
5    
6  * Libraries  * Libraries
7  -----------  -----------
# Line 399  Line 396 
396  keyword.  If the specification is missing (that's the "old" syntax),  keyword.  If the specification is missing (that's the "old" syntax),
397  then the the owner will be taken to be the interactive toplevel.  then the the owner will be taken to be the interactive toplevel.
398    
399  * Pervasive environment, core environment, other "primitive" environments  * Pervasive environment, core environment, the init group "init.cmi"
400  -------------------------------------------------------------------------  -------------------------------------------------------------------------
401    
402  Just a handful of files is compiled at the beginning in order to  CMB.make (or CMB.deliver) starts out by building and compiling the
403  establish a number of "primitive" environments -- including the  "init group".  This group cannot be described in the "usual" way
404  "pervasive" environment and the "core" environment.  The pervasive  because it uses "magic" in three ways:
405  environment no longer includes the entire basis library but only   - it is used to later tie in the runtime system
406  non-modular bindings (top-level bindings of variables and types).   - it builds the "core" environment
407     - it builds the "pervasive" environment
408    
409    The pervasive environment no longer includes the entire basis library
410    but only non-modular bindings (top-level bindings of variables and
411    types).
412    
413  CM cannot automatically determine dependencies for these initial  CM cannot automatically determine dependencies for the init group
414  source files, but it still does use its regular cutoff recompilation  source files, but it still does use its regular cutoff recompilation
415  mechanism.  Therefore, dependencies must be given explicitly.  This is  mechanism.  Therefore, dependencies must be given explicitly.  This is
416  done by a special description file which currently lives in  done by a special description file which currently lives in
417  Init/init.cmi.  See the long comment at the beginning of that file for  Init/init.cmi.  See the long comment at the beginning of that file for
418  more details.  more details.
419    
420    After it is built, init.cmi can be used as an "ordinary" library by
421    other libraries.  (This is done, for example, by the implementation of
422    the Basis library.)  Access to "init.cmi" is protected by the
423    privilege named "primitive".
424    
425  * Autoloader  * Autoloader
426  ------------  ------------
427    

Legend:
Removed from v.536  
changed lines
  Added in v.537

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0