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 /doc/trunk/src/changelog/HISTORY.txt
ViewVC logotype

Diff of /doc/trunk/src/changelog/HISTORY.txt

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

revision 4686, Mon Aug 20 16:49:58 2018 UTC revision 4687, Sun Aug 26 14:48:14 2018 UTC
# Line 6169  Line 6169 
6169  //--------------------------------------------------------------------  //--------------------------------------------------------------------
6170  [2002/03/03]::  [2002/03/03]::
6171  +  +
6172    Added #[ ... ] expressions to mlrisc tools  Added `#[ ... ]` expressions to mlrisc tools
6173  +  +
6174  owner:smlnj.org[Allen Leung]  owner:smlnj.org[Allen Leung]
6175    
6176  //--------------------------------------------------------------------  //--------------------------------------------------------------------
6177  [2002/02/27]::  [2002/02/27]::
6178  +  +
6179  - made types in structure C and C_Debug to be equal  - made types in structure `C` and `C_Debug` to be equal
6180  - got rid of code duplication (c-int.sml vs. c-int-debug.sml)  - got rid of code duplication (`c-int.sml` vs. `c-int-debug.sml`)
6181  - there no longer is a C_Int_Debug (C_Debug is directly derived from C)  - there no longer is a `C_Int_Debug` (`C_Debug` is directly derived from `C`)
6182  +  +
6183  owner:www.tti-c.org/~blume[Matthias Blume]  owner:www.tti-c.org/~blume[Matthias Blume]
6184    
# Line 7498  Line 7498 
7498  I have dramatically simplified the interface for CELLS in MLRISC.  I have dramatically simplified the interface for CELLS in MLRISC.
7499  +  +
7500  In summary, the cells interface is broken up into three parts:  In summary, the cells interface is broken up into three parts:
7501    --
7502    1. `CellsBasis : CELLS_BASIS`
7503  +  +
7504    1. CellsBasis : CELLS_BASIS  `CellsBasis` is a top level structure and common for all
 +  
         CellsBasis is a top level structure and common for all  
7505          architectures.  it contains the definitions of basic datatypes          architectures.  it contains the definitions of basic datatypes
7506          and utility  functions over these types.          and utility  functions over these types.
7507  +  +
7508    2. functor Cells() : CELLS  2. `functor Cells() : CELLS`
7509  +  +
7510          Cells generates an interface for CELLS that incorporates the          Cells generates an interface for CELLS that incorporates the
7511          specific resources on the target architecture, such as the          specific resources on the target architecture, such as the
7512          presence of special register classes, their number and size,          presence of special register classes, their number and size,
7513          and various useful substructures.          and various useful substructures.
7514  +  +
7515    3. <ARCH>CELLS  3. __<ARCH>__++CELLS++
7516  +  +
7517          _e.g._ SparcCells: SPARCCELLS  _e.g._, `SparcCells: SPARCCELLS`
7518  +  +
7519          <ARCH>CELLS usually contains additional bindings for special  __<ARCH>__++CELLS++ usually contains additional bindings for special
7520          registers  on the architecture, such as:          registers  on the architecture, such as:
7521  +  +
7522    [source,sml]
7523    ------------
7524                  val r0 : cell           (* register zero *)                  val r0 : cell           (* register zero *)
7525                  val y : cell            (* Y register *)                  val y : cell            (* Y register *)
7526                  val psr : cell          (* processor status register *)                  val psr : cell          (* processor status register *)
7527                  ...                  ...
7528    ------------
7529  +  +
7530          The structure returned by applying the Cells functor is opened          The structure returned by applying the Cells functor is opened
7531          in this interface.          in this interface.
7532  +  +
7533  The main implication of all this is that the datatypes for cells is  The main implication of all this is that the datatypes for cells is
7534  split between CellsBasis and CELLS -- a fairly simple change for user  split between `CellsBasis` and `CELLS` -- a fairly simple change for user
7535  code.  code.
7536  +  +
7537  In the old scheme the CELLS interface had a definitional binding of  In the old scheme the `CELLS` interface had a definitional binding of
7538  the form:  the form:
7539  +  +
7540          signature CELLS = sig  [source,sml]
7541  +  ------------
7542            signature CELLS =
7543              sig
7544             structure CellsBasis = CellsBasis             structure CellsBasis = CellsBasis
 +  
7545             ...             ...
 +  
7546          end          end
7547    ------------
7548  +  +
7549  With all the sharing constraints that goes on in MLRISC, this old  With all the sharing constraints that goes on in MLRISC, this old
7550  design  quickly leads to errors such as:  design  quickly leads to errors such as:
7551  +  +
7552          "structure definition spec inside of sharing ... "  [source]
7553  +  --------
7554            structure definition spec inside of sharing ...
7555    --------
7556  +  +
7557  and appears to require an unacceptable amount of sharing and where  and appears to require an unacceptable amount of sharing and where
7558  constraint hackery.  constraint hackery.
7559  +  +
7560  I think this error message (the interaction of definitional specs and  I think this error message (the interaction of definitional specs and
7561  sharing) requires more explanation on our web page.  sharing) requires more explanation on our web page.
7562    --
7563  +  +
7564  owner:smlnj.org[Lal George]  owner:smlnj.org[Lal George]
7565    
# Line 7563  Line 7570 
7570  to the way the libraries that implement the interactive system are  to the way the libraries that implement the interactive system are
7571  organized:  organized:
7572  +  +
7573     The biggest change is the elimination of structure Compiler.  As a  The biggest change is the elimination of structure `Compiler`.  As a
7574     replacement for this structure, there is now a CM library     replacement for this structure, there is now a CM library
7575     (known as $smlnj/compiler.cm or $smlnj/compiler/current.cm)  (known as `$smlnj/compiler.cm` or `$smlnj/compiler/current.cm`)
7576     that exports all the substructures of the original structure Compiler  that exports all the substructures of the original `Compiler` structure
7577     directly.  So instead of saying Compiler.Foo.bar one now simply  directly.  So instead of saying `Compiler.Foo.bar` one now simply
7578     says Foo.bar.  (The CM libraries actually export a collection of  says `Foo.bar`.  (The CM libraries actually export a collection of
7579     structures that is richer than the collection of substructures of     structures that is richer than the collection of substructures of
7580     structure Compiler.)  structure `Compiler`.)
7581  +  +
7582     To make the transition smooth, there is a separate library called     To make the transition smooth, there is a separate library called
7583     $smlnj/compiler/compiler.cm which puts together and exports the  `$smlnj/compiler/compiler.cm` that puts together and exports the
7584     original structure Compiler (or at least something very close to it).  original structure `Compiler` (or at least something very close to it).
7585  +  +
7586     There are five members of the original structure Compiler  There are five members of the original structure `Compiler`
7587     that are not exported directly but which instead became members     that are not exported directly but which instead became members
7588     of a new structure Backend (described by signature BACKEND).  These are:  of a new structure `Backend` (described by signature `BACKEND`).
7589     structure Profile (: PROFILE), structure Compile (: COMPILE), structure  These are:
7590     Interact (: INTERACT), structure Machine (: MACHINE), and val  +
7591     architecture (: string).  [source,sml]
7592    ------------
7593            structure Profile  : PROFILE
7594            structure Compile  : COMPILE
7595            structure Interact : INTERACT
7596            structure Machine  : MACHINE
7597    
7598            val architecture : string
7599    ------------
7600  +  +
7601     Structure Compiler.Version has become structure CompilerVersion.  Structure `Compiler.Version` has become structure `CompilerVersion`.
7602  +  +
7603     Cross-compilers for alpha32, hppa, ppc, sparc, and x86 are provided     Cross-compilers for alpha32, hppa, ppc, sparc, and x86 are provided
7604     by $smlnj/compiler/<arch>.cm where <arch> is alpha32, hppa, ppc, sparc,     by $smlnj/compiler/<arch>.cm where <arch> is alpha32, hppa, ppc, sparc,
# Line 7618  Line 7633 
7633     content), and it no longer has any knowledge of how to interpret     content), and it no longer has any knowledge of how to interpret
7634     pickles.     pickles.
7635  +  +
7636     Structure Compile (: COMPILE) has been stripped down to the bare  Structure `Compile` has been stripped down to the bare
7637     essentials of compilation.  It no longer deals with linking/execution.     essentials of compilation.  It no longer deals with linking/execution.
7638     The interface has been cleaned up considerably.     The interface has been cleaned up considerably.
7639  +  +

Legend:
Removed from v.4686  
changed lines
  Added in v.4687

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