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/HISTORY
ViewVC logotype

Diff of /sml/trunk/HISTORY

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

revision 1480, Fri Apr 23 15:37:52 2004 UTC revision 1750, Tue Jan 18 17:58:39 2005 UTC
# Line 14  Line 14 
14    
15  ----------------------------------------------------------------------  ----------------------------------------------------------------------
16  Name: Matthias Blume (blume (at) tti - c (dot) org)  Name: Matthias Blume (blume (at) tti - c (dot) org)
17    Date: 2005/01/18 12:00:00 CST
18    Tag: blume-20050118-profile
19    Description:
20    
21    Made time profiling code (interrupt handler) in runtime system aware
22    of new array representation.
23    
24    ----------------------------------------------------------------------
25    Name: Matthias Blume (blume (at) tti - c (dot) org)
26    Date: 2005/01/14 18:00:00 CST
27    Tag: blume-20050114-heap2exec
28    Description:
29    
30    Implemented new (but still experimental) heap2exec facility.  This is
31    tested under Mac OS X and should work under Linux (will test shortly).
32    It will probably also work on the Sparc (will test some time later).
33    
34      - removed old "HACKED_STANDALONE" hack from runtime
35    
36    To be able to test this, uncomment the request for "heap2asm" in
37    config/targets prior to installation.  (Notice that this is different
38    from "heap2exec" mentioned below.  Not a typo.)
39    
40    To perform an actual test, run the command
41    
42       $ bin/heap2exec heapfile execfile
43    
44    (You can put heap2exec on your shell's path.)
45    
46    For example, run
47    
48      $ bin/heap2exec bin/.heap/ml-yacc.ppc-darwin mly
49    
50    This will create a standalone executable called "mly" which you can
51    then invoke directly as a command.
52    
53    ----------------------------------------------------------------------
54    Name: Matthias Blume (blume (at) tti - c (dot) org)
55    Date: 2005/01/07 11:44:00 CST
56    Tag: blume-20050107-mlstring
57    Description:
58    
59    fixed off-by-one error in ML_STRING macro (globals.c)
60    
61    ----------------------------------------------------------------------
62    Name: Matthias Blume (blume (at) tti - c (dot) org)
63    Date: 2004/12/23 18:00:00 CST
64    Tag: blume-20041223-santa
65    Description:
66    
67    Made ml-build script "smarter" (but only very little).
68    
69    ----------------------------------------------------------------------
70    Name: Matthias Blume (blume (at) tti - c (dot) org)
71    Date: 2004/12/21 15:05:00 CST
72    Tag: blume-20041221-longlong
73    Description:
74    
75    * Implemented access to signed and unsigned long long data in NLFFI.
76    (The parameter-passing part of the picture has not complete. But
77    data structure access seems to work.)
78    
79    * Fixed CM's incorrect assumption that the PPC is little-endian.
80      (On the Mac, it is big-endian.  And that's currently our only
81      PPC platform.)
82    
83    ----------------------------------------------------------------------
84    Name: Matthias Blume (blume (at) tti - c (dot) org)
85    Date: 2004/12/21 12:50:00 CST
86    Tag: blume-20041221-memory
87    Description:
88    
89    Some cleanup in the $c/memory.cm library: separated some concerns by
90    moving allocation code and memory access code each into their own
91    files.
92    
93    ----------------------------------------------------------------------
94    Name: Allen Leung (leunga (at) reservoir (dot) com)
95    Date: 2004/12/17 16:12:00 EST
96    Tag: leunga-20041217-cygwin-smlnj-home
97    Description:
98    
99        The Unix I/O library of SML/NJ on cygwin does not understand
100    Windows style pathname, so problems arise when SMLNJ_HOME is set
101    to a Windows style pathname.  _run-sml now converts SMLNJ_HOME
102    to a POSIX pathname on cygwin.
103    
104    ----------------------------------------------------------------------
105    Name: Matthias Blume (blume (at) tti - c (dot) org)
106    Date: 2004/12/16 13:35:00 CST
107    Tag: Release_110_52
108    Description:
109    
110    Last-minute changes incorporated into 110.52.  Release tag moved.
111    
112    The changes:
113       - HashString.hashString' -> HashString.hashSubstring
114       - bug fix in UnivariateStats
115    
116    ----------------------------------------------------------------------
117    Name: Matthias Blume (blume (at) tti - c (dot) org)
118    Date: 2004/12/15 23:40:00 CST
119    Tag: blume-20041215-hashSubstring
120    Description:
121    
122    - HashString.hashString' -> HashString.hashSubstring
123    - corresponding changes in atom.sml
124    - "de-compressed" (aka. un-obfuscated) code for UnivariateStats and
125      added some comments
126    
127    ----------------------------------------------------------------------
128    Name: Matthias Blume (blume (at) tti - c (dot) org)
129    Date: 2004/12/15 15:30:00 CST
130    Tag: (Release_110_52)
131    Description:
132    
133    New working version (110.52).  NEW BOOTFILES!
134    
135    ----------------------------------------------------------------------
136    Name: Matthias Blume (blume (at) tti - c (dot) org)
137    Date: 2004/12/15 12:45:00 CST
138    Tag: blume-20041215-spaces
139    Description:
140    
141    More on the space problem (this time for Win32).
142    
143    ----------------------------------------------------------------------
144    Name: Matthias Blume (blume (at) tti - c (dot) org)
145    Date: 2004/12/14 17:30:00 CST
146    Tag: blume-20041214-spaces
147    Description:
148    
149    Hacked some of the scripts (in particular: the installer) to cope with
150    spaces in filenames a bit better.  But beware: the current "solution"
151    is likely still full of bugs and inherently incomplete.  (We need to
152    do away with those shell scripts for a comprehensive solution.)
153    
154    ----------------------------------------------------------------------
155    Name: Matthias Blume (blume (at) tti - c (dot) org)
156    Date: 2004/12/13 14:45:00 CST
157    Tag: blume-20041213-ml-makedepend
158    Description:
159    
160    Fixed bug in code for ml-makedepend.
161    
162    ----------------------------------------------------------------------
163    Name: Matthias Blume (blume (at) tti - c (dot) org)
164    Date: 2004/12/09 16:30:00 CST
165    Tag: blume-20041209-statistics
166    Description:
167    
168    Added two simple but potentially useful statistics modules to SML/NJ Library.
169    (See CHANGES file there.)
170    
171    ----------------------------------------------------------------------
172    Name: Matthias Blume (blume (at) tti - c (dot) org)
173    Date: 2004/12/01 16:50:00 CST
174    Tag: blume-20041201-atom
175    Description:
176    
177    smlnj-lib:
178    
179      Added function HashString.hashString' for substrings.
180      Hand-inlined CharVector.foldl into HashString (for speed).
181      Modified implementation of structure Atom to avoid extracting
182      strings from substrings unless necessary.
183      (Also see CHANGES file for smlnj-lib.)
184    
185    ----------------------------------------------------------------------
186    Name: Matthias Blume (blume (at) tti - c (dot) org)
187    Date: 2004/11/24 22:15:00 CST
188    Tag: blume-20041124-cml
189    Description:
190    
191    Made sure CML compiles when Position = Int64.
192    
193    ----------------------------------------------------------------------
194    Name: Matthias Blume (blume (at) tti - c (dot) org)
195    Date: 2004/11/24 14:30:00 CST
196    Tag: blume-20041124-position
197    Description:
198    
199    The compiler can now be compiled in a mode that makes structure Position
200    equal to Int64.  The default, however, is unchanged (Position = Int31)
201    for the time being.
202    
203    To enable 64-bit positions, use the following procedure:
204    
205    1. Start sml
206    2. Autoload $smlnj/cmb.cm (if not already autoloaded)
207    3. Type
208          #set (CMB.symval "USE_64_BIT_POSITIONS") (SOME 1);
209    4. Run CMB.make() as usual.
210    
211    This is barely tested.  The only test so far was a little SML program
212    counting the number of characters in an 8-gigabyte file by
213    reading it character-by-character.  That test was successful.
214    
215    In support of 64-bit positions, a number of new functions have been
216    added to the runtime system.
217    
218    ----------------------------------------------------------------------
219    Name: Matthias Blume (blume (at) tti - c (dot) org)
220    Date: 2004/11/23 14:45:00 CST
221    Tag: blume-20041123-useFile
222    Description:
223    
224    Fixed a problem with unhelpful error messages related to problems with
225    .cm- or .sml files that appear as part of the sml command line.
226    
227    ----------------------------------------------------------------------
228    Name: Matthias Blume (blume (at) tti - c (dot) org)
229    Date: 2004/11/18 15:40:00 CST
230    Tag: Release_110_51
231    Description:
232    
233    New working version (110.51).  NEW BOOTFILES!
234    
235    ----------------------------------------------------------------------
236    Name: Matthias Blume (blume (at) tti - c (dot) org)
237    Date: 2004/11/18 15:35:00 CST
238    Tag: <none>
239    Description:
240    
241    Enabled dlopen and friends for FreeBSD (as recommended by Johannes 5
242    Joemann).
243    
244    ----------------------------------------------------------------------
245    Name: Allen Leung (leunga (at) reservoir (dot) com)
246    Date: 2004/11/17 16:05:21 EST 2004
247    Tag: leunga-20041117-mlrisc-live-kill
248    Description:
249    
250       Added support for MLTree constructs LIVE and KILL
251    to all the architectures.
252    
253    ----------------------------------------------------------------------
254    Name: Matthias Blume (blume (at) tti - c (dot) org)
255    Date: 2004/11/13 00:20:00 CST
256    Tag: blume-20041113-versiontool
257    Description:
258    
259    - Stripped down the versiontool: It now only handles the version number.
260      The date string is generated at bootstrap time (during makeml).
261    
262    - In a previous commit, fixed a minor issue with how polyequal is being
263      translated.  In particular, the code now "looks through" abstractions.
264      This results in slightly fewer polyEqual warnings and hopefully slightly
265      more efficient code.  Important examples for where this matters are
266      the new int64 and word64 types.
267    
268    ----------------------------------------------------------------------
269    Name: Matthias Blume (blume (at) tti - c (dot) org)
270    Date: 2004/11/12 00:30:00 CST
271    Tag: blume-20041112-int64
272    Description:
273    
274    Structure Int64 fully hooked in.  (The implementation is not very
275    efficient, though.)
276    
277    ----------------------------------------------------------------------
278    Name: Matthias Blume (blume (at) tti - c (dot) org)
279    Date: 2004/11/11 17:30:00 CST
280    Tag: blume-20041111-more64
281    Description:
282    
283    All the pieces of Word64 are now there, with the exception of the
284    conversions from and to LargeWord. (Eventually these need to be identities,
285    but for the time being they don't even make sense because LargeWord is
286    32-bit wide.)
287    
288    Also started to add similar support for Int64, but major pieces of that
289    are still missing.
290    
291    ----------------------------------------------------------------------
292    Name: Matthias Blume (blume (at) tti - c (dot) org)
293    Date: 2004/11/11 00:15:00 CST
294    Tag: blume-20041111-word64
295    Description:
296    
297    Structure Word64 is now (almost) complete, word literals and patterns
298    seem to work.  There are a few odd pieces missing.  In particular,
299    I didn't do the {from,to}LargeWord parts because LargeWord is still Word32
300    at the moment.
301    
302    Making Word64 official would mean that LargeWord becomes Word64.  But
303    this requires extreme care because most word-word conversions have to
304    go through LargeWord, so making a mistake means loss of efficiency or
305    worse.  Eventually there will be a solution similar to (but actually
306    simpler than) what I did with IntInf.
307    
308    ----------------------------------------------------------------------
309    Name: Matthias Blume (blume (at) tti - c (dot) org)
310    Date: 2004/11/10 18:12:00 CST
311    Tag: blume-20041110-64bit
312    Description:
313    
314    More 64-bit hacking (but still not even half-way there yet).
315    Also, some assorted improvements to the handling of 8-bit words.
316    
317    ----------------------------------------------------------------------
318    Name: Matthias Blume (blume (at) tti - c (dot) org)
319    Date: 2004/11/09 17:50:00 CST
320    Tag: <none>
321    Description:
322    
323    Started adding some infrastructure for supporting 64-bit int- and
324    word-types.  (Still in its very early stages.)
325    
326    ----------------------------------------------------------------------
327    Name: Matthias Blume (blume (at) tti - c (dot) org)
328    Date: 2004/10/28 10:45:00 CDT
329    Tag: Release_110_50
330    Description:
331    
332    New working version (110.50).  NEW BOOTFILES!
333    
334                 =====================
335    
336    Also:
337    
338      - Changend config/srcarchiveurl from a file just
339        containing the URL string into a file containing
340        shell script code.  The code has access to the $VERSION variable.
341      - Made corresponding changes to config/install.sh and config/unpack.
342      - Default contents of config/srcarchiveurl uses $VERSION and
343        normally does not have to be edited to reflect a version change.
344    
345      (As a result, a version change can be done by just editing
346       config/version, the rest is now automatic.)
347    
348    ----------------------------------------------------------------------
349    Name: Matthias Blume (blume (at) tti - c (dot) org)
350    Date: 2004/10/27 17:50:00 CDT
351    Tag: blume-20041027-btrace-msg
352    Description:
353    
354    BackTrace.monitor now also reports the source of the exception that
355    triggered the trace.
356    
357    ----------------------------------------------------------------------
358    Name: Matthias Blume (blume (at) tti - c (dot) org)
359    Date: 2004/10/27 17:20:00 CDT
360    Tag: blume-20041027-x86-c-calls
361    Description:
362    
363    This is the HISTORY entry for two earlier commits, both concerning
364    the x86 c-calls code in MLRISC:
365    
366      - added a missing LOAD in the code that deals with struct arguments
367      - made sure the caller does not add the wrong number of bytes to the
368        stack pointer after a call of a function returning a struct
369        (the callee already pops the implicit argument which points to
370         the space reserved for the result)
371    
372    ----------------------------------------------------------------------
373    Name: Allen Leung (leunga (at) reservoir (dot) com)
374    Date: 2004/10/24 14:00:00 EST
375    Tag: leunga-20041024-x86-gas-fucomip
376    Description:
377    
378       John discovered a bug in the syntax of fucomip.
379       The opcodes FU?COMIP? have been changed to
380    
381           fu?comip? %st(i), %st
382    
383    ----------------------------------------------------------------------
384    Name: Matthias Blume (blume (at) tti - c (dot) org)
385    Date: 2004/10/20 15:06:00 CDT
386    Tag: blume-20041020-standalone-backtrace
387    Description:
388    
389    Added a mechanism for getting back-trace information from standalone
390    programs.  Here is how it works:
391    
392       1. The part of the program from which you want to get backtrace
393          information (usually the whole program) should be wrapped with
394          BackTrace.monitor.  This is a (unit->'a)->'a function, and your
395          main program could be modified from something like
396    
397             fun main (pgm, args) = ...
398    
399         to
400    
401            fun main (pgm, args) = BackTrace.monitor (fn () => ...)
402    
403       2. To be able to access BackTrace.monitor, you have to add
404          library $smlnj-tdp/plugins.cm to the .cm file that contains your
405          main function.
406    
407       3. Remove all compiled code (i.e., all the .cm/ subdirectories that
408          CM might have created in the past for your project).
409    
410       4. Build the system using this command line:
411    
412             ml-build -Ctdp.instrument=true \$smlnj-tdp/back-trace.cm \
413                      myprog.cm MyProg.main myprog
414    
415          instead of the usual
416    
417             ml-build myprog.cm MyProg.main myprog
418    
419    I changed a library name:
420    
421       $/trace-debug-profile.cm --> $smlnj-tdp/plugins.cm
422    
423    New libraries:
424    
425       $smlnj-tdp/back-trace.cm
426          -- when loaded causes the back-trace plugin to be installed
427       $smlnj-tdp/coverage.cm
428          -- when loaded causes the coverage plugin to be installed
429    
430    ----------------------------------------------------------------------
431    Name: Matthias Blume (blume (at) tti - c (dot) org)
432    Date: 2004/10/18 16:45:00 CDT
433    Tag: blume-20041018-groupowner
434    Description:
435    
436    Added an "obsolete" warning for the "group owner" syntax to CM's parser.
437    
438    Eliminated group owner specs from .cm files throughout the source tree.
439    
440    ----------------------------------------------------------------------
441    Name: Matthias Blume (blume (at) tti - c (dot) org)
442    Date: 2004/10/15 15:45:00 CDT
443    Tag: blume-20041015-coverage
444    Description:
445    
446    * Test coverage tool added!
447    * Further reorganization of tracing-, debugging-, and profiling support:
448    
449        - moved original BTImp -- now called BackTrace -- into a separate
450          library called $/trace-debug-profile.cm
451        - eliminated all mentions of BTrace from SMLofNJ.Internals
452        - only the instrumentation mechanism is now left in the compiler proper
453        - BackTrace module is a plugin which is NOT plugged in by default
454        - Coverage module is another such plugin
455    
456    To get the benefits of any of these plugin modules, the code in
457    question must be compiled with tdp instrumentation turned on.  This
458    can be done by setting SMLofNJ.Internals.TDP.mode to true.
459    (The ref cell is also controlled via the -Ctdp.instrument=... switch.)
460    
461    Plugins are selected at link time.  (Pre-compiled instrumented code
462    can be re-loaded with different plugins in effect.)  When an
463    instrumented module is linked, whatever plugins are at that time
464    enabled will come into effect for that module.
465    
466    To enable the back-trace plugin, load library $/trace-debug-profile.cm
467    and invoke BackTrace.install() (e.g., from the interactive prompt).
468    To enable the coverage plugin, load the same library and invoke
469    Coverage.install().
470    
471    Back-traces are generated automatically on uncaught exceptions and
472    when the code in question explicitly invokes BackTrace.trigger().
473    
474    Coverage (and execution frequency-) information must be queried
475    explicitly by calling Coverage.not_covered and Coverage.hot_spots.
476    
477    ----------------------------------------------------------------------
478    Name: Matthias Blume (blume (at) tti - c (dot) org)
479    Date: 2004/10/14 17:40:00 CDT
480    Tag: blume-20041014-tdp-core
481    Description:
482    
483    Snapshot of a significant overhaul of how the trace/debug/profile support
484    is hooked into the system (specifically: Core and SMLofNJ.Internals).
485    
486    ----------------------------------------------------------------------
487    Name: Matthias Blume (blume (at) tti - c (dot) org)
488    Date: 2004/10/13 16:34:00 CDT
489    Tag: blume-20041013-tdp
490    Description:
491    
492    Some rationalization of names:
493    
494       structure BTrace -> structure TDPInstrument
495       etc.
496    
497    This is is preparation of using the original back-trace
498    instrumentation for other purposes.  "TDP" stands for
499    Trace/Debug/Profile.
500    
501    The control flag controlling whether instrumentation is on or off is now
502    registered under a different name, so instead of running sml as
503    
504     sml -Cinstrument.btrace-mode=true
505    
506    one has to say
507    
508     sml -Ctdp.instrument=true
509    
510    ----------------------------------------------------------------------
511    Name: Matthias Blume (blume (at) tti - c (dot) org)
512    Date: 2004/10/11 16:37:00 CDT
513    Tag: blume-20041011-regions
514    Description:
515    
516    Made some minor modifications to elabcore.sml to have source regions
517    be propagated more tightly -- resulting in better (i.e., smaller)
518    regions being reported in error- and debug messages.
519    
520    ----------------------------------------------------------------------
521    Name: Matthias Blume (blume (at) tti - c (dot) org)
522    Date: 2004/10/08 22:50:00 CDT
523    Tag: blume-20041008-cmkw
524    Description:
525    
526    Fixed handling of keywords in .cm files: After seeing "is" the lexer
527    treats subsequent occurrences of "group", "library", "source", "is",
528    "*", and "-" as ordinary identifiers rather than keywords.
529    
530    Most seriously, this fixes a problem with CM's "shell" tool.  The tool
531    is supposed to accept a tool argument called "source", but this did
532    not work because of the clash with the keyword.
533    
534    ----------------------------------------------------------------------
535    Name: Matthias Blume (blume (at) tti - c (dot) org)
536    Date: 2004/10/07 16:00:00 CDT
537    Tag: blume-20041007-cleanup
538    Description:
539    
540    Assorted cleanup work:
541    
542      - got rid of intstrmap in favor of using the library's
543        hash table implementation
544      - threw out most of the pathnames stuff, as it was not used anyway
545      - simplified tokentable implementation
546      - fixed some minor spelling errors
547    
548    ----------------------------------------------------------------------
549    Name: Matthias Blume (blume (at) tti - c (dot) org)
550    Date: 2004/10/06 15:15:15 CDT
551    Tag: blume-20041006-handler
552    Description:
553    
554    Cleaned up the absyn to reflect the invariant that HANDLE always
555    carries a FNexp as part of the type definition.  This eliminates some
556    superfluous sanity checks at runtime down the road.
557    
558    Some minor cleanup of the btrace code.
559    
560    ----------------------------------------------------------------------
561    Name: Matthias Blume (blume (at) tti - c (dot) org)
562    Date: 2004/10/01 10:20:30 CDT
563    Tag: blume-20041001-slave
564    Description:
565    
566    Added hack to make slave mode work in the presence of the version
567    tool.  (Still, since the master does two passes over the code for
568    CMB.make, the release number gets bumped twice when slaves are
569    attached.  I don't know if this is worth fixing...)
570    
571    ----------------------------------------------------------------------
572    Name: Matthias Blume (blume (at) tti - c (dot) org)
573    Date: 2004/09/30 10:55:00 CDT
574    Tag: blume-20040930-version
575    Description:
576    
577    * Moved the "version" magic into its own little library under
578      src/system/smlnj/internal.  This avoids expensive reconstruction of
579      a stable src/compiler/core.cm.
580    
581    * At the same time, structure CompilerVersion is now known as
582      structure SMLNJVersion.
583    
584    * Arranged for the version tool to NOT kick in when rebuilding the system
585      (makeml -rebuild, fixpt).  Otherwise one would never reach a fixpoint.
586      Also, loading the versiontool does not work when rebuilding the system
587      because CM is not properly initialized at that time.
588    
589    ----------------------------------------------------------------------
590    Name: Matthias Blume (blume (at) tti - c (dot) org)
591    Date: 2004/09/29 14:00:00 CDT
592    Tag: blume-20040929-autoversion
593    Description:
594    
595    Implemented some CM magic to have
596        file src/compiler/TopLevel/main/version.sml
597    generated automagically.
598    The version is taken from two files: config/version and config/release.
599    The first is expected to contain a two-part version number such as 110.49.
600    The second should contain a single number, but it may be missing.
601    
602    If the environment variable VERSIONTOOL_BUMP_RELEASE is defined at the
603    time the version tool is loaded (which is the first time you say CMB.make),
604    then the tool will increment the value stored in config/release every
605    time CMB.make is invoked.
606    
607    The binfile format is now insensitive to anything beyond the first
608    two components of a version number, so bumping the release does not render
609    binfiles incompatible.  Auto-bumping can be used to keep track of versions
610    during development without invalidating existing binfiles.
611    
612    In any case, every CMB.make updates the date information in version.sml.
613    (This is the date that is printed in the banner.)
614    
615    ----------------------------------------------------------------------
616    Name: Matthias Blume (blume (at) tti - c (dot) org)
617    Date: 2004/09/28 10:53:00 CDT
618    Tag: blume-20040928-controls
619    Description:
620    
621    Some cleanup of the controls code.
622    
623    ----------------------------------------------------------------------
624    Name: Matthias Blume (blume (at) tti - c (dot) org)
625    Date: 2004/09/27 22:08:00 CDT
626    Tag: blume-20040927-controls
627    Description:
628    
629    Added two pieces of functionality to the Controls interface:
630    
631    1.   val save'restore: 'a control -> unit -> unit
632    
633       grabs the current value of the control in stage 1 and restores it
634       in stage 2.
635    
636    2.   val set' : 'a control * 'a -> unit -> unit
637    
638       stores the given value into the control in stage 2 (i.e., delayed)
639       but does all error checking in stage 1.
640       (This is for string controls that need to do parse their argument --
641        something that might fail.  In some cases, notably in CM, one
642        already knows the intended argument but wants to delay the actual
643        assignment until a time when error recovery would be more difficult.)
644    
645    Changed the handling of controls in tool arguments to classes "sml" and
646    "lazysml":
647       - use Controls.save'restore as a more robust way of restoring the
648         old value (in particular: without having to re-parse the string)
649       - use controls to handle the "overload" keyword in the init group
650         (I believe this change actually fixes a long-standing obscure bug.)
651    
652    ----------------------------------------------------------------------
653    Name: Matthias Blume (blume (at) tti - c (dot) org)
654    Date: 2004/09/27 17:00:00 CDT
655    Tag: blume-20040927-lazysml
656    Description:
657    
658    Added a new tool class called "lazysml" to CM's tool chest.  The only
659    difference to "sml" is that compilation is done with Control.lazysml
660    set to true.  A source of class "lazysml" is automatically recognized
661    by a file name suffix of ".lml".
662    
663    In addition to the above feature, the original class "sml" now also
664    supports a tool argument "lazy" which has the same effect.  As a
665    result, the following three lines are equivalent:
666    
667        foo.sml : lazysml
668        foo.sml : sml (lazy)
669        foo.sml (lazy)
670    
671    The setting goes into effect both during parsing and during
672    compilation.  The original setting is restored right after parsing and
673    after compilation, respectively.
674    
675    In addition to all the above, there is also a general mechanism to set
676    ANY of the "controls" that are available at the command line via
677    "-C..." on a per-sml-file basis.  The same rules that apply for "lazy"
678    apply as well. (In fact, "lazy" is implemented as a special case of
679    the general mechanism.)
680    
681    The .cm file syntax uses a new keyword tool argument called "with".
682    There are several ways of indicating the desired settings:
683    
684        foo.sml (with:parser.quotations=true)
685        foo.sml (with:(name:parser.quotations value:true))
686        foo.sml (with:(name:name1 value:value1 name:name2 value:value2 ...))
687        foo.sml (with:(name1=value1 name2=value2 ...))
688        foo.sml (with:(name1=value1 name:name2 value:value2 name3=value3 ...))
689    
690        etc.
691    
692    Another possible abbreviation is to leave out the =v or value:v part
693    if the name refers to a boolean control (in which case the value is
694    taken to be true).  Thus, one could get lazy sml also by saying:
695    
696        foo.sml (with:parser.lazy-keyword=true)
697        foo.sml (with:parser.lazy-keyword)
698        foo.sml (with:(name:parser.lazy-keyword value:true))
699        foo.sml (with:(name:parser.lazy-keyword))
700    
701    ----------------------------------------------------------------------
702    Name: Matthias Blume (blume (at) tti - c (dot) org)
703    Date: 2004/09/24 16:22:00 CDT
704    Tag: blume-20040924-ppc-long-branch
705    Description:
706    
707    Turned message about "emiting long form of branch" off by default.
708    Added a control flag to turn it back on when desired.
709    
710    ----------------------------------------------------------------------
711    Name: Matthias Blume (blume (at) tti - c (dot) org)
712    Date: 2004/09/24 16:05:00 CDT
713    Tag: blume-20040924-rounding
714    Description:
715    
716    Applied patch for setting rounding modes under Mac OS X.  Thanks to
717    Melissa O'Neill for providing the code!
718    
719    ----------------------------------------------------------------------
720    Name: Matthias Blume (blume (at) tti - c (dot) org)
721    Date: 2004/09/23 17:30:00 CDT
722    Tag: blume-20040923-envvars
723    Description:
724    
725    1. Changed definition of type ControlRegistry.registry_tree to
726       include control_info (i.e., the name of the controlling environment
727       variable).
728    
729    2. Added command-line flags -e and -E to print the names of environment
730       variables that can be used to control internal settings.
731       (This uses the new API mentioned in 1.)
732    
733    ----------------------------------------------------------------------
734    Name: Matthias Blume (blume (at) tti - c (dot) org)
735    Date: 2004/09/13 16:50:00 CDT
736    Tag: Release_110_49
737    Description:
738    
739    New working version (110.49).  NEW BOOTFILES!
740    
741    ----------------------------------------------------------------------
742    Name: Matthias Blume
743    Date: 2004/09/13 16:20:00 CDT
744    Tag: blume-20040913-config-mlrisc
745    Description:
746    
747    Put target "mlrisc" back into the default list.
748    (There is no harm in having it, and some users have expressed their
749    wish to have "mlrisc" included by default.)
750    
751    ----------------------------------------------------------------------
752    Name: John Reppy
753    Date: 2004/09/13
754    Tag: jhr-20040913-signals
755    Description:
756    
757    Fixed the signal masking code to properly nest mask/unmask operations
758    on a per-signal basis.
759    
760    ----------------------------------------------------------------------
761    Name: Matthias Blume (blume (at) tti - c (dot) org)
762    Date: 2004/09/08 13:20:00 CDT
763    Tag: blume-20040908-heap-magic
764    Description:
765    
766    Bumped the heap macig number to 0x09082004 to account for the changed
767    layout of the ML frame under MacOS X.
768    
769    ----------------------------------------------------------------------
770    Name: Allen Leung (leunga (at) reservoir (dot) com)
771    Date: 2004/09/03 11:26:00 EST
772    Tag: leunga-20040903-cygwin-install
773    Description:
774    
775       Added a patch to _arch-n-opsys to enable the Cygwin runtime.
776    The Cygwin runtime is turned on by setting the environment
777    variable SMLNJ_CYGWIN_RUNTIME to 1.
778    
779    ----------------------------------------------------------------------
780    Name: Matthias Blume (blume (at) tti - c (dot) org)
781    Date: 2004/08/31 17:15:00 CDT
782    Tag: blume-20040831-core
783    Description:
784    
785    Added some exports to src/compiler/core.cm upon request by J. Joemann.
786    
787    ----------------------------------------------------------------------
788    Name: Matthias Blume (blume (at) tti - c (dot) org)
789    Date: 2004/08/30 17:55:00 CDT
790    Tag: blume-20040830-installer
791    Description:
792    
793    Upon request by Johannes Joemann:
794    
795    - improved ML code of installer to fall back to coping when renaming
796      fails (i.e., when source and target are on different file systems);
797      the code compiles but has yet to be tested in anger
798    - removed mlrisc from list of default targets (config/targets)
799    
800    ----------------------------------------------------------------------
801    Name: Matthias Blume (blume (at) tti - c (dot) org)
802    Date: 2004/08/27 17:20:00 CDT
803    Tag: blume-20040827-ptreql
804    Description:
805    
806    Added ptreql primop to structure InlineT (upon request from Larry
807    Paulson).
808    
809    ----------------------------------------------------------------------
810    Name: Allen Leung (leunga (at) reservoir (dot) com)
811    Date: 2004/08/15 21:21:00 EST
812    Tag: leunga-110_48-udgraph
813    Description:
814    
815    Another bug fix from Carl Hauser:
816    
817    diff /net/niflab/smlnj48/src/MLRISC/graphs/udgraph.sml udgraph.sml
818    > 48c48
819    > <              | rmv((e as (k,_))::es,L) = rmv(es,if k = i then es else
820    > e::L)
821    > ---
822    > >              | rmv((e as (k,_))::es,L) = rmv(es,if k = i then L else e::L)
823    > Without this, any deletion of an edge in an undirected graph does severe
824    > violence to the graph.
825    
826    ----------------------------------------------------------------------
827    Name: Allen Leung (leunga (at) reservoir (dot) com)
828    Date: 2004/08/10 23:35:00 EST
829    Tag: leunga-110_48-ppc
830    Description:
831    
832       The IBM/MacOS syntax switch on PPC was incorrectly swapped.
833    
834    ----------------------------------------------------------------------
835    Name: Matthias Blume (blume (at) tti - c (dot) org)
836    Date: 2004/08/10 12:00:00 CDT
837    Tag: Release_110_48
838    Description:
839    
840    New working version (110.48).  NEW BOOTFILES!
841    
842    ----------------------------------------------------------------------
843    Name: Allen Leung (leunga (at) reservoir (dot) com)
844    Date: 2004/08/09 12:21:00 EST
845    Tag: leunga-110_47-dijsktra
846    Description:
847    
848    Bug fix from Carl Hauser:
849    
850    single_source_shortest_paths in dijkstra.sml was observed to get wrong
851    answers (by comparing to single_source_shortest_paths in bellman-ford.sml).
852    
853    The problem is that following the expression A.update(dist,s,Num.zero)
854    it is necessary to update the priority queue using Q.decreaseWeight(Q,s).
855    
856    ----------------------------------------------------------------------
857    Name: Matthias Blume (blume (at) tti - c (dot) org)
858    Date: 2004/08/06 18:10:00 CDT
859    Tag: blume-20040806-cmdline
860    Description:
861    
862    Fiddled with handling of command-line options:
863    
864      * sml now quits after processing the command line
865        if -H, -S, -h<n>, or -s<n> appears as the last
866        command-line argument
867      * a new option -q terminates the session when encountered on
868        the command line; subsequent arguments will be ignored
869      * bug fixes: short (erroneous) arguments are no longer ignored
870        completely
871    
872    ----------------------------------------------------------------------
873    Name: Allen Leung (leunga (at) reservoir (dot) com)
874    Date: 2004/08/04 18:17:00 EST
875    Tag: leunga-110_47-ppc-ibm-asm
876    Description:
877    
878      - Added minimal IBM assembly syntax support for PowerPC.
879    
880      - Cygwin: manually changed the file cygwin.def.  Some exported symbols have
881        been altered in the runtime.  We need an automatic way to keep the file
882        in sync.
883    
884    ----------------------------------------------------------------------
885    Name: Matthias Blume (blume (at) tti - c (dot) org)
886    Date: 2004/08/04 14:00:00 CDT
887    Tag: Release_110_47
888    Description:
889    
890    New working version (110.47).  NEW BOOTFILES!
891    
892    ----------------------------------------------------------------------
893    Name: Matthias Blume (blume (at) tti - c (dot) org)
894    Date: 2004/08/03 14:25:00 CDT
895    Tag: blume-20040803-callingconv
896    Description:
897    
898    Added low-level support for choosing C calling conventions by
899    twiddling the type of rawccall.  (See
900    src/compiler/Semant/types/cproto.sml for details.)
901    
902    ----------------------------------------------------------------------
903    Name: Matthias Blume (blume (at) tti - c (dot) org)
904    Date: 2004/08/02 15:55:00 CDT
905    Tag: blume-20040802-backout
906    Description:
907    
908    Backed out of change to win32-filesys.c.  The earlier patch to
909    get_file_time caused CM to produce files with the wrong time stamp.
910    
911    ----------------------------------------------------------------------
912    Name: Matthias Blume (blume (at) tti - c (dot) org)
913    Date: 2004/08/02 14:45:00 CDT
914    Tag: blume-20040802-nlffi-win32
915    Description:
916    
917    Added NLFFI support for Win32, adapted from a patch provided by David
918    Hansel.  This is currently completely untested.  Also, the issue
919    concerning stdcall vs. ccall is still unresolved.
920    
921    ----------------------------------------------------------------------
922    Name: Matthias Blume (blume (at) tti - c (dot) org)
923    Date: 2004/07/30 17:55:00 CDT
924    Tag: blume-20040730-various
925    Description:
926    
927    Gearing up towards 110.47...
928    
929    - various minor bugfixes to ml-nlffigen
930    - a beginning of a manual for nlffi
931    
932    - eliminated 'export name=value' in config/install.sh as this does
933      not work with certain versions of /bin/sh
934      (Thanks to David King at Motorola for catching this.)
935    
936    - several bugfixes provided or suggested by David Hansel at Reactive Systems:
937      - added a test for tm==NULL to gmtime.c and localtime.c
938      - applied patch for incorrect GetFileTime under win32
939      - toSeconds -> toMilliseconds in Win32/win32-process.sml
940    
941    ----------------------------------------------------------------------
942    Name: Matthias Blume (blume (at) tti - c (dot) org)
943    Date: 2004/07/21 18:20:00 CDT
944    Tag: blume-20040721-nlffigen
945    Description:
946    
947    - Fixed minor issue in ml-nlffigen: Now generate structure T_foo
948      for a typedef to an incomplete type, but leave out the "typ" member.
949      (This is just for consistency.)
950    - Started to produce what is supposed to become better (i.e., comprehensive)
951      documentation of what ml-nlffigen does and produces.
952    
953    ----------------------------------------------------------------------
954    Name: Matthias Blume (blume (at) tti - c (dot) org)
955    Date: 2004/07/14 16:25:00 CDT
956    Tag: blume-20040714-union
957    Description:
958    
959    Added C_UNION to c-calls/c-types.sml and updated the machinery
960    (ml-nlffigen, cproto.sml) that conveys C function interface
961    information to the code generator.
962    
963    However, the actual architecture-specific implementation of function
964    arguments and results that are C unions is still not implemented.
965    
966    ----------------------------------------------------------------------
967    Name: Allen Leung (leunga (at) reservoir (dot) com)
968    Date: 2004/07/14 14:38:00 EST
969    Tag: leunga-110_46_1-ppc-lwzu
970    Description:
971    
972        Added these instructions to the PowerPC architecture:
973        LBZU(X), LHZU(X), LWZU(X),
974        STWU(X), STFDU, STFSU
975    
976        etc...
977    
978        Note: I haven't added their instruction encoding into the description.
979    
980    ----------------------------------------------------------------------
981    Name: Allen Leung (leunga (at) reservoir (dot) com)
982    Date: 2004/07/13 15:04:00 EST
983    Tag: leunga-110_46_1-ppc-lwarx
984    Description:
985    
986       Added the two instructions LWARX and STWCX to the PowerPC
987    instruction set.
988    
989       A (untested) rewrite of loop-structure.sml.  The old version
990    is completely broken.
991    
992    ----------------------------------------------------------------------
993    Name: Matthias Blume (blume (at) tti - c (dot) org)
994    Date: 2004/07/13 13:50:00 CDT
995    Tag: blume-20040713-nlffi
996    Description:
997    
998    - use paramAlloc to report c-calls with too many arguments
999      (for PPC version where parameter area is pre-allocated)
1000    - added ccall_maxargspace to machspec (to implement the above)
1001    - made "make" commend in CM's "make" tool configurable
1002    - added option (default: on) for passing the name of the SML/NJ's "bin"
1003      directory to "make"; the call looks like this:
1004    
1005         make <options> SMLNJ_BINDIR=<dir> <target>
1006    
1007      This can be used by the Makefile to, e.g., pick the "right" version
1008      of ml-nlffigen.
1009    - minor code tweaks
1010    
1011    ----------------------------------------------------------------------
1012    Name: Matthias Blume (blume (at) tti - c (dot) org)
1013    Date: 2004/07/12 22:50:00 CDT
1014    Tag: blume-110_46_1-macosx-nlffi
1015    Description:
1016    
1017    NLFFI under Mac OS X now working (sort of).  This is largely untested,
1018    though.
1019    
1020    Note:  1. You have to make a new, clean build of the runtime system.
1021           2. There are new BOOTFILES, you have to use them!
1022              (Doing the bootstrap process yourself would be *very* painful!
1023               If you absolutely have to do it, build the system under
1024               a different architecture and then cross-compile.)
1025    
1026    Version bumped to 110.46.1 to account for runtime data format changes.
1027    
1028    ----------------------------------------------------------------------
1029    Name: Matthias Blume (blume (at) tti - c (dot) org)
1030    Date: 2004/06/18 14:30:00 CDT
1031    Tag: blume-20040618-unix
1032    Description:
1033    
1034    Changed the implementation of structure Unix so that the same stream
1035    is returned every time one of the {text,bin}{In,Out}streamOf functions
1036    is invoked on the same proc.  This is not what the spec currently
1037    says -- although IMO it arguably should.  (See discussion below.)
1038    
1039    ----------------------------------------------------------------------
1040    Name: Matthias Blume (blume (at) tti - c (dot) org)
1041    Date: 2004/06/17 18:15:00 CDT
1042    Tag: Release_110_46
1043    Description:
1044    
1045    New working version (110.46).  NEW BOOTFILES!
1046    
1047    ----------------------------------------------------------------------
1048    Name: Matthias Blume (blume (at) tti - c (dot) org)
1049    Date: 2004/06/17 17:20:00 CDT
1050    Tag: blume-20040617-timer-unix
1051    Description:
1052    
1053    Changed the interface of structures Timer and Unix to match the most
1054    recent Basis spec.
1055    
1056    In the case of Unix there still seems to be an open/weird issue:
1057    
1058       The {text,bin}{In,Out}streamOf functions are supposed to create
1059       fresh streams whenever they are called -- as opposed to have them
1060       return the same stream every time.  This design is supposed to
1061       prevent space leaks caused by proc values hanging on to streams.
1062    
1063       The reap function, on the other hand, is supposed to close the
1064       streams.  This cannot be done without having a handle on the
1065       stream in proc after all...
1066    
1067    I took the liberty to implement the following stopgap solution:
1068    
1069      The proc value hangs on to the most recently created stream(s).
1070      Reap closes those.  If either or both of the two streams hadn't
1071      been created at all yet, then reap will close the corresponding
1072      file descriptors directly.
1073    
1074    PS: I don't understand the original space leak argument anymore.  If
1075    a proc hangs on to the imperative stream, then I/O operations on those
1076    will advance the state of the cached stream and avoid the space leak.
1077    
1078    ----------------------------------------------------------------------
1079    Name: Matthias Blume (blume (at) tti - c (dot) org)
1080    Date: 2004/05/28 16:45:00 CDT
1081    Tag: blume-20040528-basis
1082    Description:
1083    
1084    Added signature PACK_REAL and exported functor PrimIO.
1085    
1086    ----------------------------------------------------------------------
1087    Name: Matthias Blume (blume (at) tti - c (dot) org)
1088    Date: 2004/05/25 16:00:00 CDT
1089    Tag: blume-20040525-group-owner
1090    Description:
1091    
1092    CM now ignores (but still accepts) the "owner" information in group
1093    descriptions.  The owner of a group is its next enclosing
1094    library. Each group must have a unique owner.  (There is a virtual
1095    "toplevel" library that owns groups which are not nested within a real
1096    library.)  Previously, each group had to explicitly declare its owner,
1097    and CM would check that such a declaration is correct.  The new scheme
1098    is to have CM check that for each group there is precisely one owning
1099    library.
1100    
1101    The advantage of the new scheme is that the programmer no longer needs
1102    to maintain the somewhat annoying owner information.  The downside is
1103    that CM cannot enforce the ownership rule across multiple runs of
1104    CM.make.  Fortunately, enclosing the same group in two different
1105    libraries A and B which are not part of the same program does not
1106    cause real problems.
1107    
1108    ----------------------------------------------------------------------
1109    Name: Matthias Blume (blume (at) tti - c (dot) org)
1110    Date: 2004/05/20 16:00:00 CDT
1111    Tag: blume-20040520-win32
1112    Description:
1113    
1114    Made the win32 version work again.  (Strangely, a misplaced comma had
1115    slipped into win32-process.c which prevented the runtime from being
1116    compiled correctly.)
1117    
1118    Also, included a minor addition to ml-build.bat analogous to what was
1119    done in blume-20040519-ml-build.
1120    
1121    ----------------------------------------------------------------------
1122    Name: Matthias Blume (blume (at) tti - c (dot) org)
1123    Date: 2004/05/19 22:10:00 CDT
1124    Tag: blume-20040519-ml-build
1125    Description:
1126    
1127    Arranged for ml-build to clean up after itself a little bit better.
1128    The script generates a temporary SML source file and compiles it using
1129    CM, so CM generates metadata (GUID, SKEL, objectfile) for it.  It now
1130    gets rid of those at the end, so they don't accumulate under .cm.
1131    
1132    This required a minor change to install.sh because the name of the
1133    metadata directory (default: .cm) is actually configurable at
1134    installation time.
1135    
1136    ----------------------------------------------------------------------
1137    Name: Matthias Blume (blume (at) tti - c (dot) org)
1138    Date: 2004/05/18 15:50:00 CDT
1139    Tag: blume-20040518-mkreader
1140    Description:
1141    
1142    Added Posix.IO.mk{Bin,Text}{Reader,Writer} by lifting their respective
1143    implementations from internal modules PosixBinPrimIO and PosixTextPrimIO.
1144    
1145    ----------------------------------------------------------------------
1146    Name: Matthias Blume (blume (at) tti - c (dot) org)
1147    Date: 2004/05/11 14:35:00 CDT
1148    Tag: blume-20040511-win32sock
1149    Description:
1150    
1151    Added previously missing support for many socket-related functions
1152    under win32.  Thanks to David Hansel <hansel@reactive-systems.com>
1153    for the voluminous patch!
1154    
1155    (I have not tested this patch under win32 yet.)
1156    
1157    Here is David's e-mail:
1158    
1159    Hi,
1160    
1161    Attached to this email you find a diff against sml/nj 110.45
1162    that will enable socket support under Windows.
1163    
1164    To apply the patch (using unix or cygwin)
1165    1) gunzip runtime.diff.gz
1166    2) "cd" into "src/runtime" in the source tree of a fresh
1167       110.45 installation.
1168    3) patch -p 1 < [your/path/to]runtime.diff
1169    
1170    The code compiles fine but has NOT yet been extensively tested.
1171    I only ran a few tests for basic socket client functionality
1172    (which worked fine).  Especially the functions that use ioctl
1173    are not tested at all and might not work (see below).
1174    
1175    I implemented this since we want to move to a newer version of sml/nj
1176    but need socket support in order to use it.  This is the first time I
1177    even had a look at the sml/nj source,  so please review my changes
1178    before making this part of the distribution!  Here are a few issues
1179    that I think might be better for someone to solve who is more
1180    familiar with the sml/nj source (and socket programming):
1181    
1182    - getnetbyaddr.c and getnetbyname.c will raise a "not implemented"
1183      exception since I could not figure out what the windows equivalent
1184      of these functions is
1185    
1186    - In sockets-osdep.h there are a some #include statements that are
1187      only used in a few files that include sockets-osdep.h
1188    
1189    - In smlnj-sock-lib.c, function init_fn() calls WSAStartup() but
1190      does not process its return value since I don't know how to
1191      report an error upwards.
1192    
1193    - It would probably be good to have a call to WSACleanup() when
1194      the library is unloaded (if there is such a possibility).
1195      Otherwise I think Windows will take care of this automatically
1196      when the process finishes.
1197    
1198    - I used ioctlsocket() as a replacement for ioctl() but I have
1199      no idea if that is actually the proper replacement on Windows.
1200    
1201    - All these issues are marked in the code by "FIXME" comments.
1202    
1203    We use sml/nj extensively in our products and are quite happy
1204    with it.  I hope this contribution will help you.
1205    
1206    Keep up the good work!
1207    
1208    David
1209    
1210    ----------------------------------------------------------------------
1211    Name: Matthias Blume (blume (at) tti - c (dot) org)
1212    Date: 2004/05/11 14:20:00 CDT
1213    Tag: blume-20040511-installml
1214    Description:
1215    
1216    Fixed two bugs in installml script.  (Thanks to Vesa A. Norrman for
1217    the patch.)
1218    
1219    ----------------------------------------------------------------------
1220    Name: Matthias Blume (blume (at) tti - c (dot) org)
1221    Date: 2004/05/11 14:05:00 CDT
1222    Tag: blume-20040511-nlffi-netbsd
1223    Description:
1224    
1225    Added support for nlffi under netbsd.  (Thanks to Vesa A. Norrman for
1226    the patch.)
1227    
1228    ----------------------------------------------------------------------
1229    Name: Matthias Blume (blume (at) tti - c (dot) org)
1230    Date: 2004/05/11 12:05:00 CDT
1231    Tag: blume-20040511-exports
1232    Description:
1233    
1234    As per request by Adam Chlipala <adam@hcoop.net>, extended various
1235    export lists in compiler-related .cm-files.
1236    
1237    ----------------------------------------------------------------------
1238    Name: Matthias Blume (blume (at) tti - c (dot) org)
1239    Date: 2004/05/11 11:35:00 CDT
1240    Tag: blume-20040511-allsource
1241    Description:
1242    
1243    The installer now honors the "src-smlnj" target again, although its meaning
1244    has changed from "all sources required for the compiler" to "all sources
1245    the installer knows about".  In other words, if you enable "src-smlnj"
1246    in the "targets" file, then the installer will pull in sources for
1247    everything.  (Notice that this refers to source code only.  Compiled
1248    code is still only installed for modules that were requested explicitly
1249    or which are required for other modules that were requested explicitly.)
1250    
1251    ----------------------------------------------------------------------
1252    Name: Matthias Blume (blume (at) tti - c (dot) org)
1253    Date: 2004/04/23 17:40:00 CDT
1254    Tag: blume-20040423-ieee-scan
1255    Description:
1256    
1257    Fixed IEEEReal.scan (and .fromString) so that if there is an overflow
1258    in the exponent calculation we get INF or ZERO (depending on the mantissa
1259    and the sign of the exponent).
1260    
1261    ----------------------------------------------------------------------
1262    Name: Matthias Blume (blume (at) tti - c (dot) org)
1263  Date: 2004/04/23 10:40:00 CDT  Date: 2004/04/23 10:40:00 CDT
1264  Tag: blume-20040423-ml-build  Tag: blume-20040423-ml-build
1265  Description:  Description:

Legend:
Removed from v.1480  
changed lines
  Added in v.1750

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