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/branches/primop-branch/READMES/110.40-README.html
ViewVC logotype

View of /sml/branches/primop-branch/READMES/110.40-README.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1372 - (download) (as text) (annotate)
Mon Sep 15 22:16:26 2003 UTC (16 years, 2 months ago)
File size: 5894 byte(s)
This commit was manufactured by cvs2svn to create branch
'primop-branch'.
<html>
<head>
<title>SML/NJ 110.40 NEWS</title>
</head>
<body>
<pre>
			S  M  L   /   N  J

                  1  1  0  .  4  0      N  E  W  S
			
  		           May 21, 2002

			      WARNING

  	This version is intended for compiler hackers. The 
	version ought to be stable, however we have not run
	our full regression testing.

        http://cm.bell-labs.com/cm/cs/what/smlnj/index.html
</pre>

<dl>
<dt>Summary:
<dd>Significant work in the MLRISC backend.  Many improvements
    and bugfixes in various parts of the implementation.</dd>
</dl>

<hr>

<h3>Details:</h3>

<h4>Libraries:</h4>

<ul>
<li>added $/controls-lib.cm, a library of configurable "controls"
    <br>(In essence, controls are managed ref cells that can be
     grouped in sets and put in "registries" to facilitate
     configuration and customization via, e.g., environment variables
     and command-line arguments.)
    <br>$/controls-lib.cm is a distillation of what used to be a CM-only
     mechanism.  It is now used throughout the compiler.
<li>bug fixed in IntInf (parsing of hex literals)
<li> <tt>==</tt> and <tt>!=</tt> added to INT_INF interface (just
     placeholders for now)
<li>added mergeWith function to ORD_MAP interface
<li>added an implementation of Danvy-style format combinators to $/smlnj-lib.cm
<li>priority queues added to Util library (using Okasaki's leftist-tree
    implementation)
<li>updates to $/hash-cons-lib.cm (consR1 ... consR5 added)
<li>fixed bug in outputSubstr (in TextIO)
<li>new scrollbar implementation (eXene) courtesy of Allen Stoughton
</ul>

<h4>Basis:</h4>

<ul>
<li>implemented Knuth-Morris-Pratt string matching and used it
    for String.isSubstring, Substring.isSubstring, and Substring.position.
<li>added {String,Substring}.{concatWith,isSuffix,isSubstring} and
    Substring.full
</ul>

<h4>MLRISC:</h4>

<ul>
<li>jump chaining
<li>static block frequency calculation
<li>Ball-Larus branch prediction heuristics implemented
<li>graphical viewer for control flow graphs added
<li>treatment of pseudo-ops changed (get emitted first now)
<li>REMT removed from mltree; DIV and MOD now take a rounding
    mode (DIV_TO_ZERO and DIV_TO_NEGINF)
<li>made generic implementations of DIV_TO_NEGINF more efficient
<li>CFG edge splitting added
<li>buggy parts of x86-fp recoded
<li>added instructions for 64-bit support on x86 (not enabled yet)
</ul>

<h4>CM:</h4>

<ul>
<li>a new PID generation scheme is in place;  it guarantees freedom
     from accidental clashes that could subvert the type system but
     is "stable" enough to maintain cutoff recompilation properties
<li>documentation updates
<li>minor bug fixes
<li>lambda-split aggressiveness can now be specified on a per-file
     basis in init.cmi as well
<li>CM is now aware of (_)overload, so it calculates dependecies for
     it correctly
<li>support for non-0 entrypoint offsets added
<li>command-line argument handling for showing/setting controls added
<li>bug in command-line handling of noweb (in noweb tool) fixed
<li>improved handling of pathnames in make tool
</ul>

<h4>Runtime:</h4>

<ul>
<li>fix for bug 1131 (excessive heap usage)
<li>heap export now silent unless GC messages are on
<li>fixed assembly code so that X86.prim.asm now compiles without
     warnings
<li>support for non-0 entrypoint offsets added
</ul>

<h4>Compiler:</h4>

<ul>
<li>cross-module inlining works much better now
<li>stopgap fix for problem with ppDec in the presence of multiple
     declarations of the same type name within one compilation unit
<li>full support for div/mod/rem/quot added to x86 code generator
<li>primops added for divisions of all flavors; track those operations
     to the backend instead of clumsily macro-expanding them out
     at "translate" time
<li>INLMIN, INLMAX, INLABS parameterized by numkind; use this
     to implement all flavors of min, max, and abs
     (Real.abs still maps to a separate FP primop.)
<li>preliminary support for "raw record" allocation and reentrant
     C function calls added
<li>conditional move added to cps (still buggy, therefore disabled)
<li> _overload now accepted as synonym for overload (when overloading
     is enabled); this is for backward-compatibility
<li>support for non-0 entrypoint offsets added;  this (or something
     similar) is needed to be able to deal with block reordering
<li>new, better scaling CPS spill phase
<li>compiler "knows" its native C calling convention (no longer needs
     to be told by ml-nlffigen); X86Backend now split into X86CCallBackend
     and X86StdCallBackend
</ul>

<h4>FFI:</h4>

<ul>
<li>all C FFI libraries now anchored under $c
<li>tweaks to type encoding (use polymorphism to emulate subtyping)
<li>encoding of incomplete type is now equal to that of the
     corresponding complete type; no more POINTER_TO_INCOMPLETE_TYPE
     etc.
     (This restores the full generality of the translation -- something
     that was lost when we removed functors.)
<li>support for (optional) mapping enum types to datatypes added
<li>types in structures C and C_Debug are now equal
<li>added "witness value" mechanism to ml-nlffi-lib.cm to
     implement efficient arbitrary-depth "casts" that strip away
     or add "const" modifiers
<li>ML representation of "" changed so that conversion to C string
     is very efficient
</ul>

<h4>Installer/scripts:</h4>

<ul>
<li>suggestions for more preloads added to config/preloads
<li>don't use ?_DEFAULT environment variables. (They no longer
     exist since we switched to $/controls-lib.cm.)
<li>buggy transitive-closure algorithm fixed; it caused more things
     than necessary to be compiled
</ul>

<h4>Miscellanea:</h4>

<ul>
<li>minor bug fixes and improvements to mlrisc tools
<li>mdl tool compiles again, but without anything that depends on
     RTL specs (since this is currently broken)
<li>added #[...] expressions to mlrisc tools
</ul>

</body>
</html>

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