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

SCM Repository

[smlnj] Diff of /sml/trunk/src/cm/Doc/manual.tex
ViewVC logotype

Diff of /sml/trunk/src/cm/Doc/manual.tex

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 652, Tue Jun 6 02:14:56 2000 UTC revision 653, Wed Jun 7 07:59:06 2000 UTC
# Line 4  Line 4 
4    
5  \marginparwidth0pt\oddsidemargin0pt\evensidemargin0pt\marginparsep0pt  \marginparwidth0pt\oddsidemargin0pt\evensidemargin0pt\marginparsep0pt
6  \topmargin0pt\advance\topmargin by-\headheight\advance\topmargin by-\headsep  \topmargin0pt\advance\topmargin by-\headheight\advance\topmargin by-\headsep
7  \textwidth6.7in\textheight9.1in %\renewcommand{\baselinestretch}{1.2}  \textwidth6.7in\textheight9.1in
8  \columnsep0.25in  \columnsep0.25in
9    
10  \newcommand{\smlmj}{110}  \newcommand{\smlmj}{110}
# Line 205  Line 205 
205  specifications (see Section~\ref{sec:access}).  specifications (see Section~\ref{sec:access}).
206  \end{itemize}  \end{itemize}
207    
208  As an example, let us assume that {\tt foo-utils.cm} contains the  As an example, let us assume that
209  following text:  {\tt foo-utils.cm} contains the following text:
210    
211  %note: emacs gets temporarily confused by the single dollar  %note: emacs gets temporarily confused by the single dollar
212  \begin{verbatim}  \begin{verbatim}
# Line 222  Line 222 
222    
223  \begin{itemize}  \begin{itemize}
224  \item it is a component of library {\tt foo-lib.cm} (meaning that only  \item it is a component of library {\tt foo-lib.cm} (meaning that only
225  foo-lib.cm itself or other groups thereof may list foo-utils.cm as one  foo-lib.cm itself or other groups thereof may list {\tt foo-utils.cm} as one
226  of their members)  of their members)
227  \item {\tt set-utils.sml} and {\tt map-util.sml} are ML source files  \item {\tt set-utils.sml} and {\tt map-util.sml} are ML source files
228  belonging to this component  belonging to this component
# Line 249  Line 249 
249  %note: emacs should be sufficiently un-confused again by now  %note: emacs should be sufficiently un-confused again by now
250    
251  No harm is done if {\tt foo-lib.cm} does not actually mention {\tt  No harm is done if {\tt foo-lib.cm} does not actually mention {\tt
252  foo-utils.cm}.  In this case it could be that {\tt foo-utils.cm} is  foo-utils.cm}.  In this case it could be that\linebreak {\tt
253  mentioned indirectly via a chain of other components of {\tt  foo-utils.cm} is mentioned indirectly via a chain of other components
254  foo-lib.cm}.  The other possibility is that it is not mentioned at all  of {\tt foo-lib.cm}.  The other possibility is that it is not
255  (in which case CM would never know about it and not complain).  mentioned at all (in which case CM would never know about it, so it
256    cannot complain).
257    
258  \subsection{Multiple occurences of the same member}  \subsection{Multiple occurences of the same member}
259  \label{sec:multioccur}  \label{sec:multioccur}
# Line 377  Line 378 
378  not correspond to an existing anchor.  not correspond to an existing anchor.
379    
380  Note that any ``implicitly anchored'' path {\tt foo/bar/baz} (as  Note that any ``implicitly anchored'' path {\tt foo/bar/baz} (as
381  described above) can always be re-written as {\tt \$foo/foo/bar/baz}.  described above) can always be re-written as\linebreak {\tt
382  Moreover, the explicit form is slightly more expressive as it permits  \$foo/foo/bar/baz}.  Moreover, the explicit form is slightly more
383  names such as {\tt \$a/b/c} where the anchor name and the first arc do  expressive as it permits names such as {\tt \$a/b/c} where the anchor
384  not coincide.  name and the first arc do not coincide.
385    
386  One can abbreviate the frequent case where they do coincide without  One can abbreviate the frequent case where they do coincide without
387  resorting to implicit syntax by writing {\tt \$/foo/bar/baz} instead  resorting to implicit syntax by writing\linebreak {\tt \$/foo/bar/baz}
388  of the lengthier {\tt \$foo/foo/bar/baz}.  instead of the lengthier {\tt \$foo/foo/bar/baz}.
389    
390  Another (somewhat controversial) shorthand is the following: if an  Another (somewhat controversial) shorthand is the following: if an
391  explicitly anchored path has only one component and the component  explicitly anchored path has only one component and the component
# Line 606  Line 607 
607  temporarily while support for {\em implicitly anchored paths} (see  temporarily while support for {\em implicitly anchored paths} (see
608  Section~\ref{sec:implicit}) is being faded out.  If set to {\tt  Section~\ref{sec:implicit}) is being faded out.  If set to {\tt
609  false}, CM will check for implicitly anchored paths and issue an  false}, CM will check for implicitly anchored paths and issue an
610  error.  The default ({\tt true}, i.e, implicit anchors are being  error; this is the default.  Changing the value to {\tt true} (e.g.,
611  accepted) can be overridden at startup by the environment variable  by setting the environment variable {\tt CM\_IMPLICIT\_ANCHORS at
612  {\tt CM\_IMPLICIT\_ANCHORS}.  startup}) causes implicit anchors to be accepted.
613    
614  \subsubsection*{Path anchors}  \subsubsection*{Path anchors}
615    
# Line 805  Line 806 
806  Unix TERM signal to destroy the server.  Unix TERM signal to destroy the server.
807    
808  Given a server handle, function {\tt CM.Server.name} returns the  Given a server handle, function {\tt CM.Server.name} returns the
809  string that was originally given to the call of {\tt CM.Server.start}  string that was originally given to the call of\linebreak {\tt
810  used to created the server.  CM.Server.start} used to created the server.
811    
812  \subsubsection*{Plug-ins}  \subsubsection*{Plug-ins}
813    
# Line 1240  Line 1241 
1241  shortened by its first character.  shortened by its first character.
1242    
1243  In the specification one can swap the positions of source and target  In the specification one can swap the positions of source and target
1244  (i.e., let member name be the target) by using a {\tt source}  (i.e., let the member name be the target) by using a {\tt source}
1245  parameter:  parameter:
1246    
1247  \begin{verbatim}  \begin{verbatim}
# Line 1495  Line 1496 
1496  Here, the file {\tt bar-client.sml} gets included if {\tt  Here, the file {\tt bar-client.sml} gets included if {\tt
1497  SMLNJ\_VERSION} is greater than 110 and {\tt new-foo.sml} exports a  SMLNJ\_VERSION} is greater than 110 and {\tt new-foo.sml} exports a
1498  structure {\tt Bar} {\em or} if {\tt SMLNJ\_VERSION <= 110} and {\tt  structure {\tt Bar} {\em or} if {\tt SMLNJ\_VERSION <= 110} and {\tt
1499  old-foo.sml} exports structure {\tt Bar}.  old-foo.sml} exports structure {\tt Bar}.  Otherwise\linebreak {\tt
1500  Otherwise {\tt no-bar-so-far.sml} gets included instead.  In addition,  no-bar-so-far.sml} gets included instead.  In addition, the export of
1501  the export of structure {\tt Bar} is guarded by its own existence.  structure {\tt Bar} is guarded by its own existence.  (Structure {\tt
1502  (Structure {\tt Bar} could also be defined by {\tt no-bar-so-far.sml}  Bar} could also be defined by {\tt no-bar-so-far.sml} in
1503  in which case it would get exported regardless of the outcome of the  which case it would get exported regardless of the outcome of the
1504  other {\tt defined} test.)  other {\tt defined} test.)
1505    
1506  \subsection{Explicit errors}  \subsection{Explicit errors}
# Line 1624  Line 1625 
1625    
1626  {\em Note:} As discussed in section~\ref{sec:toolparam}, CM sometimes  {\em Note:} As discussed in section~\ref{sec:toolparam}, CM sometimes
1627  looks for library files in  looks for library files in
1628  {\tt CM/}{\tt version}{\tt /}{\it arch}{\tt -}{\it os}.  {\tt CM/}{\it version}{\tt /}{\it arch}{\tt -}{\it os}.
1629  However, library files are never {\em created} there by CM.  If  However, library files are never {\em created} there by CM.  If
1630  several versions of the same library are to be provided, an  several versions of the same library are to be provided, an
1631  administrator must arrange the directory hierarchy accordingly ``by  administrator must arrange the directory hierarchy accordingly ``by
# Line 1638  Line 1639 
1639  the time stamp on skeleton file and binfile has to be exactly the  the time stamp on skeleton file and binfile has to be exactly the
1640  same\footnote{CM explicitly sets the time stamp to be the same.} as  same\footnote{CM explicitly sets the time stamp to be the same.} as
1641  the one on the ML source file.  This guarantees that all changes to a  the one on the ML source file.  This guarantees that all changes to a
1642  source will be noticed\footnote{except for the pathological case where  source will be noticed.\footnote{except for the pathological case where
1643  two different versions of the same source file have exactly the same  two different versions of the same source file have exactly the same
1644  time stamp}.  time stamp}
1645    
1646  CM also uses time stamps to decide whether tools such as ML-Yacc or  CM also uses time stamps to decide whether tools such as ML-Yacc or
1647  ML-Lex need to be run (see Section~\ref{sec:tools}).  However, the  ML-Lex need to be run (see Section~\ref{sec:tools}).  However, the
# Line 1682  Line 1683 
1683      dflopts = [] }      dflopts = [] }
1684  \end{verbatim}  \end{verbatim}
1685    
1686    \begin{sloppy}
1687  This code can either be packaged as a CM library or entered at the  This code can either be packaged as a CM library or entered at the
1688  interactive top level after loading the {\tt \$smlnj/cm/tools.cm} library  interactive top level after loading the {\tt \$smlnj/cm/ tools.cm}
1689  via {\tt CM.make} or {\tt CM.load\_plugin}.  ({\tt CM.autoload} is not  library via {\tt CM.make} or {\tt CM.load\_plugin}.  ({\tt
1690  enough because of its lazy nature which prevents the required  CM.autoload} is not enough because of its lazy nature which prevents
1691  side-effects to occur.)  the required side-effects to occur.)
1692    \end{sloppy}
1693    
1694  In our example, the shell command name for our tool is {\tt  In our example, the shell command name for our tool is {\tt
1695  new-ml-yacc}.  When looking for this command in the file system, CM  new-ml-yacc}.  When looking for this command in the file system, CM
# Line 1806  Line 1809 
1809  machines by taking advantage of the network file system and the  machines by taking advantage of the network file system and the
1810  ``rsh'' facility.  ``rsh'' facility.
1811    
1812  To perform parallel compilations, one must attach ``compile servers'' to  To perform parallel compilations, one must attach ``compile servers''
1813  CM.  This is done using function {\tt CM.Server.start} with the following  to CM.  This is done using function\linebreak {\tt CM.Server.start}
1814  signature:  with the following signature:
1815    
1816  \begin{verbatim}  \begin{verbatim}
1817    structure Server : sig    structure Server : sig
# Line 2074  Line 2077 
2077  closely tied to the Standard ML programming language~\cite{milner97}  closely tied to the Standard ML programming language~\cite{milner97}
2078  and its SML/NJ implementation~\cite{appel91:sml}.  and its SML/NJ implementation~\cite{appel91:sml}.
2079    
2080  The current version is preceded by several other compilation managers,  The current version is preceded by several other compilation managers.
2081  the most recent going by the same name ``CM''~\cite{blume95:cm}, while  Of those, the most recent went by the same name
2082  earlier ones were known as IRM ({\it Incremental Recompilation  ``CM''~\cite{blume95:cm}, while earlier ones were known as IRM ({\it
2083  Manager})~\cite{harper94:irm} and SC (for {\it Separate  Incremental Recompilation Manager})~\cite{harper94:irm} and SC (for
2084  Compilation})~\cite{harper-lee-pfenning-rollins-CM}.  CM owes many  {\it Separate Compilation})~\cite{harper-lee-pfenning-rollins-CM}.  CM
2085  ideas to SC and IRM.  owes many ideas to SC and IRM.
2086    
2087  Separate compilation in the SML/NJ system heavily relies on mechanisms  Separate compilation in the SML/NJ system heavily relies on mechanisms
2088  for converting static environments (i.e., the compiler's symbol  for converting static environments (i.e., the compiler's symbol
# Line 2125  Line 2128 
2128  \item[CM keywords:] {\bf group}, {\bf Group}, {\bf GROUP}, {\bf  \item[CM keywords:] {\bf group}, {\bf Group}, {\bf GROUP}, {\bf
2129  library}, {\bf Library}, {\bf LIBRARY}, {\bf is}, {\bf IS}.  These  library}, {\bf Library}, {\bf LIBRARY}, {\bf is}, {\bf IS}.  These
2130  keywords are recognized everywhere except within ``preprocessor''  keywords are recognized everywhere except within ``preprocessor''
2131  lines (lines starting with {\bf \#}) or following one of the SML  lines (lines starting with {\bf \#}) or following one of the namespace
2132  keywords.  specifiers.
2133  \item[Preprocessor control keywords:] {\bf \#if}, {\bf \#elif}, {\bf  \item[Preprocessor control keywords:] {\bf \#if}, {\bf \#elif}, {\bf
2134  \#else}, {\bf \#endif}, {\bf \#error}.  These keywords are recognized  \#else}, {\bf \#endif}, {\bf \#error}.  These keywords are recognized
2135  only at the beginning of the line and indicate the start of a  only at the beginning of the line and indicate the start of a
# Line 2224  Line 2227 
2227  The following set of rules defines the syntax for export lists (\nt{elst}):  The following set of rules defines the syntax for export lists (\nt{elst}):
2228    
2229  \begin{tabular}{rcl}  \begin{tabular}{rcl}
2230  \nt{guardedexport} &\ar& \{ \nt{export} \} (\tl{\#endif} \vb \tl{\#else} \{ \nt{export} \} \tl{\#endif} \vb \tl{\#elif} \nt{ppexp} \nt{guardedexports}) \\  \nt{guardedexport} &\ar& \{ \nt{export} \} (\tl{\#endif} \vb
2231  \nt{export}        &\ar& \nt{mlsym} \vb \tl{\#if} \nt{ppexp} \nt{guardedexports} \vb \tl{\#error}  \\  \tl{\#else} \{ \nt{export} \} \tl{\#endif} \vb \tl{\#elif} \nt{ppexp}
2232    \nt{guardedexports}) \\
2233    \nt{restline}      &\ar& rest of current line up to next newline character \\
2234    \nt{export}        &\ar& \nt{mlsym} \vb \tl{\#if} \nt{ppexp}
2235    \nt{guardedexports} \vb \tl{\#error} \nt{restline}  \\
2236  \nt{elst}       &\ar& \nt{export} \{ \nt{export} \} \\  \nt{elst}       &\ar& \nt{export} \{ \nt{export} \} \\
2237  \end{tabular}  \end{tabular}
2238    
# Line 2247  Line 2254 
2254  \nt{class}          &\ar& \nt{stdpn} \\  \nt{class}          &\ar& \nt{stdpn} \\
2255  \nt{member}         &\ar& \nt{pathname} [\tl{:} \nt{class}] [\tl{(} \nt{toolopts} \tl{)}] \\  \nt{member}         &\ar& \nt{pathname} [\tl{:} \nt{class}] [\tl{(} \nt{toolopts} \tl{)}] \\
2256  \nt{guardedmembers} &\ar& \nt{members} (\tl{\#endif} \vb \tl{\#else} \nt{members} \tl{\#endif} \vb \tl{\#elif} \nt{ppexp} \nt{guardedmembers}) \\  \nt{guardedmembers} &\ar& \nt{members} (\tl{\#endif} \vb \tl{\#else} \nt{members} \tl{\#endif} \vb \tl{\#elif} \nt{ppexp} \nt{guardedmembers}) \\
2257  \nt{members}        &\ar& \{ (\nt{member} \vb \tl{\#if} \nt{ppexp} \nt{guardedmembers} \vb \tl{\#error})\}  \nt{members}        &\ar& \{ (\nt{member} \vb \tl{\#if} \nt{ppexp}
2258    \nt{guardedmembers} \vb \tl{\#error} \nt{restline}) \}
2259  \end{tabular}  \end{tabular}
2260    
2261  \subsection{EBNF for library descriptions}  \subsection{EBNF for library descriptions}
# Line 2389  Line 2397 
2397  \section{Listing of all CM-specific environment variables}  \section{Listing of all CM-specific environment variables}
2398    
2399  Most control parameters that affect CM's operation can be adjusted  Most control parameters that affect CM's operation can be adjusted
2400  using environment variables $v_s$ at startup time, i.e,  using environment variables $v_s$ at startup time, i.e, when the {\tt
2401  when the {\tt sml} command is invoked.  Each such parameter has a  sml} command is invoked.  Each such parameter has a default setting.
2402  default setting.  Default settings are determined at bootstrap time,  Default settings are determined at bootstrap time, i.e., the time when
2403  i.e., the time when the heap image for SML/NJ's interactive system is  the heap image for SML/NJ's interactive system is
2404  built.\footnote{Normally this is the same as installation time, but  built.\footnote{Normally this is the same as installation time, but
2405  for SML/NJ compiler there is also a {\tt makeml} script for the  for SML/NJ compiler there is also a {\tt makeml} script for the
2406  purpose of bootstrapping.}  purpose of bootstrapping.}  At bootstrap time, it is possible to
2407    adjust defaults by using a different set of environment variables
2408  At bootstrap time, it is possible to adjust defaults by using a  $v_b$.  If neither $v_s$ nor $v_b$ were set, a hard-wired fallback
 different set of environment variables $v_b$.  The rule  
 is that if parameter $x$ is adjustable using variable {\tt CM\_$X$},  
 then the default is adjustable at bootstrap time using varibable {\tt  
 CM\_$X$\_DEFAULT}.  If neither variable was set, a hard-wired fallback  
2409  value will be used.  value will be used.
2410    
2411    The rule for constructing (the names of) $v_s$ and $v_b$ is the
2412    following: For each adjustable parameter $x$ there is a {\em name
2413    stem}.  If the stem for $x$ is $s$, then $v_s = \mbox{\tt CM\_}s$ and
2414    $v_b = v_s\mbox{\tt \_DEFAULT}$.
2415    
2416  Since the normal installation procedure for SML/NJ sets some of the  Since the normal installation procedure for SML/NJ sets some of the
2417  {\tt CM\_$X$\_DEFAULT} variables at bootstrap time, there are two  $v_b$ variables at bootstrap time, there are two columns with default
2418  columns with default values in the following table.  The value labeled  values in the following table.  The value labeled {\em fallback} is
2419  {\em fallback} is the one that would have been used had there been no  the one that would have been used had there been no environment
2420  environment variable at bootrap time, the one labeled {\em default} is  variable at bootrap time, the one labeled {\em default} is the one the
2421  the one the user will actually see.  user will actually see.
2422    
2423  To save space, the table only lists the {\em stem} of each variable  To save space, the table lists the stem but not the names for its
2424  name.  If the stem is $X$, then $v_s$ has the form {\tt CM\_$X$} and  associated (longer) $v_s$ and $v_b$.  For example, since the the table
2425  $v_b$ has the form {\tt CM\_$X$\_DEFAULT}.  For example, CM's  shows {\tt VERBOSE} in the row for {\tt CM.Control.verbose}, CM's
2426  verbosity can be adjusted using {\tt CM\_VERBOSE} and the default can  per-session verbosity can be adjusted using {\tt CM\_VERBOSE} and the
2427  be set using {\tt CM\_VERBOSE\_DEFAULT}.  boot-time default can be set using {\tt CM\_VERBOSE\_DEFAULT}.
2428    
2429  \begin{center}  \begin{center}
2430  \begin{small}  \begin{small}
# Line 2494  Line 2503 
2503    
2504  \begin{center}  \begin{center}
2505  \begin{tabular}{p{2.3in}||p{2.8in}|c|c}  \begin{tabular}{p{2.3in}||p{2.8in}|c|c}
2506  name & description & installed & autoloaded \\  name & description & installed & loaded \\
2507  \hline\hline  \hline\hline
2508  {\tt \$/basis.cm} & Standard Basis Library & always & yes \\  {\tt \$/basis.cm} & Standard Basis Library & always & auto \\
2509  \hline\hline  \hline\hline
2510  {\tt \$/ml-yacc-lib.cm} & ML-Yacc library & always & no \\  {\tt \$/ml-yacc-lib.cm} & ML-Yacc library & always & no \\
2511  \hline\hline  \hline\hline
# Line 2528  Line 2537 
2537  manager API.  manager API.
2538    
2539  \begin{center}  \begin{center}
2540  \begin{tabular}{p{2.3in}||p{2.8in}|c|c}  \begin{tabular}{p{2.3in}||p{2.5in}|c|c}
2541  name & description & installed & autoloaded \\  name & description & installed & loaded \\
2542  \hline\hline  \hline\hline
2543  {\tt \$smlnj/compiler.cm} \newline  {\tt \$smlnj/compiler.cm} \newline
2544  {\tt \$smlnj/compiler/current.cm} & visible compiler for current  {\tt \$smlnj/compiler/current.cm} & visible compiler for current
2545  architecture & always & yes \\  architecture & always & auto \\
2546  \hline\hline  \hline\hline
2547  {\tt \$smlnj/cm.cm} \newline  {\tt \$smlnj/cm.cm} \newline
2548  {\tt \$smlnj/cm/full.cm} & compilation manager & always & yes \\  {\tt \$smlnj/cm/full.cm} & compilation manager & always & auto \\
2549  \hline  \hline
2550  {\tt \$smlnj/cm/tools.cm} & API for extending CM with new tools &  {\tt \$smlnj/cm/tools.cm} & API for extending CM with new tools &
2551  always & no \\  always & no \\
2552  \hline\hline  \hline\hline
2553  {\tt \$/mllex-tool.cm} & plugin library for class {\tt mllex} & always  {\tt \$/mllex-tool.cm} & plugin library for class {\tt mllex} & always
2554  & no \\  & on demand \\
2555  \hline  \hline
2556  {\tt \$/lex-ext.cm} & plugin library for extension {\tt .lex} & always  {\tt \$/lex-ext.cm} & plugin library for extension {\tt .lex} & always
2557  & no \\  & on demand \\
2558  \hline  \hline
2559  {\tt \$/mlyacc-tool.cm} & plugin library for class {\tt mlyacc} &  {\tt \$/mlyacc-tool.cm} & plugin library for class {\tt mlyacc} &
2560  always & no \\  always & on demand \\
2561  \hline  \hline
2562  {\tt \$/grm-ext.cm} & plugin library for extension {\tt .grm} & always  {\tt \$/grm-ext.cm} & plugin library for extension {\tt .grm} & always
2563  & no \\  & on demand \\
2564  \hline  \hline
2565  {\tt \$/mlburg-tool.cm} & plugin library for class {\tt mlburg} &  {\tt \$/mlburg-tool.cm} & plugin library for class {\tt mlburg} &
2566  always & no \\  always & on demand \\
2567  \hline  \hline
2568  {\tt \$/burg-ext.cm} & plugin library for extension {\tt .burg} &  {\tt \$/burg-ext.cm} & plugin library for extension {\tt .burg} &
2569  always & no \\  always & on demand \\
2570  \hline  \hline
2571  {\tt \$/noweb-tool.cm} & plugin library for class {\tt noweb} & always  {\tt \$/noweb-tool.cm} & plugin library for class {\tt noweb} & always
2572  & no \\  & on demand \\
2573  \hline  \hline
2574  {\tt \$/nw-ext.cm} & plugin library for extension {\tt .nw} & always &  {\tt \$/nw-ext.cm} & plugin library for extension {\tt .nw} & always &
2575  no \\  on demand \\
2576  \hline  \hline
2577  {\tt \$/make-tool.cm} & plugin library for class {\tt make} & always &  {\tt \$/make-tool.cm} & plugin library for class {\tt make} & always &
2578  no \\  on demand \\
2579  \hline  \hline
2580  {\tt \$/shell-tool.cm} & plugin library for class {\tt shell} & always  {\tt \$/shell-tool.cm} & plugin library for class {\tt shell} & always
2581  & no \\  & on demand \\
2582  \end{tabular}  \end{tabular}
2583  \end{center}  \end{center}
2584    
# Line 2583  Line 2592 
2592    
2593  \begin{center}  \begin{center}
2594  \begin{tabular}{p{2.3in}||p{2.8in}|c|c}  \begin{tabular}{p{2.3in}||p{2.8in}|c|c}
2595  name & description & installed & autoloaded \\  name & description & installed & loaded \\
2596  \hline\hline  \hline\hline
2597  {\tt \$smlnj/cmb.cm} \newline  {\tt \$smlnj/cmb.cm} \newline
2598  {\tt \$smlnj/cmb/current.cm} & bootstrap compiler for current  {\tt \$smlnj/cmb/current.cm} & bootstrap compiler for current
# Line 2638  Line 2647 
2647    
2648  \begin{center}  \begin{center}
2649  \begin{tabular}{p{2.8in}||p{2.3in}|c|c}  \begin{tabular}{p{2.8in}||p{2.3in}|c|c}
2650  name & description & installed & autoloaded \\  name & description & installed & loaded \\
2651  \hline\hline  \hline\hline
2652  {\tt \$MLRISC/Lib.cm} & utility library for MLRISC backend & always &  {\tt \$MLRISC/Lib.cm} & utility library for MLRISC backend & always &
2653  no \\  no \\

Legend:
Removed from v.652  
changed lines
  Added in v.653

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