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

SCM Repository

[smlnj] View of /sml/trunk/READMES/110.37-README.html
ViewVC logotype

View of /sml/trunk/READMES/110.37-README.html

Parent Directory Parent Directory | Revision Log Revision Log

Revision 995 - (download) (as text) (annotate)
Fri Nov 23 21:02:11 2001 UTC (20 years, 8 months ago) by blume
File size: 7908 byte(s)
added HTML version of README
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <title>SML/NJ 110.37 NEWS</title>
  <meta name="author" content="Matthias Blume">
  <meta name="description" content="working release announcement for SML/NJ">
<div align="Center">  
<h1>S  M  L   /   N  J &nbsp;                    1  1  0  . 37 &nbsp;    
 N  E  W  S</h1>
<div align="Center"><i>November 23, 2001</i><br>
<div align="Center"><b>WARNING    	This version is intended for compiler
hackers. The  	version ought to be stable, however we have not run 	our full
regression testing.          <a href="http://cm.bell-labs.com/cm/cs/what/smlnj/index.html">
 http://cm.bell-labs.com/cm/cs/what/smlnj/index.html</a> </b><a href="http://cm.bell-labs.com/cm/cs/what/smlnj/index.html"><b><br>
  </b></a> </div>
<hr width="100%" size="2" align="Left">  
  <li>Improvements to the MLRISC backend.</li>
  <li>Enhanced export-list syntax for .cm-files.</li>
  <li>Various assorted bug fixes and improvements to other components and
<div align="Left">  
<hr width="100%" size="2" align="Left">  
  <li>Implemented a complete redesign of MLRISC pseudo-ops. Now there ought
to never be any question of incompatabilities with pseudo-op syntax expected
by host assemblers. For now, only modules supporting GAS syntax are implemented
but more should follow, such as MASM, and vendor assembler syntax, e.g. IBM
as, Sun as, etc. The new pseudo-ops design is used to add a string to the
end of the code stream that represents the file name.</li>
  <li>Fix for a backpatching bug reported by Allen. Because the boundary
between short and long span-dependent instructions is +/- 128, there are
an astounding number of span-dependent instructions whose size is over estimated.
Allen came up with the idea of letting the size of span dependent instructions
be non-monotonic, for a maxIter number of times, after which the size must
be monotonically increasing. This table shows the number of span-dependent
instructions whose size was over-estimated as a function of maxIter, for
the file Parse/parse/ml.grm.sml:&nbsp;
    <table cellpadding="2" cellspacing="2" border="1" width="40%" align="Center">
          <td valign="Top" align="Left">maxIter<br>
          <td valign="Top"># of instructions<br>
          <td valign="Top">10<br>
          <td valign="Top">687<br>
          <td valign="Top">20<br>
          <td valign="Top">438<br>
          <td valign="Top">30<br>
          <td valign="Top">198<br>
          <td valign="Top">40<br>
          <td valign="Top">0<br>
  <li>In compiling the compiler, there is no significant difference in compilation
speed between maxIter=10 and maxIter=40. Actually, my measurements showed
that maxIter=40 was a tad faster than maxIter=10! Also 96% of the&nbsp; files
in the compiler reach a fix point within 13 iterations, so fixing maxIter
at 40, while high, is okay.</li>
  <li>Fixed the bug described in blume-20010920-slowfp. The fix involves&nbsp;</li>
    <li>generating FCOPYs in FSTP in ia32-svid</li>
    <li>marking a CALL with the appropriate annotation</li>
  <li>(x86-fast-fp is still off by default.)</li>
  <li>X86RA now uses a valid (instead of dummy) PrintFlowgraph module.</li>
  <li>The representation of a program point never expected to see more than
65536 instructions in a basic block!&nbsp; Fixed.</li>
  <li>avoid "/../" in filenames as much as possible (but only where it is
  <li>experimental implementation of "portable graphs" (See the proposal
in <a href="http://cm.bell-labs.com/cm/cs/who/blume/pgraph/proposal.pdf">
http://cm.bell-labs.com/cm/cs/who/blume/pgraph/proposal.pdf </a>for details
on portable library graphs.)</li>
  <li>there are also new libraries $/pgraph.cm and $/pgraph-util.cm</li>
  <li>CM now implements a simple "set calculus" for specifying export lists.
In particular, it is now possible to refer to the export lists of other libraries/groups/sources
and form unions as well as differences. See the latest <a href="http://cm.bell-labs.com/cm/cs/what/smlnj/doc/CM/new.pdf">
CM manual</a> for details.</li>
  <li>A separate notion of "proxy" libraries has been eliminated from CM's
model.&nbsp; (Proxy libraries are now simply a special case of using the
export list calculus.)</li>
  <li>routed the name of the current source file to mlriscgen where it gets
directly emitted into the code object (This uses the new pseudo-op infrastructure
of MLRISC.)</li>
  <li>Underscore patch from Chris Richards (fixing problem with compiling
runtime system under recent NetBSD).</li>
  <li>Removed handling of code object name strings from runtime code. (The
only remaining code-name-string-related code in the runtime is for extracting/reading
of same.)</li>
  <li>Changed the "Function" constructor of type Ast.ctype to carry optional
argument identifiers.</li>
  <li>Changed the return type of TypeUtil.getFunction accordingly.</li>
  <li>Type equality ignores the argument names.</li>
  <li>TypeUtil.composite tries to preserve argument names but gives up quickly
if there is a mismatch.</li>
<h5>installation script:</h5>
  <li>attempts to use "curl" if available (unless "wget" is available as
  <li>put relative anchor names for tool commands into pathconfig</li>
<h5>run script:</h5>
  <li>Changed config/_run-sml (resulting in a changed bin/.run-sml) so that
arguments that contain delimiters are passed through correctly. This change
also means that all "special" arguments of the form @SMLxxx... must come
  <li>some cleanup (all cosmetic)</li>
  <li>temporarily disabled the mechanism that suppresses ML output for C
definitions whose identifiers start with an underscore character</li>
  <li>generate val bindings for enum constants</li>
  <li>user can request that only one style (light or heavy) is being used;
default is to use both (command-line arguments: -heavy and -light)</li>
  <li>fixed bug in handling of function types involving incomplete pointers</li>
  <li>generate ML entry points that take record arguments (i.e., using named
arguments) for C functions that have a prototype with named arguments (see
changes to CKIT)</li>
<h5>Basis implementation:</h5>
  <li>provided a non-hook implementation of exnName (at the toplevel) and
made the "dummy" implementation of exnMessage (at the toplevel) more useful:
if nothing gets "hooked in", then at least you are going to see the exception
name and a message indicating why you don't see more.</li>
    <li>[For the time being, programs that need exnMessage and want to use
ml-build should either use General.exnMessage (strongly recommended) or refer
to structure General at some other point so that CM sees a static dependency.]</li>
    <li>[Similar remarks go for "print" and "use":&nbsp; If you want to use
their functionality in stand-alone programs generated by ml-build, then use
TextIO.output and Backend.Interact.useFile (from $smlnj/compiler.cm)</li>
  <li>Don't use "exnMessage" -- use "General.exnMessage"! (see "Basis implementation")</li>

ViewVC Help
Powered by ViewVC 1.0.0