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

SCM Repository

[smlnj] Annotation of /sml/trunk/READMES/110.32-README
ViewVC logotype

Annotation of /sml/trunk/READMES/110.32-README

Parent Directory Parent Directory | Revision Log Revision Log


Revision 780 - (view) (download)

1 : blume 780
2 :     S M L / N J
3 :    
4 :     1 1 0 . 3 2 N E W S
5 :    
6 :     December 22, 2000
7 :    
8 :     WARNING
9 :    
10 :     This version is intended for compiler hackers. The
11 :     version ought to be stable, however we have not run
12 :     our full regression testing.
13 :    
14 :     http://cm.bell-labs.com/cm/cs/what/smlnj/index.html
15 :    
16 :    
17 :     Summary:
18 :    
19 :     This version is being used to check point a large number of changes
20 :     to MLRISC, which now uses infinite precision integers on all
21 :     architectures. We have run the Basis regressions tests so the
22 :     changes ought to be fairly robust.
23 :    
24 :     There are a number of other CM, Basis, and Tool related changes as
25 :     well.
26 :    
27 :     --------------------------------
28 :    
29 :     MLRISC:
30 :    
31 :     Fixes:
32 :     This change fixes two problems:
33 :    
34 :     a) There was a proliferation of constructors in MLRISC to
35 :     handle integers of various sizes, e.g.
36 :    
37 :     LI of int | LI32 of Int32.int | LI64 of Int64.int
38 :     ...
39 :    
40 :     which are all replaced with
41 :    
42 :     LI of IntInf.int
43 :    
44 :     b) There is the ever nagging question of cross compiling to
45 :     64bits.
46 :    
47 :    
48 :     Compilation Speed:
49 :     The x86 compiling the compiler is 9% slower than 110.31, however,
50 :     a lot of this, and more, can be recovered. The compiler presently
51 :     uses infinite precision in the front end (AST creation), which is
52 :     converted to 31 and 32 bit integers in the middle end (FLINT and CPS),
53 :     and then converted back to infinite precision in MLRISC (with the
54 :     current changes).
55 :    
56 :     Infinite precision in the middle end (FLINT) will allow a uniform
57 :     treatment of optimizations across words and integers of different
58 :     widths/sizes. Currently, most optimizations are biased towards
59 :     integers and words represented in 31 bits only.
60 :    
61 :    
62 :     What's next:
63 :     Not in chronological order:
64 :    
65 :     1. Use infinite precision in the middle end to allow a
66 :     cleaner and more uniform optimization module for arithmetic.
67 :    
68 :     2. Support for the generation of infinite precision values
69 :     in the back end.
70 :    
71 :     3. Changes to support the single toplevel declaration:
72 :    
73 :     structure LargeInt = IntInf
74 :    
75 :     Basis:
76 :    
77 :     Added the missing bit level functions to the Basis IntInf structure.
78 :    
79 :    
80 :     Tools:
81 :     Improvements to the 'nowhere' tool to handle OR-patterns.
82 :     The nowhere tool is a syntactic extension that allows for
83 :     guarded patterns. See <tt> MLRISC/Tools/Doc/nowhere.tex</tt>.
84 :    
85 :     CM:
86 :     o Added a new "dir" tool to CM's toolset; this can simplify writing
87 :     CM descriptions (see the manual)
88 :    
89 :     o Made some modifications to CM's "Tools" API and documented everything
90 :    
91 :     o CM now leaves exceptions (from the compiler) alone if they are not
92 :     expected; this causes such exceptions to travel up to the top-level
93 :     where they are reported as usual
94 :    
95 :     o Eliminated the "[wrote ...]" progress message in favor of reporting
96 :     some size information for the generated binfile instead
97 :    
98 :     o Removed source code for some project-in-progress that is not ready
99 :     for prime-time (yet)
100 :    
101 :     o Made anchor environments ("bind:"-option for class "cm") inter-operate
102 :     in a more useful way with CMB.make
103 :    
104 :    

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