14 |
|
|
15 |
---------------------------------------------------------------------- |
---------------------------------------------------------------------- |
16 |
Name: Matthias Blume |
Name: Matthias Blume |
17 |
|
Date: 2001/07/19 15:00:00 EDT |
18 |
|
Tag: blume-20010719-libreorg |
19 |
|
Description: |
20 |
|
|
21 |
|
This update puts together a fairly extensive but straightforward change |
22 |
|
to the way the libraries that implement the interactive system are |
23 |
|
organized: |
24 |
|
|
25 |
|
The biggest change is the elimination of structure Compiler. As a |
26 |
|
replacement for this structure, there is now a CM library |
27 |
|
(known as $smlnj/compiler.cm or $smlnj/compiler/current.cm) |
28 |
|
that exports all the substructures of the original structure Compiler |
29 |
|
directly. So instead of saying Compiler.Foo.bar one now simply |
30 |
|
says Foo.bar. (The CM libraries actually export a collection of |
31 |
|
structures that is richer than the collection of substructures of |
32 |
|
structure Compiler.) |
33 |
|
|
34 |
|
To make the transition smooth, there is a separate library called |
35 |
|
$smlnj/compiler/compiler.cm which puts together and exports the |
36 |
|
original structure Compiler (or at least something very close to it). |
37 |
|
|
38 |
|
There are five members of the original structure Compiler |
39 |
|
that are not exported directly but which instead became members |
40 |
|
of a new structure Backend (described by signature BACKEND). These are: |
41 |
|
structure Profile (: PROFILE), structure Compile (: COMPILE), structure |
42 |
|
Interact (: INTERACT), structure Machine (: MACHINE), and val |
43 |
|
architecture (: string). |
44 |
|
|
45 |
|
Structure Compiler.Version has become structure CompilerVersion. |
46 |
|
|
47 |
|
Cross-compilers for alpha32, hppa, ppc, sparc, and x86 are provided |
48 |
|
by $smlnj/compiler/<arch>.cm where <arch> is alpha32, hppa, ppc, sparc, |
49 |
|
or x86, respectively. |
50 |
|
Each of these exports the same frontend structures that |
51 |
|
$smlnj/compiler.cm exports. But they do not have a structure Backend |
52 |
|
and instead export some structure <Arch>Backend where <Arch> is Alpha32, |
53 |
|
Hppa, PPC, Sparc, or X86, respectively. |
54 |
|
|
55 |
|
Library $smlnj/compiler/all.cm exports the union of the exports of |
56 |
|
$smlnj/compiler/<arch>.cm |
57 |
|
|
58 |
|
There are no structures <Arch>Compiler anymore, use |
59 |
|
$smlnj/compiler/<arch>.cm instead. |
60 |
|
|
61 |
|
Library host-compiler-0.cm is gone. Instead, the internal library |
62 |
|
that instantiates CM is now called cm0.cm. Selection of the host |
63 |
|
compiler (backend) is no longer done here but. (Responsibility for it |
64 |
|
now lies with $smlnj/compiler/current.cm. This seems to be more |
65 |
|
logical.) |
66 |
|
|
67 |
|
Many individual files have been moved or renamed. Some files have |
68 |
|
been split into multiple files, and some "dead" files have been deleted. |
69 |
|
|
70 |
|
Aside from these changes to library organization, there are also changes |
71 |
|
to the way the code itself is organized: |
72 |
|
|
73 |
|
Structure Binfile has been re-implemented in such a way that it no |
74 |
|
longer needs any knowledge of the compiler. It exclusively deals |
75 |
|
with the details of binfile layout. It no longer invokes the |
76 |
|
compiler (for the purpose of creating new prospective binfile |
77 |
|
content), and it no longer has any knowledge of how to interpret |
78 |
|
pickles. |
79 |
|
|
80 |
|
Structure Compile (: COMPILE) has been stripped down to the bare |
81 |
|
essentials of compilation. It no longer deals with linking/execution. |
82 |
|
The interface has been cleaned up considerably. |
83 |
|
|
84 |
|
Utility routines for dealing with linking and execution have been |
85 |
|
moved into their own substructures. |
86 |
|
|
87 |
|
(The ultimate goal of these changes is to provide a light-weight |
88 |
|
binfile loader/linker (at least for, e.g., stable libraries) that |
89 |
|
does not require CM or the compiler to be present.) |
90 |
|
|
91 |
|
CM documentation has been updated to reflect the changes to library |
92 |
|
organization. |
93 |
|
|
94 |
|
---------------------------------------------------------------------- |
95 |
|
Name: Matthias Blume |
96 |
Date: 2001/07/10 17:30:00 EDT |
Date: 2001/07/10 17:30:00 EDT |
97 |
Tag: Release_110_34 |
Tag: Release_110_34 |
98 |
Description: |
Description: |