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/releases/release-110.41/READMES/110.40-README
ViewVC logotype

View of /sml/releases/release-110.41/READMES/110.40-README

Parent Directory Parent Directory | Revision Log Revision Log

Revision 1255 - (download) (annotate)
Fri Jul 5 19:55:36 2002 UTC (17 years, 3 months ago)
File size: 5752 byte(s)
This commit was manufactured by cvs2svn to create tag
			S  M  L   /   N  J

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


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



     Significant work in the MLRISC backend.  Many improvements
     and bugfixes in various parts of the implementation.




   * added $/controls-lib.cm, a library of configurable "controls"
     (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.)
     $/controls-lib.cm is a distillation of what used to be a CM-only
     mechanism.  It is now used throughout the compiler.

   * bug fixed in IntInf (parsing of hex literals)

   * == and != added to INT_INF interface  (just placeholders for now)

   * added mergeWith function to ORD_MAP interface

   * added an implementation of Danvy-style format combinators to

   * priority queues added to Util library (using Okasaki's leftist-tree

   * updates to $/hash-cons-lib.cm (consR1 ... consR5 added)

   * fixed bug in outputSubstr (in TextIO)

   * new scrollbar implementation (eXene) courtesy of Allen Stoughton


   * implemented Knuth-Morris-Pratt string matching and used it
     for String.isSubstring, Substring.isSubstring, and Substring.position.

   * added {String,Substring}.{concatWith,isSuffix,isSubstring} and


   * jump chaining

   * static block frequency calculation

   * Ball-Larus branch prediction heuristics implemented

   * graphical viewer for control flow graphs added

   * treatment of pseudo-ops changed (get emitted first now)

   * REMT removed from mltree; DIV and MOD now take a rounding
     mode (DIV_TO_ZERO and DIV_TO_NEGINF)

   * made generic implementations of DIV_TO_NEGINF more efficient

   * CFG edge splitting added

   * buggy parts of x86-fp recoded

   * added instructions for 64-bit support on x86 (not enabled yet)


   * 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

   * documentation updates

   * minor bug fixes

   * lambda-split aggressiveness can now be specified on a per-file
     basis in init.cmi as well

   * CM is now aware of (_)overload, so it calculates dependecies for
     it correctly

   * support for non-0 entrypoint offsets added

   * command-line argument handling for showing/setting controls added

   * bug in command-line handling of noweb (in noweb tool) fixed

   * improved handling of pathnames in make tool


   * fix for bug 1131 (excessive heap usage)

   * heap export now silent unless GC messages are on

   * fixed assembly code so that X86.prim.asm now compiles without

   * support for non-0 entrypoint offsets added


   * cross-module inlining works much better now

   * stopgap fix for problem with ppDec in the presence of multiple
     declarations of the same type name within one compilation unit

   * full support for div/mod/rem/quot added to x86 code generator

   * primops added for divisions of all flavors; track those operations
     to the backend instead of clumsily macro-expanding them out
     at "translate" time

   * 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.)

   * preliminary support for "raw record" allocation and reentrant
     C function calls added

   * conditional move added to cps (still buggy, therefore disabled)

   * _overload now accepted as synonym for overload (when overloading
     is enabled); this is for backward-compatibility

   * support for non-0 entrypoint offsets added;  this (or something
     similar) is needed to be able to deal with block reordering

   * new, better scaling CPS spill phase

   * compiler "knows" its native C calling convention (no longer needs
     to be told by ml-nlffigen); X86Backend now split into X86CCallBackend
     and X86StdCallBackend


   * all C FFI libraries now anchored under $c

   * tweaks to type encoding (use polymorphism to emulate subtyping)

   * encoding of incomplete type is now equal to that of the
     corresponding complete type; no more POINTER_TO_INCOMPLETE_TYPE
     (This restores the full generality of the translation -- something
     that was lost when we removed functors.)

   * support for (optional) mapping enum types to datatypes added

   * types in structures C and C_Debug are now equal

   * added "witness value" mechanism to ml-nlffi-lib.cm to
     implement efficient arbitrary-depth "casts" that strip away
     or add "const" modifiers

   * ML representation of "" changed so that conversion to C string
     is very efficient


   * suggestions for more preloads added to config/preloads

   * don't use ?_DEFAULT environment variables. (They no longer
     exist since we switched to $/controls-lib.cm.)

   * buggy transitive-closure algorithm fixed; it caused more things
     than necessary to be compiled


   * minor bug fixes and improvements to mlrisc tools

   * mdl tool compiles again, but without anything that depends on
     RTL specs (since this is currently broken)

   * added #[...] expressions to mlrisc tools

ViewVC Help
Powered by ViewVC 1.0.0