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

# SCM Repository

[smlnj] Annotation of /sml/trunk/NOTES/HISTORY
 [smlnj] / sml / trunk / NOTES / HISTORY

# Annotation of /sml/trunk/NOTES/HISTORY

Revision 2358 - (view) (download)

 1 : blume 2237 This is the HISTORY file for the SML/NJ repository. 2 : dbm 570 3 : An entry should be made for _every_ commit to the repository. 4 : The entries in this file will be used when creating the README 5 : for new versions, so keep that in mind when writing the 6 : description. 7 : 8 : The form of an entry should be: 9 : 10 : mblume 1931 11 : Name: Your Name (web page or e-mail) 12 : blume 2155 Date: yyyy/mm/dd hh:mm:ss 13 : mblume 1931 Tag: cvs-tag-for-this-change 14 : mblume 1480 Description: 15 : 16 : ---------------------------------------------------------------------- 17 : jhr 2358 Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 18 : Date: 2007/03/19 19 : Description: 20 : 21 : Fixed a number of inconsistencies between the Posix.TTY structure 22 : and the Basis specification. Thanks to Adam Chilpala. 23 : 24 : ---------------------------------------------------------------------- 25 : mrainey 2345 Name: Mike Rainey (http://www.cs.uchicago.edu/~mrainey) 26 : Date: 2007/02/26 27 : Description: 28 : 29 : Added preliminary support in MLRISC for Staged Allocation, a technique 30 : for specifying calling conventions (see 31 : http://www.eecs.harvard.edu/~nr/pubs/staged-abstract.html). 32 : Initially, we plan to use this code to generate C calls for the AMD64. 33 : 34 : The staged allocation code base resides in MLRISC/staged-allocation, 35 : and specialized calling conventions go in MLRISC/ARCH/staged-allocation. 36 : 37 : ---------------------------------------------------------------------- 38 : jhr 2342 Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 39 : Date: 2007/02/20 40 : Description: 41 : 42 : Bug fix: when SaveCState was called with two values to save, a subsequent 43 : GC could cause the RestoreCState to fail because the saved state had been 44 : promoted to tagless pair. 45 : 46 : ---------------------------------------------------------------------- 47 : leunga 2340 Name: Allen Leung (leunga (at) reservoir (dot) com) 48 : Date: 2007/02/20 19:08:00 EST 49 : Description: 50 : 51 : Bug triggered by: 52 : 53 : val a1 = Word8Array.array(a1, 0w0); 54 : val _ = Word8Array.update(a1, 0, 0w128); 55 : 56 : x86MCEmitter crashed when the immediate operand to MOVB was outside 57 : of the range -128 ... 127. I've changed the code so that the range 58 : check is disabled. Only the low order 8 bits of the immediate operand 59 : jhr 2342 are now significant. 60 : leunga 2340 61 : 62 : ---------------------------------------------------------------------- 63 : blume 2304 Name: Matthias Blume (http://www.tti-c.org/blume/) 64 : blume 2336 Date: 2007/02/15 09:20:00 CST 65 : Description: 66 : 67 : Eliminated any mention of lexgen. (Lexgen was an early precursor 68 : to ml-ulex.) 69 : 70 : You should update your admin directory, so the shell scripts for 71 : maintaining your local copy of the repository reflect this change. 72 : 73 : ---------------------------------------------------------------------- 74 : Name: Matthias Blume (http://www.tti-c.org/blume/) 75 : blume 2333 Date: 2007/02/14 15:45:00 CST 76 : Description: 77 : 78 : Fixed bug in CM's parallel make facility that failed to have 79 : the master re-link modules after letting slaves compile them. 80 : 81 : ---------------------------------------------------------------------- 82 : Name: Matthias Blume (http://www.tti-c.org/blume/) 83 : blume 2331 Date: 2007/02/12 15:10:00 CST 84 : Description: 85 : 86 : Fixed typo in ml-build script that prevented library anchors 87 : from being registered. 88 : 89 : ---------------------------------------------------------------------- 90 : Name: Matthias Blume (http://www.tti-c.org/blume/) 91 : blume 2304 Date: 2007/02/02 15:20:00 CST 92 : Tag: release-110.62 93 : Description: 94 : 95 : New working release (110.62). NEW BOOTFILES! 96 : 97 : ---------------------------------------------------------------------- 98 : adrassi 2296 Name: Aaron Turon (http://www.cs.uchicago.edu/~adrassi) 99 : Date: 2007/01/31 100 : Description: 101 : 102 : Brought ml-lpt manual up-to-date with the code. Many minor 103 : improvements to the tools, and a few minor bugfixes. Prepared 104 : ml-lpt-lib for integration with new UTF8 structure. Changed 105 : the interface for creating streams in ml-ulex (we now support 106 : stream creation from several kinds of sources). Overall, the 107 : tools are now quite stable, and their interfaces are unlikely to 108 : change in a way that would break compatibility. More work, 109 : however, is needed in the documentation. 110 : 111 : ---------------------------------------------------------------------- 112 : blume 2277 Name: Matthias Blume (http://www.tti-c.org/blume/) 113 : blume 2298 Date: 2007/02/01 10:05:00 CST 114 : Description: 115 : 116 : Implemented library installer. Moved CM plugin code for 117 : ml-burg, ml-lex, and ml-yacc out of CM source tree and into 118 : their respective trees. Implemented CM plugin for ml-ulex 119 : and ml-antlr. Used library installer for ml-burg, ml-ulex, 120 : and ml-antlr. 121 : 122 : For ml-yacc and ml-lex we continue to have permanently "plugged-in" 123 : CM tools. (It turns out to be too messy to do otherwise because 124 : there is too much code that during installation relies on the presence 125 : of these tools -- resulting in a tricky ordering problem.) 126 : 127 : ---------------------------------------------------------------------- 128 : Name: Matthias Blume (http://www.tti-c.org/blume/) 129 : blume 2277 Date: 2007/01/30 11:05:00 CST 130 : Description: 131 : 132 : Added SMLofNJ.shiftArgs which is like a shell's "shift" command. 133 : Modified CM's startup code to use shiftArgs as it processes 134 : command line arguments. This way, the init code in each .sml-file 135 : or library that is mentioned at the top level will see only 136 : those arguments that have not yet been processed at this point. 137 : In other words, the init code can "seize control" and process the 138 : remaining command line. 139 : 140 : ---------------------------------------------------------------------- 141 : jhr 2269 Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 142 : jhr 2358 Date: 2007/01/30 143 : Description: 144 : 145 : Added fromList function to the ORD_SET interface and lookup to the 146 : ORD_MAP interface. See the SML/NJ Library CHANGES file for details. 147 : 148 : ---------------------------------------------------------------------- 149 : Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 150 : jhr 2269 Date: 2007/01/28 151 : Description: 152 : 153 : Added the UTF8 structure and signature from the Moby compiler to 154 : the SML/NJ library (and the CML library). These modules will replace 155 : the version in the ml-lpt-lib. 156 : 157 : ---------------------------------------------------------------------- 158 : blume 2237 Name: Matthias Blume (http://www.tti-c.org/blume/) 159 : blume 2267 Date: 2007/01/26 15:10:00 CST 160 : Description: 161 : 162 : Added entries to handle ml-lpt-lib.cm in installer. 163 : 164 : ---------------------------------------------------------------------- 165 : Name: Matthias Blume (http://www.tti-c.org/blume/) 166 : blume 2259 Date: 2006/12/15 11:10:00 CST 167 : blume 2237 Tag: release-110.61 168 : Description: 169 : 170 : New working release (110.61). NEW BOOTFILES! 171 : 172 : blume 2259 This supersedes the pre-brown-paper-bug release (see below). 173 : 174 : blume 2237 ---------------------------------------------------------------------- 175 : blume 2259 Name: Matthias Blume (http://www.tti-c.org/blume/) 176 : Date: 2006/12/15 11:00:00 CST 177 : Description: 178 : 179 : Fixed brown-paper-bag bug with CM's pathname handling, which made 180 : installation fail under Win32. 181 : 182 : ---------------------------------------------------------------------- 183 : Name: Matthias Blume (http://www.tti-c.org/blume/) 184 : Date: 2006/12/14 12:00:00 CST 185 : Description: 186 : 187 : Obsolete! 188 : 189 : [New working release (110.61). NEW BOOTFILES!] 190 : 191 : ---------------------------------------------------------------------- 192 : jhr 2234 Name: John Reppy (http://cs.uchicago.edu/~jhr) 193 : Date: 2006/14/06 09:50:00 CST 194 : Description: 195 : 196 : Fixed the code in runtime/c-libs/posix-tty/{tcgetattr,tcsetattr}.c to 197 : get the c_cc termios data copied correctly. Also moved the allocation 198 : of the string to avoid problems if it caused a GC. 199 : 200 : Thanks to Timothy Bourke for the bug report and fix. 201 : 202 : ---------------------------------------------------------------------- 203 : blume 2232 Name: Matthias Blume (http://www.tti-c.org/blume) 204 : Date: 2006/12/08 09:50:00 CST 205 : Description: 206 : 207 : Added code to CM's "standard shell tool" implementation which 208 : causes it to tolerate (with a warning) the situation where the shell 209 : command fails (e.g., due to the shell command's non-existence) 210 : as long as all target files exist. 211 : 212 : This makes it possible to, e.g., build ml-yacc from sources even if 213 : svn checkout messed up the time stamps on files in such a way that 214 : yacc.grm is younger than yacc.grm.sml or yacc.grm.sig. (Ml-yacc would 215 : be needed to re-process yacc.grm, but obviously it might not yet be 216 : available at that time.) 217 : 218 : ---------------------------------------------------------------------- 219 : jhr 2228 Name: John Reppy (http://cs.uchicago.edu/~jhr) 220 : Date: 2006/12/06 12:06:00 CST 221 : Description: 222 : 223 : Fixed the types of recvVecFrom, recvVecFrom', recvVecFromNB, and 224 : recvVecFromNB' in the SOCKET signature. This error is actually 225 : in the SML Basis specification too. 226 : 227 : ---------------------------------------------------------------------- 228 : mblume 1923 Name: Matthias Blume (http://www.tti-c.org/blume/) 229 : blume 2226 Date: 2006/12/05 22:40:00 CST 230 : Description: 231 : 232 : CM now reports undefined anchors as errors and aborts execution 233 : rather than silently pressing on using bogus values. 234 : 235 : ---------------------------------------------------------------------- 236 : Name: Matthias Blume (http://www.tti-c.org/blume/) 237 : blume 2224 Date: 2006/11/29 10:00:00 CST 238 : Description: 239 : 240 : Use Say.vsay for printing the "[autoloading]" message, so 241 : #set CM.Control.verbose false (or -Ccm.verbose=false) can be used 242 : to suppress them. 243 : 244 : ---------------------------------------------------------------------- 245 : Name: Matthias Blume (http://www.tti-c.org/blume/) 246 : blume 2219 Date: 2006/11/10 11:00:00 CST 247 : Description: 248 : 249 : Fixed bug in CM where "with:" specifications that affect compilation 250 : (as opposed to parsing) were ignored. 251 : 252 : ---------------------------------------------------------------------- 253 : Name: Matthias Blume (http://www.tti-c.org/blume/) 254 : blume 2193 Date: 2006/11/09 14:30:00 CST 255 : Tag: release-110.60 256 : Description: 257 : 258 : New working release (110.60). NEW BOOTFILES! 259 : 260 : This is the first subversion-hosted release. There are also changes 261 : to the directory layout. Here is a table: 262 : 263 : (All pathnames are relative to the SML/NJ "root" directory.) 264 : 265 : config -> config 266 : 267 : src/cm -> base/cm 268 : src/compiler -> base/compiler 269 : src/runtime -> base/runtime 270 : src/system -> base/system 271 : 272 : src/cm/pgraph -> pgraph 273 : 274 : src/READMES -> base/READMES 275 : src/$notefile -> base/NOTES/$notefile 276 : for in BOOT CVSNOTES CYGWININSTALL HISTORY INSTALL 277 : MACOSXINSTALL WININSTALL 278 : 279 : src/smlnj-lib -> smlnj-lib 280 : src/MLRISC -> MLRISC 281 : ckit -> ckit 282 : src/cml -> cml 283 : src/eXene -> eXene 284 : src/heap2asm -> heap2asm 285 : src/lexgen -> lexgen 286 : src/ml-burg -> ml-burg 287 : src/ml-lex -> ml-lex 288 : src/ml-yacc -> ml-yacc 289 : src/ml-nlffi-lib -> nlffi/lib 290 : src/ml-nlffigen -> nlffi/gen 291 : src/smlnj-c -> smlnj-c 292 : src/tools/TraceDebugProf -> trace-debug-profile 293 : 294 : In addition, there is also a new 295 : 296 : ml-lpt 297 : 298 : directory containing two new program generator tools: ml-ulex and 299 : ml-antlr (a lexer generator that handles unicode and an ANTRL-inspired 300 : LL(k) parser generator). These tools are currently "beta-quality" 301 : 302 : The latest versios of the sources can now be obtained anonymously 303 : via subversion. For this, it is useful to first check out 304 : 305 : svn://smlnj-gforge.cs.uchicago.edu/smlnj/admin 306 : 307 : and put the resulting directory on your shell's PATH. This provides 308 : access to three shell scripts: checkout-all.sh, stat-all.sh, 309 : and refresh-all.sh. 310 : 311 : To create a freshly checked-out copy of the sources, do 312 : 313 : checkout-all.sh [dir] 314 : 315 : where dir is the optional SML/NJ root directory (default is "."). 316 : 317 : This creates the above directory layout. Each subdirectory of 318 : the root is under individual subversion control. The stat-all.sh 319 : and refresh-al.sh scripts apply "svn stat" or "svn update" to 320 : each of these subtrees. 321 : 322 : ---------------------------------------------------------------------- 323 : Name: Matthias Blume (http://www.tti-c.org/blume/) 324 : blume 2155 Date: 2006/11/02 12:20:00 CST 325 : Description: 326 : 327 : Reorganized directory layout. 328 : 329 : This is a temporary solution, more reorganization is to come. 330 : 331 : The basic idea is to have a number of toplevel trees, each corresponding 332 : to a well-defined part of the overall system. Each part can be 333 : maintained individually, even in separate source repositories, 334 : although currently we still serve everything out of the main 335 : smlnj-gforge tree. 336 : 337 : Installer and and scripts have been updated to reflect the new 338 : layout. The installer (base/src/system/smlnj/installer) is now 339 : "scriptable" to avoid burning too much knowledge about the 340 : layout into SML source code. The main script used by the installer 341 : is in config/actions. 342 : 343 : The main change is that many of the subdirectories of what used to 344 : be known as "src" have moved to the toplevel. The "src" directory 345 : itself has moved down into a subtree called "base". (We may eventually 346 : get rid of the extra level of indirection represented by "src".) 347 : 348 : The layout is now as follows: 349 : 350 : toplevel tree name | default repository 351 : | (using gf=svn://smlnj-gforge.cs.uchicago.edu/smlnj) 352 : -------------------+---------------------------------------------------- 353 : config | $gf/config/trunk 354 : | 355 : base |$gf/sml/trunk 356 : | 357 : smlnj-lib | $gf/smlnj-lib/trunk 358 : MLRISC |$gf/MLRISC/trunk 359 : | 360 : ml-yacc | $gf/ml-yacc/trunk 361 : ml-lex |$gf/ml-lex/trunk 362 : ml-burg | $gf/ml-burg/trunk 363 : lexgen |$gf/lexgen/trunk 364 : heap2asm | $gf/heap2asm/trunk 365 : | 366 : cml |$gf/cml/trunk 367 : eXene | $gf/eXene/trunk 368 : ckit |$gf/ckit/trunk 369 : nlffi | $gf/nlffi/trunk 370 : | 371 : smlnj-c |$gf/smlnj-c/trunk 372 : 373 : In $gf/admin there are a few useful shell scripts for checking out 374 : and maintaining the entire collection of trees: 375 : 376 : admin/checkout-all.sh [dir] 377 : -- optionally creates dir and checks out all trees from their 378 : default repositories; if dir is missing, checkout into . 379 : admin/refresh-all.sh [dir] 380 : -- looks at all trees (from the above list) in dir (default: .) 381 : and runs "svn update" if the tree exists and is under 382 : subversion control; 383 : non-existing or non-subversion trees are skipped 384 : admin/stat-all.sh [dir] 385 : -- like refresh-all.sh, but runs "svn stat" instead 386 : 387 : ---------------------------------------------------------------------- 388 : Name: Matthias Blume (http://www.tti-c.org/blume/) 389 : Date: 2006/10/05 11:30:00 CDT 390 : mblume 2066 Tag: blume-20061005-merge-amd64 391 : Description: 392 : 393 : Merged code for AMD64 backend (Mike Rainey's work). 394 : Everything is hooked up but untested. 395 : 396 : ---------------------------------------------------------------------- 397 : Name: Matthias Blume (http://www.tti-c.org/blume/) 398 : mblume 1931 Date: 2006/05/17 14:00:00 CST 399 : Tag: Release_110_59 400 : Description: 401 : 402 : blume 2193 New working version (110.59). NEW BOOTFILES! 403 : mblume 1931 404 : I am freezing 110.59. Changes other than the version-number increase: 405 : 406 : eXene: 407 : 408 : * committed changes to eXene from Alley Stoughton: 409 : "fixed bugs in X authorization and resource handling, as well 410 : as in the pile and viewport widgets" 411 : 412 : Runtime: 413 : * fixed linking problem with NetBSD 3.x. 414 : 415 : Lexgen: 416 : * lexgen tool handles non-ascii characters in 7-bit mode the same 417 : way that ml-lex does 418 : 419 : * lexgen propagates exceptions the same way that ml-lex does 420 : 421 : CML: 422 : * Fixed a bug in the SyncVar polling functions (iGetPoll, 423 : mTakePoll, and mGetPoll) that could lead to livelock. 424 : 425 : ---------------------------------------------------------------------- 426 : Name: Matthias Blume (http://www.tti-c.org/blume/) 427 : mblume 1926 Date: 2006/05/12 15:20:00 CST 428 : Tag: blume-20060515-makedepend 429 : Description: 430 : 431 : Implemented ml-makedepend (i.e., CM.sources) in a better (more robust) 432 : way. This should hopefully fix the ml-makedepend problem permanently. 433 : 434 : ---------------------------------------------------------------------- 435 : Name: Matthias Blume (http://www.tti-c.org/blume/) 436 : mblume 1925 Date: 2006/05/12 15:15:00 CST 437 : Tag: blume-20060512-makedepend 438 : Description: 439 : 440 : Fixed long-standing bug with ml-makedepend where it would output a 441 : spurious dependency to a non-existing file. (This is a simple fix. 442 : It might need further looking into.) 443 : 444 : ---------------------------------------------------------------------- 445 : Name: Matthias Blume (http://www.tti-c.org/blume/) 446 : mblume 1923 Date: 2006/04/20 10:30:00 CDT 447 : Tag: blume-20060420-heap2exec 448 : Description: 449 : 450 : Committed patches received from Johannes 5 Joemann (joemann@befree.free.de) 451 : that enable heap2exec under Linux and FreeBSD. 452 : 453 : ---------------------------------------------------------------------- 454 : jhr 1921 Name: John Reppy 455 : Date: 2006/04/14 456 : blume 2155 Tag: 457 : jhr 1921 Description: 458 : 459 : MLRISC changes: 460 : 1) renamed GAS_PSEUDO_OPS to AS_PSEUDO_OPS and put it in its own file. 461 : 2) added support for NOTB and XORB operators in pseudo-op expressions 462 : 3) added DarwinPseudoOp functor that supports Darwin's assembler syntax. 463 : 4) added support for 64-bit integer literals 464 : 465 : ---------------------------------------------------------------------- 466 : jhr 1922 Name: Matthias Blume (http://www.tti-c.org/blume/) 467 : mblume 1907 Date: yyyy/mm/dd 468 : Tag: Release_110_58 469 : Description: 470 : 471 : New working version (110.58). NEW BOOTFILES! 472 : 473 : ---------------------------------------------------------------------- 474 : mblume 1896 Name: Matthias Blume (http://www.tti-c.org/blume/) 475 : mblume 1905 Date: 2006/03/01 22:15:00 CST 476 : Tag: blume-20060301-lexgen 477 : Description: 478 : 479 : Incorporated several bugfixes to lexgen. Compiler now compiles to 480 : fixpoint when using lexgen instead of ml-lex. 481 : 482 : ---------------------------------------------------------------------- 483 : Name: Matthias Blume (http://www.tti-c.org/blume/) 484 : mblume 1902 Date: 2006/02/28 22:45:00 CST 485 : Tag: blume-20060228-lexgen 486 : Description: 487 : 488 : Removed ml-flex and added lexgen instead, using Aaron Turon's newly 489 : provided tarball. The generated lexers still have problems. 490 : 491 : ---------------------------------------------------------------------- 492 : Name: Matthias Blume (http://www.tti-c.org/blume/) 493 : mblume 1898 Date: 2006/02/26 23:30:00 CST 494 : Tag: blume-20060226-ml-flex 495 : Description: 496 : 497 : Removed ml-flex' dependency on regexp-lib.cm. Turned installation 498 : of ml-flex on by default. 499 : 500 : ---------------------------------------------------------------------- 501 : Name: Matthias Blume (http://www.tti-c.org/blume/) 502 : mblume 1896 Date: 2006/02/24 16:30:00 CST 503 : Tag: blume-20060224-ml-flex 504 : Description: 505 : 506 : Added ml-flex sources. Partially integrated, but should not be 507 : turned on yet! (Read: leave it commented-out in config/targets!) 508 : 509 : ---------------------------------------------------------------------- 510 : jhr 1893 Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 511 : Date: 2006/02/23 512 : Tag: jhr-20060223-x86-64 513 : Description: 514 : Changes to support building on x86-64 systems (using the 32-bit mode). 515 : Also cleaned up signal handling on Linux. Support for pre-2.2 Linux 516 : kernels dropped. 517 : 518 : ---------------------------------------------------------------------- 519 : allenleung 1890 Name: Allen Leung (leunga (at) reservoir (dot) com) 520 : Date: 2006/02/22 15:07:00 EST 521 : Tag: leunga-20060222-mdl-gen 522 : Description: 523 : 524 : CM has changed. Updated the script for rebuilding the MLRISC generated 525 : files. 526 : 527 : ---------------------------------------------------------------------- 528 : mblume 1886 Name: Matthias Blume (http://www.tti-c.org/blume/) 529 : Date: 2006/02/14 17:30:00 CST 530 : Tag: blume-20060214-intel-mac 531 : Description: 532 : 533 : Hooked code for Darwin-specific Intel ABI into main compiler. 534 : (This is a temporary solution which relies on the fact that the 535 : compiler itself does not use NLFFI. Eventually we need to divorce 536 : intel mac from generic x86 unix code and make separate sets of binaries.) 537 : 538 : ---------------------------------------------------------------------- 539 : jhr 1882 Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 540 : jhr 1885 Date: 2006/02/13 541 : Tag: jhr-20060213-intel-mac 542 : Description: 543 : Changed MLRISC x86 CCalls for partial support of MacOS X ABI. 544 : 545 : ---------------------------------------------------------------------- 546 : Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 547 : jhr 1882 Date: 2006/02/06 548 : Tag: jhr-20060206-intel-mac 549 : Description: 550 : Changes to support MacOS X on Intel hardware. The C-calls support in 551 : MLRISC must also be updated to support the MacOS X ABI. 552 : 553 : ---------------------------------------------------------------------- 554 : mblume 1863 Name: Matthias Blume (http://www.tti-c.org/blume/) 555 : mblume 1879 Date: 2005/12/16 00:15:00 CST 556 : Tag: blume-20051216-cm 557 : Description: 558 : 559 : Improved error reporting and handling in CM. 560 : 561 : ---------------------------------------------------------------------- 562 : Name: Matthias Blume (http://www.tti-c.org/blume/) 563 : mblume 1878 Date: 2005/11/21 14:00:00 CST 564 : Tag: blume-20051121-html-lib 565 : Description: 566 : 567 : Enabling$/html-lib.cm in config/preloads did not work. This is fixed 568 : now. (Since the anchor mapping for html-lib.cm is not yet in effect 569 : blume 2155 at the time when config/preloads is processed, the library has to 570 : mblume 1878 be referred to by another name. In 110.57 this would be 571 : $SMLNJ-LIB/HTML/html-lib.cm. I arranged for$smlnj/smlnj-lib/html-lib.cm 572 : to be valid as well.) 573 : 574 : Thanks to Todd Wilson (Fresno) for alerting me to this issue. 575 : 576 : ---------------------------------------------------------------------- 577 : Name: Matthias Blume (http://www.tti-c.org/blume/) 578 : mblume 1874 Date: 2005/11/19 13:45:00 CST 579 : Tag: Release_110_57 580 : Description: 581 : 582 : Moved release tag for 110.57. 583 : 584 : ---------------------------------------------------------------------- 585 : Name: Matthias Blume (http://www.tti-c.org/blume/) 586 : mblume 1873 Date: 2005/11/19 23:35:00 CST 587 : Tag: blume-20051119-fish 588 : Description: 589 : 590 : Fixed a problem in config/install.sh where it tries to "fish" the 591 : name of the CM metadata directory from the wrong place (because 592 : the physical location of basis.cm has changed). Also, corrected the 593 : path anchor for $/html-lib.cm. (Thanks to M. Fluet for pointing out 594 : these problems.) 595 : 596 : ---------------------------------------------------------------------- 597 : Name: Matthias Blume (http://www.tti-c.org/blume/) 598 : mblume 1867 Date: 2005/11/16 14:30:00 CST 599 : mblume 1874 Tag: blume-orig-110_57 600 : mblume 1867 Description: 601 : 602 : New working version (110.57). NEW BOOTFILES! 603 : 604 : mblume 1874 UPDATE: The release tag has been moved to include a fix for a brown-paper- 605 : bag glitch (see above). 606 : 607 : mblume 1867 ---------------------------------------------------------------------- 608 : Name: Matthias Blume (http://www.tti-c.org/blume/) 609 : mblume 1866 Date: 2005/11/16 10:25:00 CST 610 : Tag: blume-22051116-btrace 611 : Description: 612 : 613 : Fixed problem with bogus exception message when using back-trace 614 : facility. 615 : 616 : ---------------------------------------------------------------------- 617 : Name: Matthias Blume (http://www.tti-c.org/blume/) 618 : mblume 1865 Date: 2005/11/15 22:35:00 CST 619 : Tag: blume-22051115-array2copy 620 : Description: 621 : 622 : Added simple implementation of Array2.copy. (Warning: mostly untested.) 623 : 624 : ---------------------------------------------------------------------- 625 : Name: Matthias Blume (http://www.tti-c.org/blume/) 626 : mblume 1864 Date: 2005/11/15 21:35:00 CST 627 : Tag: blume-22051115-versiontool 628 : Description: 629 : 630 : Reversed change to src/system/smlnj/internals/versiontool.cm. This 631 : file gets loaded as a tool -- by the equivalent of CM.make during the 632 : run of CMB.make. Thus, CMB's path configuration is meaningless for 633 : it. Instead, it has the status of "user code", so it should use 634 :$/basis.cm to refer to the Basis library. (At least that's true for 635 : the purpose of bootstrapping the previous change. In the future it 636 : might make sense to have versiontool.cm refer to 637 : $smlnj/basis/basis.cm, i.e., the version of the Basis that the 638 : compiler itself uses.) 639 : 640 : Also patched src/system/testml to have it activate those extra anchor 641 : bindings in config/extrapathconfig. 642 : 643 : ---------------------------------------------------------------------- 644 : Name: Matthias Blume (http://www.tti-c.org/blume/) 645 : mblume 1863 Date: 2005/11/15 16:35:00 CST 646 : Tag: blume-22051115-libraries 647 : Description: 648 : 649 : This change affects the way the following libraries are tied into 650 : the system: 651 : 652 :$/basis.cm 653 : $/smlnj-lib.cm 654 :$/pp-lib.cm 655 : $/controls-lib.cm 656 :$/html-lib.cm 657 : $/ml-yacc-lib.cm 658 : 659 : These libraries are now internally (as seen from the source code 660 : of the implementation itself) known by the following names: 661 : 662 :$smlnj/basis/basis.cm 663 : $smlnj/smlnj-lib/smlnj-lib.cm 664 :$smlnj/smlnj-lib/pp-lib.cm 665 : $smlnj/smlnj-lib/controls-lib.cm 666 :$smlnj/smlnj-lib/html-lib.cm 667 : $smlnj/ml-yacc/ml-yacc-lib.cm 668 : 669 : This makes it possible to work with code that requires different 670 : versions of these libraries, and which refers to these libraries using 671 : their "default" names (i.e., the first set of names above). In other 672 : words, one can un-define or re-define those default names without 673 : compromising the proper functioning of the compiler itself. 674 : 675 : A similar procedure had already been performed for several of the 676 : MLRISC libraries that are linked into the compiler. I did some 677 : cleanup on this code. 678 : 679 : A new file in the config directory (named extrapathconfig) is 680 : responsible for setting up path anchors that the compiler itself does 681 : not need, but that are typically required by user code. 682 : 683 : ---------------------------------------------------------------------- 684 : mblume 1862 Name: Matthias Blume 685 : Date: 2005/11/07 17:05:00 CST 686 : Tag: blume-20051107-slice 687 : Description: 688 : 689 : Fixed erroneous out-of-bounds test in the "update" function of 690 : various *ArraySlice modules. (Thanks to Vesa A. Norrman for pointing 691 : out the problem.) 692 : 693 : Pushed some Basis changes through ML-Lex, CML, and eXene. 694 : 695 : ---------------------------------------------------------------------- 696 : jhr 1858 Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 697 : jhr 1861 Date: 2005/11/07 698 : Description: 699 : Fixed a Basis incompatibility: The depreciated function Substring.all 700 : was removed (use Substring.full instead). 701 : 702 : ---------------------------------------------------------------------- 703 : Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 704 : jhr 1858 Date: 2005/11/05 705 : Description: 706 : Tweaked interval set API in SML/NJ library; see the CHANGES file for details. 707 : 708 : ---------------------------------------------------------------------- 709 : mblume 1856 Name: Matthias Blume (http://www.tti-c.org/blume/) 710 : Date: 2005/11/02 16:25:00 CST 711 : Tag: blume-20051102-hex 712 : Description: 713 : 714 : * Runtime system bootstrap code now accepts hex digits in BOOTLIST 715 : in either upper case or lower case format. 716 : * Pushed changes to names of Pack{Big,Little} structures through 717 : CML and eXene. 718 : 719 : ---------------------------------------------------------------------- 720 : jhr 1852 Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 721 : jhr 1855 Date: 2005/11/02 722 : Description: 723 : Fixed a Basis incompatibility: Pack{Big,Little} structures should 724 : be called PackWord{Big,Little}. 725 : 726 : ---------------------------------------------------------------------- 727 : Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 728 : jhr 1852 Date: 2005/10/28 729 : Description: 730 : Fixed a minor Basis incompatibility: hex digits should be upper case. 731 : 732 : ---------------------------------------------------------------------- 733 : mblume 1846 Name: Matthias Blume (blume (at) tti - c (dot) org) 734 : Date: 2005/10/25 16:00:00 CDT 735 : Tag: Release_110_56 736 : Description: 737 : 738 : New working version (110.56). NEW BOOTFILES! 739 : 740 : ---------------------------------------------------------------------- 741 : jhr 1838 Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 742 : jhr 1840 Date: 2005/10/25 743 : Description: 744 : Added interval sets to utility library (signatures INTERVAL_DOMAIN 745 : and INTERVAL_SET, and functor IntervalSetFn). 746 : 747 : ---------------------------------------------------------------------- 748 : Name: John Reppy (http://www.cs.uchicago.edu/~jhr) 749 : jhr 1838 Date: 2005/10/14 750 : Description: 751 : Add Zhong Shao's fix for datatype equality functions. 752 : 753 : ---------------------------------------------------------------------- 754 : allenleung 1836 Name: Allen Leung (leunga (at) reservoir (dot) com) 755 : allenleung 1837 Date: 2005/10/14 12:30:00 EST 756 : Tag: leunga-20051014-x86-spill 757 : Description: 758 : 759 : Bug fix a bug found by Carl Hauser. 760 : There was a typo in the reload code for FCMP in x86SpillInstr.sml. 761 : 762 : ---------------------------------------------------------------------- 763 : Name: Allen Leung (leunga (at) reservoir (dot) com) 764 : allenleung 1836 Date: 2005/10/14 11:15:00 EST 765 : Tag: leunga-20051014-x86-asm 766 : Description: 767 : 768 : Removed some debugging code in file x86Asm.sml. 769 : The function emit_operand was printing out debugging output. 770 : 771 : ---------------------------------------------------------------------- 772 : jhr 1813 Name: John Reppy 773 : jhr 1831 Date: 2005/07/27 774 : Tag: 775 : Description: 776 : 777 : jhr 1832 Fixed ml-lex to recognize "\r" as representing carriage return. 778 : 779 : ---------------------------------------------------------------------- 780 : Name: John Reppy 781 : Date: 2005/07/27 782 : Tag: 783 : Description: 784 : 785 : jhr 1831 Fixed ml-yacc to work on files with non-native end-of-line 786 : encodings (e.g., Windows text file on a Unix system). 787 : 788 : ---------------------------------------------------------------------- 789 : Name: John Reppy 790 : jhr 1824 Date: 2005/07/20 791 : Tag: 792 : Description: 793 : 794 : Added changes from Dominic Evans (oldmanuk (at) gmail (dot) com) 795 : to support HPUX 11. 796 : 797 : ---------------------------------------------------------------------- 798 : Name: John Reppy 799 : jhr 1813 Date: 2005/07/06 800 : Tag: 801 : Description: 802 : 803 : Changes to the SML/NJ library. See smlnj-lib/CHANGES for details. 804 : 805 : ---------------------------------------------------------------------- 806 : mblume 1808 Name: Matthias Blume (blume (at) tti - c (dot) org) 807 : Date: 2005/07/06 00:45:00 CDT 808 : Tag: blume-20050706-slice-copy 809 : Description: 810 : 811 : Fixed reversed logic for deciding whether to "copy up" or "copy down" 812 : in *-array-slice.sml. 813 : 814 : ---------------------------------------------------------------------- 815 : allenleung 1806 Name: Allen Leung (leunga (at) reservoir (dot) com) 816 : allenleung 1807 Date: 2005/05/31 17:00:00 EST 817 : Tag: leunga-20050531-cygwin-fault-2 818 : Description: 819 : 820 : A typo in the cygwin code fixed. 821 : 822 : ---------------------------------------------------------------------- 823 : Name: Allen Leung (leunga (at) reservoir (dot) com) 824 : allenleung 1806 Date: 2005/05/31 16:47:00 EST 825 : Tag: leunga-20050531-cygwin-fault 826 : Description: 827 : 828 : blume 2155 Updated Cygwin's fault/signal handling to match the Windows version. 829 : allenleung 1806 Updated the export list. 830 : 831 : ---------------------------------------------------------------------- 832 : mblume 1791 Name: Matthias Blume (blume (at) tti - c (dot) org) 833 : mblume 1795 Date: 2005/05/18 13:35:00 CDT 834 : Tag: Release_110_54 835 : Description: 836 : 837 : New working version (110.54). NEW BOOTFILES! 838 : 839 : ---------------------------------------------------------------------- 840 : Name: Matthias Blume (blume (at) tti - c (dot) org) 841 : mblume 1794 Date: 2005/05/18 11:58:00 CDT 842 : Tag: blume-20050518-installer 843 : Description: 844 : 845 : Added support scripts for Mac OS X PackageMaker and modified 846 : config/install.sh so that it supports re-dumping a heap image 847 : after customization. 848 : 849 : ---------------------------------------------------------------------- 850 : Name: Matthias Blume (blume (at) tti - c (dot) org) 851 : mblume 1793 Date: 2005/05/18 10:55:00 CDT 852 : Tag: blume-20050518-realdiv-noovld 853 : Description: 854 : 855 : Un-overloaded / to work around bug in overloading resolution code. 856 : 857 : ---------------------------------------------------------------------- 858 : Name: Matthias Blume (blume (at) tti - c (dot) org) 859 : mblume 1792 Date: 2005/05/16 23:50:00 CDT 860 : Tag: blume-20050516-redump-heap 861 : Description: 862 : 863 : Added mechanism for re-creating a heap file for the interactive system 864 : after configuration variables have been changed. 865 : 866 : CM.redump_heap : string -> unit 867 : 868 : This is much like SMLofNJ.exportML, but starting from the resulting 869 : blume 2155 heap does not return to the caller of CM.redump_heap but 870 : mblume 1792 restarts the interactive system from scratch. The original call of 871 : CM.redump_heap does not return but ends the interactive session. 872 : Thus, CM.redump_heap is a lot like SMLofNJ.exportFn. 873 : 874 : Internally, redump_heap winds the dynamic execution context back to 875 : the point where the original heap image was created and re-executes 876 : the heap image generation code in the boot code. 877 : 878 : ---------------------------------------------------------------------- 879 : Name: Matthias Blume (blume (at) tti - c (dot) org) 880 : mblume 1791 Date: 2005/05/09 21:55:00 CDT 881 : Tag: blume-20050509-word64 882 : Description: 883 : 884 : Added a hack to the existing hack known as Word64 to make fromString 885 : behave correctly. I am still not sure whether Word64.scan will work 886 : as specified with respect to the interaction of radix and prefix. 887 : 888 : ---------------------------------------------------------------------- 889 : allenleung 1785 Name: Allen Leung (leunga (at) reservoir (dot) com) 890 : Date: 2005/05/04 11:50:00 EST 891 : Tag: leunga-20050504-checkgc 892 : Description: 893 : 894 : blume 2155 Added a gc protocol checking phase. This phase is enabled with 895 : allenleung 1785 the flag "check-gc". "debug-check-gc" turns on the verbose mode. 896 : 897 : ---------------------------------------------------------------------- 898 : mblume 1741 Name: Matthias Blume (blume (at) tti - c (dot) org) 899 : mblume 1784 Date: 2005/05/04 10:45:00 CDT 900 : Tag: blume-20050504-intinf 901 : Description: 902 : 903 : Fixed a bug in the implementation of div and mod for IntInf. 904 : Thanks to Neophytos Michael for reporting the problem. 905 : 906 : ---------------------------------------------------------------------- 907 : Name: Matthias Blume (blume (at) tti - c (dot) org) 908 : mblume 1783 Date: 2005/05/04 10:35:00 CDT 909 : Tag: blume-20050504-join 910 : Description: 911 : 912 : Added a "join" combinator to the ParserComb module in smlnj-lib.cm. 913 : 914 : ---------------------------------------------------------------------- 915 : Name: Matthias Blume (blume (at) tti - c (dot) org) 916 : mblume 1770 Date: 2005/02/28 23:40:00 CST 917 : Tag: blume-20050228-mVar 918 : Description: 919 : 920 : Fixed serious bug (brown paper bag variety) in new implementation of 921 : structure Atom in CML. (I had accidentally used a mailbox instead of 922 : an mvar, leaving the door open for races.) 923 : 924 : ---------------------------------------------------------------------- 925 : Name: Matthias Blume (blume (at) tti - c (dot) org) 926 : mblume 1761 Date: 2005/02/25 15:00:00 CST 927 : Tag: Release_110_53 928 : Description: 929 : 930 : New working version (110.53). NEW BOOTFILES! 931 : 932 : ---------------------------------------------------------------------- 933 : Name: Matthias Blume (blume (at) tti - c (dot) org) 934 : mblume 1760 Date: 2005/02/25 14:50:00 CST 935 : Tag: blume-20050225-susp 936 : Description: 937 : 938 : Brought back SMLofNJ.Susp. The underlying suspension type is the one 939 : implemented in Core -- which means that it is the same as the one used 940 : by the lazy extension. 941 : 942 : ---------------------------------------------------------------------- 943 : Name: Matthias Blume (blume (at) tti - c (dot) org) 944 : mblume 1759 Date: 2005/02/24 16:50:00 CST 945 : Tag: blume-20050224-cml-atom 946 : Description: 947 : 948 : Simpler and at the same time more general implementation of structure 949 : Atom in CML. 950 : 951 : ---------------------------------------------------------------------- 952 : Name: Matthias Blume (blume (at) tti - c (dot) org) 953 : mblume 1758 Date: 2005/02/15 17:35:00 CST 954 : Tag: blume-20050215-tools 955 : Description: 956 : 957 : Created new "tools" directory under "src" and moved "TraceDebugProf" 958 : there. 959 : 960 : ---------------------------------------------------------------------- 961 : Name: Matthias Blume (blume (at) tti - c (dot) org) 962 : mblume 1755 Date: 2005/02/10 17:55:00 CST 963 : Tag: blume-20050210-longlong 964 : Description: 965 : 966 : Implemented "long long" arguments and results for NLFFI. (Only the 967 : PPC/MacOS implementation is complete, the other backends still need to 968 : be updated.) 969 : 970 : ---------------------------------------------------------------------- 971 : Name: Matthias Blume (blume (at) tti - c (dot) org) 972 : mblume 1751 Date: 2005/01/24 17:40:00 CST 973 : Tag: blume-20050124-mlyacc 974 : Description: 975 : 976 : Minor cleanup in ML-Yacc rule printing mechanism. This should fix a 977 : problem with certain "as" patterns which previously got rendered 978 : using incorrect syntax. 979 : 980 : ---------------------------------------------------------------------- 981 : Name: Matthias Blume (blume (at) tti - c (dot) org) 982 : mblume 1750 Date: 2005/01/18 12:00:00 CST 983 : Tag: blume-20050118-profile 984 : Description: 985 : 986 : Made time profiling code (interrupt handler) in runtime system aware 987 : of new array representation. 988 : 989 : ---------------------------------------------------------------------- 990 : Name: Matthias Blume (blume (at) tti - c (dot) org) 991 : mblume 1747 Date: 2005/01/14 18:00:00 CST 992 : Tag: blume-20050114-heap2exec 993 : Description: 994 : 995 : Implemented new (but still experimental) heap2exec facility. This is 996 : tested under Mac OS X and should work under Linux (will test shortly). 997 : It will probably also work on the Sparc (will test some time later). 998 : 999 : - removed old "HACKED_STANDALONE" hack from runtime 1000 : 1001 : To be able to test this, uncomment the request for "heap2asm" in 1002 : config/targets prior to installation. (Notice that this is different 1003 : from "heap2exec" mentioned below. Not a typo.) 1004 : 1005 : To perform an actual test, run the command 1006 : 1007 :$ bin/heap2exec heapfile execfile 1008 : 1009 : (You can put heap2exec on your shell's path.) 1010 : 1011 : For example, run 1012 : 1013 : $bin/heap2exec bin/.heap/ml-yacc.ppc-darwin mly 1014 : 1015 : This will create a standalone executable called "mly" which you can 1016 : then invoke directly as a command. 1017 : 1018 : ---------------------------------------------------------------------- 1019 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1020 : mblume 1746 Date: 2005/01/07 11:44:00 CST 1021 : Tag: blume-20050107-mlstring 1022 : Description: 1023 : 1024 : fixed off-by-one error in ML_STRING macro (globals.c) 1025 : 1026 : ---------------------------------------------------------------------- 1027 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1028 : mblume 1744 Date: 2004/12/23 18:00:00 CST 1029 : Tag: blume-20041223-santa 1030 : Description: 1031 : 1032 : Made ml-build script "smarter" (but only very little). 1033 : 1034 : ---------------------------------------------------------------------- 1035 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1036 : mblume 1742 Date: 2004/12/21 15:05:00 CST 1037 : Tag: blume-20041221-longlong 1038 : Description: 1039 : 1040 : * Implemented access to signed and unsigned long long data in NLFFI. 1041 : (The parameter-passing part of the picture has not complete. But 1042 : data structure access seems to work.) 1043 : 1044 : * Fixed CM's incorrect assumption that the PPC is little-endian. 1045 : (On the Mac, it is big-endian. And that's currently our only 1046 : PPC platform.) 1047 : 1048 : ---------------------------------------------------------------------- 1049 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1050 : mblume 1741 Date: 2004/12/21 12:50:00 CST 1051 : Tag: blume-20041221-memory 1052 : Description: 1053 : 1054 : Some cleanup in the$c/memory.cm library: separated some concerns by 1055 : moving allocation code and memory access code each into their own 1056 : files. 1057 : 1058 : ---------------------------------------------------------------------- 1059 : allenleung 1740 Name: Allen Leung (leunga (at) reservoir (dot) com) 1060 : Date: 2004/12/17 16:12:00 EST 1061 : Tag: leunga-20041217-cygwin-smlnj-home 1062 : Description: 1063 : 1064 : blume 2155 The Unix I/O library of SML/NJ on cygwin does not understand 1065 : Windows style pathname, so problems arise when SMLNJ_HOME is set 1066 : to a Windows style pathname. _run-sml now converts SMLNJ_HOME 1067 : to a POSIX pathname on cygwin. 1068 : allenleung 1740 1069 : ---------------------------------------------------------------------- 1070 : mblume 1737 Name: Matthias Blume (blume (at) tti - c (dot) org) 1071 : mblume 1736 Date: 2004/12/16 13:35:00 CST 1072 : Tag: Release_110_52 1073 : Description: 1074 : 1075 : Last-minute changes incorporated into 110.52. Release tag moved. 1076 : 1077 : The changes: 1078 : - HashString.hashString' -> HashString.hashSubstring 1079 : - bug fix in UnivariateStats 1080 : 1081 : ---------------------------------------------------------------------- 1082 : mblume 1702 Name: Matthias Blume (blume (at) tti - c (dot) org) 1083 : mblume 1733 Date: 2004/12/15 23:40:00 CST 1084 : Tag: blume-20041215-hashSubstring 1085 : Description: 1086 : 1087 : - HashString.hashString' -> HashString.hashSubstring 1088 : - corresponding changes in atom.sml 1089 : - "de-compressed" (aka. un-obfuscated) code for UnivariateStats and 1090 : added some comments 1091 : 1092 : ---------------------------------------------------------------------- 1093 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1094 : mblume 1728 Date: 2004/12/15 15:30:00 CST 1095 : mblume 1736 Tag: (Release_110_52) 1096 : mblume 1728 Description: 1097 : 1098 : New working version (110.52). NEW BOOTFILES! 1099 : 1100 : ---------------------------------------------------------------------- 1101 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1102 : mblume 1727 Date: 2004/12/15 12:45:00 CST 1103 : Tag: blume-20041215-spaces 1104 : Description: 1105 : 1106 : More on the space problem (this time for Win32). 1107 : 1108 : ---------------------------------------------------------------------- 1109 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1110 : mblume 1725 Date: 2004/12/14 17:30:00 CST 1111 : Tag: blume-20041214-spaces 1112 : Description: 1113 : 1114 : Hacked some of the scripts (in particular: the installer) to cope with 1115 : spaces in filenames a bit better. But beware: the current "solution" 1116 : is likely still full of bugs and inherently incomplete. (We need to 1117 : do away with those shell scripts for a comprehensive solution.) 1118 : 1119 : ---------------------------------------------------------------------- 1120 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1121 : mblume 1724 Date: 2004/12/13 14:45:00 CST 1122 : Tag: blume-20041213-ml-makedepend 1123 : Description: 1124 : 1125 : Fixed bug in code for ml-makedepend. 1126 : 1127 : ---------------------------------------------------------------------- 1128 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1129 : mblume 1720 Date: 2004/12/09 16:30:00 CST 1130 : Tag: blume-20041209-statistics 1131 : Description: 1132 : 1133 : Added two simple but potentially useful statistics modules to SML/NJ Library. 1134 : (See CHANGES file there.) 1135 : 1136 : ---------------------------------------------------------------------- 1137 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1138 : mblume 1718 Date: 2004/12/01 16:50:00 CST 1139 : Tag: blume-20041201-atom 1140 : Description: 1141 : 1142 : smlnj-lib: 1143 : 1144 : Added function HashString.hashString' for substrings. 1145 : Hand-inlined CharVector.foldl into HashString (for speed). 1146 : Modified implementation of structure Atom to avoid extracting 1147 : strings from substrings unless necessary. 1148 : (Also see CHANGES file for smlnj-lib.) 1149 : 1150 : ---------------------------------------------------------------------- 1151 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1152 : mblume 1717 Date: 2004/11/24 22:15:00 CST 1153 : Tag: blume-20041124-cml 1154 : Description: 1155 : 1156 : Made sure CML compiles when Position = Int64. 1157 : 1158 : ---------------------------------------------------------------------- 1159 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1160 : mblume 1715 Date: 2004/11/24 14:30:00 CST 1161 : Tag: blume-20041124-position 1162 : Description: 1163 : 1164 : The compiler can now be compiled in a mode that makes structure Position 1165 : equal to Int64. The default, however, is unchanged (Position = Int31) 1166 : for the time being. 1167 : 1168 : To enable 64-bit positions, use the following procedure: 1169 : 1170 : 1. Start sml 1171 : 2. Autoload $smlnj/cmb.cm (if not already autoloaded) 1172 : 3. Type 1173 : #set (CMB.symval "USE_64_BIT_POSITIONS") (SOME 1); 1174 : 4. Run CMB.make() as usual. 1175 : 1176 : This is barely tested. The only test so far was a little SML program 1177 : counting the number of characters in an 8-gigabyte file by 1178 : reading it character-by-character. That test was successful. 1179 : 1180 : In support of 64-bit positions, a number of new functions have been 1181 : added to the runtime system. 1182 : 1183 : ---------------------------------------------------------------------- 1184 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1185 : mblume 1716 Date: 2004/11/23 14:45:00 CST 1186 : Tag: blume-20041123-useFile 1187 : mblume 1712 Description: 1188 : 1189 : Fixed a problem with unhelpful error messages related to problems with 1190 : .cm- or .sml files that appear as part of the sml command line. 1191 : 1192 : ---------------------------------------------------------------------- 1193 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1194 : mblume 1703 Date: 2004/11/18 15:40:00 CST 1195 : Tag: Release_110_51 1196 : Description: 1197 : 1198 : New working version (110.51). NEW BOOTFILES! 1199 : 1200 : ---------------------------------------------------------------------- 1201 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1202 : mblume 1702 Date: 2004/11/18 15:35:00 CST 1203 : Tag: 1204 : Description: 1205 : 1206 : Enabled dlopen and friends for FreeBSD (as recommended by Johannes 5 1207 : Joemann). 1208 : 1209 : ---------------------------------------------------------------------- 1210 : allenleung 1701 Name: Allen Leung (leunga (at) reservoir (dot) com) 1211 : Date: 2004/11/17 16:05:21 EST 2004 1212 : Tag: leunga-20041117-mlrisc-live-kill 1213 : Description: 1214 : 1215 : blume 2155 Added support for MLTree constructs LIVE and KILL 1216 : allenleung 1701 to all the architectures. 1217 : 1218 : ---------------------------------------------------------------------- 1219 : mblume 1687 Name: Matthias Blume (blume (at) tti - c (dot) org) 1220 : mblume 1689 Date: 2004/11/13 00:20:00 CST 1221 : Tag: blume-20041113-versiontool 1222 : Description: 1223 : 1224 : - Stripped down the versiontool: It now only handles the version number. 1225 : The date string is generated at bootstrap time (during makeml). 1226 : 1227 : - In a previous commit, fixed a minor issue with how polyequal is being 1228 : translated. In particular, the code now "looks through" abstractions. 1229 : This results in slightly fewer polyEqual warnings and hopefully slightly 1230 : more efficient code. Important examples for where this matters are 1231 : the new int64 and word64 types. 1232 : 1233 : ---------------------------------------------------------------------- 1234 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1235 : mblume 1687 Date: 2004/11/12 00:30:00 CST 1236 : Tag: blume-20041112-int64 1237 : Description: 1238 : 1239 : Structure Int64 fully hooked in. (The implementation is not very 1240 : efficient, though.) 1241 : 1242 : ---------------------------------------------------------------------- 1243 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1244 : mblume 1686 Date: 2004/11/11 17:30:00 CST 1245 : Tag: blume-20041111-more64 1246 : Description: 1247 : 1248 : All the pieces of Word64 are now there, with the exception of the 1249 : conversions from and to LargeWord. (Eventually these need to be identities, 1250 : but for the time being they don't even make sense because LargeWord is 1251 : 32-bit wide.) 1252 : 1253 : Also started to add similar support for Int64, but major pieces of that 1254 : are still missing. 1255 : 1256 : ---------------------------------------------------------------------- 1257 : mblume 1668 Name: Matthias Blume (blume (at) tti - c (dot) org) 1258 : mblume 1684 Date: 2004/11/11 00:15:00 CST 1259 : Tag: blume-20041111-word64 1260 : Description: 1261 : 1262 : Structure Word64 is now (almost) complete, word literals and patterns 1263 : seem to work. There are a few odd pieces missing. In particular, 1264 : I didn't do the {from,to}LargeWord parts because LargeWord is still Word32 1265 : at the moment. 1266 : 1267 : Making Word64 official would mean that LargeWord becomes Word64. But 1268 : this requires extreme care because most word-word conversions have to 1269 : go through LargeWord, so making a mistake means loss of efficiency or 1270 : worse. Eventually there will be a solution similar to (but actually 1271 : simpler than) what I did with IntInf. 1272 : 1273 : ---------------------------------------------------------------------- 1274 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1275 : mblume 1683 Date: 2004/11/10 18:12:00 CST 1276 : Tag: blume-20041110-64bit 1277 : Description: 1278 : 1279 : More 64-bit hacking (but still not even half-way there yet). 1280 : Also, some assorted improvements to the handling of 8-bit words. 1281 : 1282 : ---------------------------------------------------------------------- 1283 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1284 : mblume 1682 Date: 2004/11/09 17:50:00 CST 1285 : mblume 1683 Tag: 1286 : mblume 1682 Description: 1287 : 1288 : Started adding some infrastructure for supporting 64-bit int- and 1289 : word-types. (Still in its very early stages.) 1290 : 1291 : ---------------------------------------------------------------------- 1292 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1293 : mblume 1672 Date: 2004/10/28 10:45:00 CDT 1294 : Tag: Release_110_50 1295 : Description: 1296 : 1297 : New working version (110.50). NEW BOOTFILES! 1298 : 1299 : ===================== 1300 : 1301 : Also: 1302 : 1303 : - Changend config/srcarchiveurl from a file just 1304 : containing the URL string into a file containing 1305 : shell script code. The code has access to the$VERSION variable. 1306 : - Made corresponding changes to config/install.sh and config/unpack. 1307 : - Default contents of config/srcarchiveurl uses $VERSION and 1308 : normally does not have to be edited to reflect a version change. 1309 : 1310 : (As a result, a version change can be done by just editing 1311 : config/version, the rest is now automatic.) 1312 : 1313 : ---------------------------------------------------------------------- 1314 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1315 : mblume 1669 Date: 2004/10/27 17:50:00 CDT 1316 : Tag: blume-20041027-btrace-msg 1317 : Description: 1318 : 1319 : BackTrace.monitor now also reports the source of the exception that 1320 : triggered the trace. 1321 : 1322 : ---------------------------------------------------------------------- 1323 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1324 : mblume 1668 Date: 2004/10/27 17:20:00 CDT 1325 : Tag: blume-20041027-x86-c-calls 1326 : Description: 1327 : 1328 : This is the HISTORY entry for two earlier commits, both concerning 1329 : the x86 c-calls code in MLRISC: 1330 : 1331 : - added a missing LOAD in the code that deals with struct arguments 1332 : - made sure the caller does not add the wrong number of bytes to the 1333 : stack pointer after a call of a function returning a struct 1334 : (the callee already pops the implicit argument which points to 1335 : the space reserved for the result) 1336 : 1337 : ---------------------------------------------------------------------- 1338 : allenleung 1662 Name: Allen Leung (leunga (at) reservoir (dot) com) 1339 : Date: 2004/10/24 14:00:00 EST 1340 : Tag: leunga-20041024-x86-gas-fucomip 1341 : Description: 1342 : 1343 : John discovered a bug in the syntax of fucomip. 1344 : The opcodes FU?COMIP? have been changed to 1345 : 1346 : fu?comip? %st(i), %st 1347 : 1348 : ---------------------------------------------------------------------- 1349 : mblume 1622 Name: Matthias Blume (blume (at) tti - c (dot) org) 1350 : mblume 1656 Date: 2004/10/20 15:06:00 CDT 1351 : Tag: blume-20041020-standalone-backtrace 1352 : Description: 1353 : 1354 : Added a mechanism for getting back-trace information from standalone 1355 : programs. Here is how it works: 1356 : 1357 : 1. The part of the program from which you want to get backtrace 1358 : information (usually the whole program) should be wrapped with 1359 : BackTrace.monitor. This is a (unit->'a)->'a function, and your 1360 : main program could be modified from something like 1361 : 1362 : fun main (pgm, args) = ... 1363 : 1364 : to 1365 : 1366 : fun main (pgm, args) = BackTrace.monitor (fn () => ...) 1367 : 1368 : 2. To be able to access BackTrace.monitor, you have to add 1369 : library$smlnj-tdp/plugins.cm to the .cm file that contains your 1370 : main function. 1371 : 1372 : 3. Remove all compiled code (i.e., all the .cm/ subdirectories that 1373 : CM might have created in the past for your project). 1374 : 1375 : 4. Build the system using this command line: 1376 : 1377 : ml-build -Ctdp.instrument=true \$smlnj-tdp/back-trace.cm \ 1378 : myprog.cm MyProg.main myprog 1379 : 1380 : instead of the usual 1381 : 1382 : ml-build myprog.cm MyProg.main myprog 1383 : 1384 : I changed a library name: 1385 : 1386 :$/trace-debug-profile.cm --> $smlnj-tdp/plugins.cm 1387 : 1388 : New libraries: 1389 : 1390 :$smlnj-tdp/back-trace.cm 1391 : -- when loaded causes the back-trace plugin to be installed 1392 : $smlnj-tdp/coverage.cm 1393 : -- when loaded causes the coverage plugin to be installed 1394 : 1395 : ---------------------------------------------------------------------- 1396 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1397 : mblume 1655 Date: 2004/10/18 16:45:00 CDT 1398 : Tag: blume-20041018-groupowner 1399 : Description: 1400 : 1401 : Added an "obsolete" warning for the "group owner" syntax to CM's parser. 1402 : 1403 : Eliminated group owner specs from .cm files throughout the source tree. 1404 : 1405 : ---------------------------------------------------------------------- 1406 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1407 : mblume 1653 Date: 2004/10/15 15:45:00 CDT 1408 : Tag: blume-20041015-coverage 1409 : Description: 1410 : 1411 : * Test coverage tool added! 1412 : * Further reorganization of tracing-, debugging-, and profiling support: 1413 : 1414 : - moved original BTImp -- now called BackTrace -- into a separate 1415 : library called$/trace-debug-profile.cm 1416 : - eliminated all mentions of BTrace from SMLofNJ.Internals 1417 : - only the instrumentation mechanism is now left in the compiler proper 1418 : - BackTrace module is a plugin which is NOT plugged in by default 1419 : - Coverage module is another such plugin 1420 : 1421 : To get the benefits of any of these plugin modules, the code in 1422 : question must be compiled with tdp instrumentation turned on. This 1423 : can be done by setting SMLofNJ.Internals.TDP.mode to true. 1424 : (The ref cell is also controlled via the -Ctdp.instrument=... switch.) 1425 : 1426 : Plugins are selected at link time. (Pre-compiled instrumented code 1427 : can be re-loaded with different plugins in effect.) When an 1428 : instrumented module is linked, whatever plugins are at that time 1429 : enabled will come into effect for that module. 1430 : 1431 : To enable the back-trace plugin, load library $/trace-debug-profile.cm 1432 : and invoke BackTrace.install() (e.g., from the interactive prompt). 1433 : To enable the coverage plugin, load the same library and invoke 1434 : Coverage.install(). 1435 : 1436 : Back-traces are generated automatically on uncaught exceptions and 1437 : when the code in question explicitly invokes BackTrace.trigger(). 1438 : 1439 : Coverage (and execution frequency-) information must be queried 1440 : explicitly by calling Coverage.not_covered and Coverage.hot_spots. 1441 : 1442 : ---------------------------------------------------------------------- 1443 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1444 : mblume 1652 Date: 2004/10/14 17:40:00 CDT 1445 : Tag: blume-20041014-tdp-core 1446 : Description: 1447 : 1448 : Snapshot of a significant overhaul of how the trace/debug/profile support 1449 : is hooked into the system (specifically: Core and SMLofNJ.Internals). 1450 : 1451 : ---------------------------------------------------------------------- 1452 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1453 : mblume 1650 Date: 2004/10/13 16:34:00 CDT 1454 : Tag: blume-20041013-tdp 1455 : Description: 1456 : 1457 : Some rationalization of names: 1458 : 1459 : structure BTrace -> structure TDPInstrument 1460 : etc. 1461 : 1462 : This is is preparation of using the original back-trace 1463 : instrumentation for other purposes. "TDP" stands for 1464 : Trace/Debug/Profile. 1465 : 1466 : The control flag controlling whether instrumentation is on or off is now 1467 : registered under a different name, so instead of running sml as 1468 : 1469 : sml -Cinstrument.btrace-mode=true 1470 : 1471 : one has to say 1472 : 1473 : sml -Ctdp.instrument=true 1474 : 1475 : ---------------------------------------------------------------------- 1476 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1477 : mblume 1645 Date: 2004/10/11 16:37:00 CDT 1478 : Tag: blume-20041011-regions 1479 : Description: 1480 : 1481 : Made some minor modifications to elabcore.sml to have source regions 1482 : be propagated more tightly -- resulting in better (i.e., smaller) 1483 : regions being reported in error- and debug messages. 1484 : 1485 : ---------------------------------------------------------------------- 1486 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1487 : mblume 1644 Date: 2004/10/08 22:50:00 CDT 1488 : Tag: blume-20041008-cmkw 1489 : Description: 1490 : 1491 : Fixed handling of keywords in .cm files: After seeing "is" the lexer 1492 : treats subsequent occurrences of "group", "library", "source", "is", 1493 : "*", and "-" as ordinary identifiers rather than keywords. 1494 : 1495 : Most seriously, this fixes a problem with CM's "shell" tool. The tool 1496 : is supposed to accept a tool argument called "source", but this did 1497 : not work because of the clash with the keyword. 1498 : 1499 : ---------------------------------------------------------------------- 1500 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1501 : mblume 1642 Date: 2004/10/07 16:00:00 CDT 1502 : Tag: blume-20041007-cleanup 1503 : Description: 1504 : 1505 : Assorted cleanup work: 1506 : 1507 : - got rid of intstrmap in favor of using the library's 1508 : hash table implementation 1509 : - threw out most of the pathnames stuff, as it was not used anyway 1510 : - simplified tokentable implementation 1511 : - fixed some minor spelling errors 1512 : 1513 : ---------------------------------------------------------------------- 1514 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1515 : mblume 1641 Date: 2004/10/06 15:15:15 CDT 1516 : Tag: blume-20041006-handler 1517 : Description: 1518 : 1519 : Cleaned up the absyn to reflect the invariant that HANDLE always 1520 : carries a FNexp as part of the type definition. This eliminates some 1521 : superfluous sanity checks at runtime down the road. 1522 : 1523 : Some minor cleanup of the btrace code. 1524 : 1525 : ---------------------------------------------------------------------- 1526 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1527 : mblume 1640 Date: 2004/10/01 10:20:30 CDT 1528 : Tag: blume-20041001-slave 1529 : Description: 1530 : 1531 : Added hack to make slave mode work in the presence of the version 1532 : tool. (Still, since the master does two passes over the code for 1533 : CMB.make, the release number gets bumped twice when slaves are 1534 : attached. I don't know if this is worth fixing...) 1535 : 1536 : ---------------------------------------------------------------------- 1537 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1538 : mblume 1639 Date: 2004/09/30 10:55:00 CDT 1539 : Tag: blume-20040930-version 1540 : Description: 1541 : 1542 : * Moved the "version" magic into its own little library under 1543 : mblume 1672 src/system/smlnj/internal. This avoids expensive reconstruction of 1544 : a stable src/compiler/core.cm. 1545 : mblume 1639 1546 : mblume 1672 * At the same time, structure CompilerVersion is now known as 1547 : structure SMLNJVersion. 1548 : mblume 1639 1549 : * Arranged for the version tool to NOT kick in when rebuilding the system 1550 : (makeml -rebuild, fixpt). Otherwise one would never reach a fixpoint. 1551 : Also, loading the versiontool does not work when rebuilding the system 1552 : because CM is not properly initialized at that time. 1553 : 1554 : ---------------------------------------------------------------------- 1555 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1556 : mblume 1638 Date: 2004/09/29 14:00:00 CDT 1557 : Tag: blume-20040929-autoversion 1558 : Description: 1559 : 1560 : Implemented some CM magic to have 1561 : file src/compiler/TopLevel/main/version.sml 1562 : generated automagically. 1563 : The version is taken from two files: config/version and config/release. 1564 : The first is expected to contain a two-part version number such as 110.49. 1565 : The second should contain a single number, but it may be missing. 1566 : 1567 : If the environment variable VERSIONTOOL_BUMP_RELEASE is defined at the 1568 : time the version tool is loaded (which is the first time you say CMB.make), 1569 : then the tool will increment the value stored in config/release every 1570 : time CMB.make is invoked. 1571 : 1572 : The binfile format is now insensitive to anything beyond the first 1573 : two components of a version number, so bumping the release does not render 1574 : binfiles incompatible. Auto-bumping can be used to keep track of versions 1575 : during development without invalidating existing binfiles. 1576 : 1577 : In any case, every CMB.make updates the date information in version.sml. 1578 : (This is the date that is printed in the banner.) 1579 : 1580 : ---------------------------------------------------------------------- 1581 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1582 : mblume 1634 Date: 2004/09/28 10:53:00 CDT 1583 : Tag: blume-20040928-controls 1584 : Description: 1585 : 1586 : Some cleanup of the controls code. 1587 : 1588 : ---------------------------------------------------------------------- 1589 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1590 : mblume 1633 Date: 2004/09/27 22:08:00 CDT 1591 : Tag: blume-20040927-controls 1592 : Description: 1593 : 1594 : Added two pieces of functionality to the Controls interface: 1595 : 1596 : 1. val save'restore: 'a control -> unit -> unit 1597 : 1598 : grabs the current value of the control in stage 1 and restores it 1599 : in stage 2. 1600 : 1601 : 2. val set' : 'a control * 'a -> unit -> unit 1602 : 1603 : stores the given value into the control in stage 2 (i.e., delayed) 1604 : but does all error checking in stage 1. 1605 : (This is for string controls that need to do parse their argument -- 1606 : something that might fail. In some cases, notably in CM, one 1607 : already knows the intended argument but wants to delay the actual 1608 : assignment until a time when error recovery would be more difficult.) 1609 : 1610 : Changed the handling of controls in tool arguments to classes "sml" and 1611 : "lazysml": 1612 : - use Controls.save'restore as a more robust way of restoring the 1613 : old value (in particular: without having to re-parse the string) 1614 : - use controls to handle the "overload" keyword in the init group 1615 : (I believe this change actually fixes a long-standing obscure bug.) 1616 : 1617 : ---------------------------------------------------------------------- 1618 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1619 : mblume 1632 Date: 2004/09/27 17:00:00 CDT 1620 : Tag: blume-20040927-lazysml 1621 : Description: 1622 : 1623 : Added a new tool class called "lazysml" to CM's tool chest. The only 1624 : difference to "sml" is that compilation is done with Control.lazysml 1625 : set to true. A source of class "lazysml" is automatically recognized 1626 : by a file name suffix of ".lml". 1627 : 1628 : In addition to the above feature, the original class "sml" now also 1629 : supports a tool argument "lazy" which has the same effect. As a 1630 : result, the following three lines are equivalent: 1631 : 1632 : foo.sml : lazysml 1633 : foo.sml : sml (lazy) 1634 : foo.sml (lazy) 1635 : 1636 : The setting goes into effect both during parsing and during 1637 : compilation. The original setting is restored right after parsing and 1638 : after compilation, respectively. 1639 : 1640 : In addition to all the above, there is also a general mechanism to set 1641 : ANY of the "controls" that are available at the command line via 1642 : "-C..." on a per-sml-file basis. The same rules that apply for "lazy" 1643 : apply as well. (In fact, "lazy" is implemented as a special case of 1644 : the general mechanism.) 1645 : 1646 : The .cm file syntax uses a new keyword tool argument called "with". 1647 : There are several ways of indicating the desired settings: 1648 : 1649 : foo.sml (with:parser.quotations=true) 1650 : foo.sml (with:(name:parser.quotations value:true)) 1651 : foo.sml (with:(name:name1 value:value1 name:name2 value:value2 ...)) 1652 : foo.sml (with:(name1=value1 name2=value2 ...)) 1653 : foo.sml (with:(name1=value1 name:name2 value:value2 name3=value3 ...)) 1654 : 1655 : etc. 1656 : 1657 : Another possible abbreviation is to leave out the =v or value:v part 1658 : if the name refers to a boolean control (in which case the value is 1659 : taken to be true). Thus, one could get lazy sml also by saying: 1660 : 1661 : foo.sml (with:parser.lazy-keyword=true) 1662 : foo.sml (with:parser.lazy-keyword) 1663 : foo.sml (with:(name:parser.lazy-keyword value:true)) 1664 : foo.sml (with:(name:parser.lazy-keyword)) 1665 : 1666 : ---------------------------------------------------------------------- 1667 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1668 : mblume 1631 Date: 2004/09/24 16:22:00 CDT 1669 : Tag: blume-20040924-ppc-long-branch 1670 : Description: 1671 : 1672 : Turned message about "emiting long form of branch" off by default. 1673 : Added a control flag to turn it back on when desired. 1674 : 1675 : ---------------------------------------------------------------------- 1676 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1677 : mblume 1630 Date: 2004/09/24 16:05:00 CDT 1678 : Tag: blume-20040924-rounding 1679 : Description: 1680 : 1681 : Applied patch for setting rounding modes under Mac OS X. Thanks to 1682 : Melissa O'Neill for providing the code! 1683 : 1684 : ---------------------------------------------------------------------- 1685 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1686 : mblume 1629 Date: 2004/09/23 17:30:00 CDT 1687 : Tag: blume-20040923-envvars 1688 : Description: 1689 : 1690 : 1. Changed definition of type ControlRegistry.registry_tree to 1691 : include control_info (i.e., the name of the controlling environment 1692 : variable). 1693 : 1694 : 2. Added command-line flags -e and -E to print the names of environment 1695 : variables that can be used to control internal settings. 1696 : (This uses the new API mentioned in 1.) 1697 : 1698 : ---------------------------------------------------------------------- 1699 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1700 : mblume 1622 Date: 2004/09/13 16:50:00 CDT 1701 : Tag: Release_110_49 1702 : Description: 1703 : 1704 : New working version (110.49). NEW BOOTFILES! 1705 : 1706 : ---------------------------------------------------------------------- 1707 : mblume 1621 Name: Matthias Blume 1708 : Date: 2004/09/13 16:20:00 CDT 1709 : Tag: blume-20040913-config-mlrisc 1710 : Description: 1711 : 1712 : Put target "mlrisc" back into the default list. 1713 : (There is no harm in having it, and some users have expressed their 1714 : wish to have "mlrisc" included by default.) 1715 : 1716 : ---------------------------------------------------------------------- 1717 : jhr 1620 Name: John Reppy 1718 : Date: 2004/09/13 1719 : Tag: jhr-20040913-signals 1720 : Description: 1721 : 1722 : Fixed the signal masking code to properly nest mask/unmask operations 1723 : on a per-signal basis. 1724 : 1725 : ---------------------------------------------------------------------- 1726 : mblume 1619 Name: Matthias Blume (blume (at) tti - c (dot) org) 1727 : Date: 2004/09/08 13:20:00 CDT 1728 : Tag: blume-20040908-heap-magic 1729 : Description: 1730 : 1731 : Bumped the heap macig number to 0x09082004 to account for the changed 1732 : layout of the ML frame under MacOS X. 1733 : 1734 : ---------------------------------------------------------------------- 1735 : allenleung 1618 Name: Allen Leung (leunga (at) reservoir (dot) com) 1736 : Date: 2004/09/03 11:26:00 EST 1737 : Tag: leunga-20040903-cygwin-install 1738 : Description: 1739 : 1740 : Added a patch to _arch-n-opsys to enable the Cygwin runtime. 1741 : The Cygwin runtime is turned on by setting the environment 1742 : variable SMLNJ_CYGWIN_RUNTIME to 1. 1743 : 1744 : ---------------------------------------------------------------------- 1745 : mblume 1615 Name: Matthias Blume (blume (at) tti - c (dot) org) 1746 : mblume 1617 Date: 2004/08/31 17:15:00 CDT 1747 : Tag: blume-20040831-core 1748 : Description: 1749 : 1750 : Added some exports to src/compiler/core.cm upon request by J. Joemann. 1751 : 1752 : ---------------------------------------------------------------------- 1753 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1754 : mblume 1616 Date: 2004/08/30 17:55:00 CDT 1755 : Tag: blume-20040830-installer 1756 : Description: 1757 : 1758 : Upon request by Johannes Joemann: 1759 : 1760 : - improved ML code of installer to fall back to coping when renaming 1761 : fails (i.e., when source and target are on different file systems); 1762 : the code compiles but has yet to be tested in anger 1763 : - removed mlrisc from list of default targets (config/targets) 1764 : 1765 : ---------------------------------------------------------------------- 1766 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1767 : mblume 1615 Date: 2004/08/27 17:20:00 CDT 1768 : Tag: blume-20040827-ptreql 1769 : Description: 1770 : 1771 : Added ptreql primop to structure InlineT (upon request from Larry 1772 : Paulson). 1773 : 1774 : ---------------------------------------------------------------------- 1775 : allenleung 1613 Name: Allen Leung (leunga (at) reservoir (dot) com) 1776 : allenleung 1614 Date: 2004/08/15 21:21:00 EST 1777 : Tag: leunga-110_48-udgraph 1778 : Description: 1779 : 1780 : Another bug fix from Carl Hauser: 1781 : 1782 : diff /net/niflab/smlnj48/src/MLRISC/graphs/udgraph.sml udgraph.sml 1783 : > 48c48 1784 : > < | rmv((e as (k,_))::es,L) = rmv(es,if k = i then es else 1785 : > e::L) 1786 : > --- 1787 : > > | rmv((e as (k,_))::es,L) = rmv(es,if k = i then L else e::L) 1788 : > Without this, any deletion of an edge in an undirected graph does severe 1789 : > violence to the graph. 1790 : 1791 : ---------------------------------------------------------------------- 1792 : Name: Allen Leung (leunga (at) reservoir (dot) com) 1793 : allenleung 1613 Date: 2004/08/10 23:35:00 EST 1794 : Tag: leunga-110_48-ppc 1795 : Description: 1796 : 1797 : The IBM/MacOS syntax switch on PPC was incorrectly swapped. 1798 : 1799 : ---------------------------------------------------------------------- 1800 : mblume 1602 Name: Matthias Blume (blume (at) tti - c (dot) org) 1801 : mblume 1615 Date: 2004/08/10 12:00:00 CDT 1802 : mblume 1602 Tag: Release_110_48 1803 : Description: 1804 : 1805 : New working version (110.48). NEW BOOTFILES! 1806 : 1807 : ---------------------------------------------------------------------- 1808 : allenleung 1599 Name: Allen Leung (leunga (at) reservoir (dot) com) 1809 : Date: 2004/08/09 12:21:00 EST 1810 : Tag: leunga-110_47-dijsktra 1811 : Description: 1812 : 1813 : Bug fix from Carl Hauser: 1814 : 1815 : blume 2155 single_source_shortest_paths in dijkstra.sml was observed to get wrong 1816 : allenleung 1599 answers (by comparing to single_source_shortest_paths in bellman-ford.sml). 1817 : 1818 : blume 2155 The problem is that following the expression A.update(dist,s,Num.zero) 1819 : allenleung 1599 it is necessary to update the priority queue using Q.decreaseWeight(Q,s). 1820 : 1821 : ---------------------------------------------------------------------- 1822 : mblume 1595 Name: Matthias Blume (blume (at) tti - c (dot) org) 1823 : Date: 2004/08/06 18:10:00 CDT 1824 : Tag: blume-20040806-cmdline 1825 : Description: 1826 : 1827 : Fiddled with handling of command-line options: 1828 : 1829 : * sml now quits after processing the command line 1830 : if -H, -S, -h, or -s appears as the last 1831 : command-line argument 1832 : * a new option -q terminates the session when encountered on 1833 : the command line; subsequent arguments will be ignored 1834 : * bug fixes: short (erroneous) arguments are no longer ignored 1835 : completely 1836 : 1837 : ---------------------------------------------------------------------- 1838 : allenleung 1593 Name: Allen Leung (leunga (at) reservoir (dot) com) 1839 : Date: 2004/08/04 18:17:00 EST 1840 : Tag: leunga-110_47-ppc-ibm-asm 1841 : Description: 1842 : 1843 : - Added minimal IBM assembly syntax support for PowerPC. 1844 : 1845 : blume 2155 - Cygwin: manually changed the file cygwin.def. Some exported symbols have 1846 : allenleung 1593 been altered in the runtime. We need an automatic way to keep the file 1847 : in sync. 1848 : 1849 : ---------------------------------------------------------------------- 1850 : mblume 1548 Name: Matthias Blume (blume (at) tti - c (dot) org) 1851 : mblume 1581 Date: 2004/08/04 14:00:00 CDT 1852 : Tag: Release_110_47 1853 : Description: 1854 : 1855 : New working version (110.47). NEW BOOTFILES! 1856 : 1857 : ---------------------------------------------------------------------- 1858 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1859 : mblume 1580 Date: 2004/08/03 14:25:00 CDT 1860 : Tag: blume-20040803-callingconv 1861 : Description: 1862 : 1863 : Added low-level support for choosing C calling conventions by 1864 : twiddling the type of rawccall. (See 1865 : src/compiler/Semant/types/cproto.sml for details.) 1866 : 1867 : ---------------------------------------------------------------------- 1868 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1869 : mblume 1579 Date: 2004/08/02 15:55:00 CDT 1870 : Tag: blume-20040802-backout 1871 : Description: 1872 : 1873 : Backed out of change to win32-filesys.c. The earlier patch to 1874 : get_file_time caused CM to produce files with the wrong time stamp. 1875 : 1876 : ---------------------------------------------------------------------- 1877 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1878 : mblume 1573 Date: 2004/08/02 14:45:00 CDT 1879 : Tag: blume-20040802-nlffi-win32 1880 : Description: 1881 : 1882 : Added NLFFI support for Win32, adapted from a patch provided by David 1883 : Hansel. This is currently completely untested. Also, the issue 1884 : concerning stdcall vs. ccall is still unresolved. 1885 : 1886 : ---------------------------------------------------------------------- 1887 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1888 : mblume 1572 Date: 2004/07/30 17:55:00 CDT 1889 : Tag: blume-20040730-various 1890 : Description: 1891 : 1892 : Gearing up towards 110.47... 1893 : 1894 : - various minor bugfixes to ml-nlffigen 1895 : - a beginning of a manual for nlffi 1896 : 1897 : - eliminated 'export name=value' in config/install.sh as this does 1898 : not work with certain versions of /bin/sh 1899 : (Thanks to David King at Motorola for catching this.) 1900 : 1901 : - several bugfixes provided or suggested by David Hansel at Reactive Systems: 1902 : - added a test for tm==NULL to gmtime.c and localtime.c 1903 : - applied patch for incorrect GetFileTime under win32 1904 : - toSeconds -> toMilliseconds in Win32/win32-process.sml 1905 : 1906 : ---------------------------------------------------------------------- 1907 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1908 : mblume 1557 Date: 2004/07/21 18:20:00 CDT 1909 : Tag: blume-20040721-nlffigen 1910 : Description: 1911 : 1912 : - Fixed minor issue in ml-nlffigen: Now generate structure T_foo 1913 : for a typedef to an incomplete type, but leave out the "typ" member. 1914 : (This is just for consistency.) 1915 : - Started to produce what is supposed to become better (i.e., comprehensive) 1916 : documentation of what ml-nlffigen does and produces. 1917 : 1918 : ---------------------------------------------------------------------- 1919 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1920 : mblume 1548 Date: 2004/07/14 16:25:00 CDT 1921 : Tag: blume-20040714-union 1922 : Description: 1923 : 1924 : Added C_UNION to c-calls/c-types.sml and updated the machinery 1925 : (ml-nlffigen, cproto.sml) that conveys C function interface 1926 : information to the code generator. 1927 : 1928 : However, the actual architecture-specific implementation of function 1929 : arguments and results that are C unions is still not implemented. 1930 : 1931 : ---------------------------------------------------------------------- 1932 : allenleung 1539 Name: Allen Leung (leunga (at) reservoir (dot) com) 1933 : allenleung 1546 Date: 2004/07/14 14:38:00 EST 1934 : Tag: leunga-110_46_1-ppc-lwzu 1935 : Description: 1936 : 1937 : Added these instructions to the PowerPC architecture: 1938 : LBZU(X), LHZU(X), LWZU(X), 1939 : blume 2155 STWU(X), STFDU, STFSU 1940 : 1941 : allenleung 1546 etc... 1942 : 1943 : Note: I haven't added their instruction encoding into the description. 1944 : 1945 : ---------------------------------------------------------------------- 1946 : Name: Allen Leung (leunga (at) reservoir (dot) com) 1947 : allenleung 1539 Date: 2004/07/13 15:04:00 EST 1948 : Tag: leunga-110_46_1-ppc-lwarx 1949 : Description: 1950 : 1951 : Added the two instructions LWARX and STWCX to the PowerPC 1952 : blume 2155 instruction set. 1953 : allenleung 1539 1954 : A (untested) rewrite of loop-structure.sml. The old version 1955 : is completely broken. 1956 : 1957 : ---------------------------------------------------------------------- 1958 : mblume 1479 Name: Matthias Blume (blume (at) tti - c (dot) org) 1959 : mblume 1537 Date: 2004/07/13 13:50:00 CDT 1960 : Tag: blume-20040713-nlffi 1961 : Description: 1962 : 1963 : - use paramAlloc to report c-calls with too many arguments 1964 : (for PPC version where parameter area is pre-allocated) 1965 : - added ccall_maxargspace to machspec (to implement the above) 1966 : - made "make" commend in CM's "make" tool configurable 1967 : - added option (default: on) for passing the name of the SML/NJ's "bin" 1968 : directory to "make"; the call looks like this: 1969 : 1970 : make SMLNJ_BINDIR= 1971 : 1972 : This can be used by the Makefile to, e.g., pick the "right" version 1973 : of ml-nlffigen. 1974 : - minor code tweaks 1975 : 1976 : ---------------------------------------------------------------------- 1977 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1978 : mblume 1532 Date: 2004/07/12 22:50:00 CDT 1979 : Tag: blume-110_46_1-macosx-nlffi 1980 : Description: 1981 : 1982 : NLFFI under Mac OS X now working (sort of). This is largely untested, 1983 : though. 1984 : 1985 : Note: 1. You have to make a new, clean build of the runtime system. 1986 : 2. There are new BOOTFILES, you have to use them! 1987 : (Doing the bootstrap process yourself would be *very* painful! 1988 : If you absolutely have to do it, build the system under 1989 : a different architecture and then cross-compile.) 1990 : 1991 : Version bumped to 110.46.1 to account for runtime data format changes. 1992 : 1993 : ---------------------------------------------------------------------- 1994 : Name: Matthias Blume (blume (at) tti - c (dot) org) 1995 : mblume 1515 Date: 2004/06/18 14:30:00 CDT 1996 : Tag: blume-20040618-unix 1997 : Description: 1998 : 1999 : Changed the implementation of structure Unix so that the same stream 2000 : is returned every time one of the {text,bin}{In,Out}streamOf functions 2001 : is invoked on the same proc. This is not what the spec currently 2002 : says -- although IMO it arguably should. (See discussion below.) 2003 : 2004 : ---------------------------------------------------------------------- 2005 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2006 : mblume 1507 Date: 2004/06/17 18:15:00 CDT 2007 : Tag: Release_110_46 2008 : Description: 2009 : 2010 : New working version (110.46). NEW BOOTFILES! 2011 : 2012 : ---------------------------------------------------------------------- 2013 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2014 : mblume 1506 Date: 2004/06/17 17:20:00 CDT 2015 : Tag: blume-20040617-timer-unix 2016 : Description: 2017 : 2018 : Changed the interface of structures Timer and Unix to match the most 2019 : recent Basis spec. 2020 : 2021 : In the case of Unix there still seems to be an open/weird issue: 2022 : 2023 : The {text,bin}{In,Out}streamOf functions are supposed to create 2024 : fresh streams whenever they are called -- as opposed to have them 2025 : return the same stream every time. This design is supposed to 2026 : prevent space leaks caused by proc values hanging on to streams. 2027 : 2028 : The reap function, on the other hand, is supposed to close the 2029 : streams. This cannot be done without having a handle on the 2030 : stream in proc after all... 2031 : 2032 : I took the liberty to implement the following stopgap solution: 2033 : 2034 : The proc value hangs on to the most recently created stream(s). 2035 : Reap closes those. If either or both of the two streams hadn't 2036 : been created at all yet, then reap will close the corresponding 2037 : file descriptors directly. 2038 : 2039 : PS: I don't understand the original space leak argument anymore. If 2040 : a proc hangs on to the imperative stream, then I/O operations on those 2041 : will advance the state of the cached stream and avoid the space leak. 2042 : 2043 : ---------------------------------------------------------------------- 2044 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2045 : mblume 1500 Date: 2004/05/28 16:45:00 CDT 2046 : Tag: blume-20040528-basis 2047 : Description: 2048 : 2049 : Added signature PACK_REAL and exported functor PrimIO. 2050 : 2051 : ---------------------------------------------------------------------- 2052 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2053 : mblume 1498 Date: 2004/05/25 16:00:00 CDT 2054 : Tag: blume-20040525-group-owner 2055 : Description: 2056 : 2057 : CM now ignores (but still accepts) the "owner" information in group 2058 : descriptions. The owner of a group is its next enclosing 2059 : library. Each group must have a unique owner. (There is a virtual 2060 : mblume 1505 "toplevel" library that owns groups which are not nested within a real 2061 : mblume 1498 library.) Previously, each group had to explicitly declare its owner, 2062 : and CM would check that such a declaration is correct. The new scheme 2063 : is to have CM check that for each group there is precisely one owning 2064 : library. 2065 : 2066 : The advantage of the new scheme is that the programmer no longer needs 2067 : to maintain the somewhat annoying owner information. The downside is 2068 : that CM cannot enforce the ownership rule across multiple runs of 2069 : CM.make. Fortunately, enclosing the same group in two different 2070 : libraries A and B which are not part of the same program does not 2071 : cause real problems. 2072 : 2073 : ---------------------------------------------------------------------- 2074 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2075 : mblume 1496 Date: 2004/05/20 16:00:00 CDT 2076 : Tag: blume-20040520-win32 2077 : Description: 2078 : 2079 : Made the win32 version work again. (Strangely, a misplaced comma had 2080 : slipped into win32-process.c which prevented the runtime from being 2081 : compiled correctly.) 2082 : 2083 : Also, included a minor addition to ml-build.bat analogous to what was 2084 : done in blume-20040519-ml-build. 2085 : 2086 : ---------------------------------------------------------------------- 2087 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2088 : mblume 1494 Date: 2004/05/19 22:10:00 CDT 2089 : Tag: blume-20040519-ml-build 2090 : Description: 2091 : 2092 : Arranged for ml-build to clean up after itself a little bit better. 2093 : The script generates a temporary SML source file and compiles it using 2094 : CM, so CM generates metadata (GUID, SKEL, objectfile) for it. It now 2095 : gets rid of those at the end, so they don't accumulate under .cm. 2096 : 2097 : This required a minor change to install.sh because the name of the 2098 : metadata directory (default: .cm) is actually configurable at 2099 : installation time. 2100 : 2101 : ---------------------------------------------------------------------- 2102 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2103 : mblume 1491 Date: 2004/05/18 15:50:00 CDT 2104 : Tag: blume-20040518-mkreader 2105 : Description: 2106 : 2107 : Added Posix.IO.mk{Bin,Text}{Reader,Writer} by lifting their respective 2108 : implementations from internal modules PosixBinPrimIO and PosixTextPrimIO. 2109 : 2110 : ---------------------------------------------------------------------- 2111 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2112 : mblume 1489 Date: 2004/05/11 14:35:00 CDT 2113 : Tag: blume-20040511-win32sock 2114 : Description: 2115 : 2116 : Added previously missing support for many socket-related functions 2117 : under win32. Thanks to David Hansel 2118 : for the voluminous patch! 2119 : 2120 : (I have not tested this patch under win32 yet.) 2121 : 2122 : mblume 1490 Here is David's e-mail: 2123 : 2124 : Hi, 2125 : 2126 : Attached to this email you find a diff against sml/nj 110.45 2127 : that will enable socket support under Windows. 2128 : 2129 : To apply the patch (using unix or cygwin) 2130 : 1) gunzip runtime.diff.gz 2131 : 2) "cd" into "src/runtime" in the source tree of a fresh 2132 : 110.45 installation. 2133 : 3) patch -p 1 < [your/path/to]runtime.diff 2134 : 2135 : blume 2155 The code compiles fine but has NOT yet been extensively tested. 2136 : I only ran a few tests for basic socket client functionality 2137 : (which worked fine). Especially the functions that use ioctl 2138 : mblume 1490 are not tested at all and might not work (see below). 2139 : 2140 : I implemented this since we want to move to a newer version of sml/nj 2141 : but need socket support in order to use it. This is the first time I 2142 : even had a look at the sml/nj source, so please review my changes 2143 : before making this part of the distribution! Here are a few issues 2144 : blume 2155 that I think might be better for someone to solve who is more 2145 : mblume 1490 familiar with the sml/nj source (and socket programming): 2146 : 2147 : - getnetbyaddr.c and getnetbyname.c will raise a "not implemented" 2148 : exception since I could not figure out what the windows equivalent 2149 : of these functions is 2150 : 2151 : - In sockets-osdep.h there are a some #include statements that are 2152 : only used in a few files that include sockets-osdep.h 2153 : 2154 : - In smlnj-sock-lib.c, function init_fn() calls WSAStartup() but 2155 : does not process its return value since I don't know how to 2156 : report an error upwards. 2157 : 2158 : - It would probably be good to have a call to WSACleanup() when 2159 : blume 2155 the library is unloaded (if there is such a possibility). 2160 : mblume 1490 Otherwise I think Windows will take care of this automatically 2161 : when the process finishes. 2162 : 2163 : - I used ioctlsocket() as a replacement for ioctl() but I have 2164 : no idea if that is actually the proper replacement on Windows. 2165 : 2166 : - All these issues are marked in the code by "FIXME" comments. 2167 : 2168 : blume 2155 We use sml/nj extensively in our products and are quite happy 2169 : with it. I hope this contribution will help you. 2170 : mblume 1490 2171 : Keep up the good work! 2172 : 2173 : David 2174 : 2175 : mblume 1489 ---------------------------------------------------------------------- 2176 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2177 : mblume 1488 Date: 2004/05/11 14:20:00 CDT 2178 : Tag: blume-20040511-installml 2179 : Description: 2180 : 2181 : Fixed two bugs in installml script. (Thanks to Vesa A. Norrman for 2182 : the patch.) 2183 : 2184 : ---------------------------------------------------------------------- 2185 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2186 : mblume 1487 Date: 2004/05/11 14:05:00 CDT 2187 : Tag: blume-20040511-nlffi-netbsd 2188 : Description: 2189 : 2190 : Added support for nlffi under netbsd. (Thanks to Vesa A. Norrman for 2191 : the patch.) 2192 : 2193 : ---------------------------------------------------------------------- 2194 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2195 : mblume 1486 Date: 2004/05/11 12:05:00 CDT 2196 : Tag: blume-20040511-exports 2197 : Description: 2198 : 2199 : As per request by Adam Chlipala , extended various 2200 : export lists in compiler-related .cm-files. 2201 : 2202 : ---------------------------------------------------------------------- 2203 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2204 : mblume 1485 Date: 2004/05/11 11:35:00 CDT 2205 : Tag: blume-20040511-allsource 2206 : Description: 2207 : 2208 : The installer now honors the "src-smlnj" target again, although its meaning 2209 : has changed from "all sources required for the compiler" to "all sources 2210 : the installer knows about". In other words, if you enable "src-smlnj" 2211 : in the "targets" file, then the installer will pull in sources for 2212 : everything. (Notice that this refers to source code only. Compiled 2213 : code is still only installed for modules that were requested explicitly 2214 : or which are required for other modules that were requested explicitly.) 2215 : 2216 : ---------------------------------------------------------------------- 2217 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2218 : mblume 1482 Date: 2004/04/23 17:40:00 CDT 2219 : Tag: blume-20040423-ieee-scan 2220 : Description: 2221 : 2222 : Fixed IEEEReal.scan (and .fromString) so that if there is an overflow 2223 : in the exponent calculation we get INF or ZERO (depending on the mantissa 2224 : and the sign of the exponent). 2225 : 2226 : ---------------------------------------------------------------------- 2227 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2228 : mblume 1480 Date: 2004/04/23 10:40:00 CDT 2229 : Tag: blume-20040423-ml-build 2230 : Description: 2231 : 2232 : The ml-build script now terminates with a non-0 status when something 2233 : goes wrong. 2234 : 2235 : ---------------------------------------------------------------------- 2236 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2237 : mblume 1479 Date: 2004/04/22 16:35:00 CDT 2238 : Tag: blume-20040422-Option 2239 : Description: 2240 : 2241 : Made exception Option to be the same as exception Option.Option 2242 : (as it should be). 2243 : 2244 : ---------------------------------------------------------------------- 2245 : allenleung 1468 Name: Allen Leung (leunga (at) reservoir (dot) com) 2246 : Date: 2004/03/19 14:40:00 EST 2247 : Tag: leunga-20040319-cygwin-nlffi 2248 : Description: 2249 : 2250 : Fixed the runtime so that ml-nlffi-lib runs on the cygwin version 2251 : of SML/NJ. The problem is that 2252 : 2253 : lib = dlopen(NULL, ...) 2254 : f = dlsym(lib, "malloc"); 2255 : 2256 : blume 2155 does not work on Windows unless we explicitly export symbols 2257 : such as 'malloc' during linking. We fixed this by explicitly 2258 : allenleung 1468 exporting the required symbols with the magic gcc incantation: 2259 : 2260 : -Wl,--export-all cygwin.def 2261 : 2262 : where cygwin.def is a file containing all the symbols that 2263 : blume 2155 we wish to export. 2264 : allenleung 1468 2265 : blume 2155 I suspect this is a Windows problem and we'll have to 2266 : do the same (somehow with windows compilers) when 2267 : allenleung 1468 we build the native win32 version with the system 2268 : blume 2155 calls LoadLibrary/GetProcAddress. 2269 : allenleung 1468 2270 : ---------------------------------------------------------------------- 2271 : mblume 1384 Name: Matthias Blume (blume (at) tti - c (dot) org) 2272 : mblume 1465 Date: 2004/03/04 16:35:00 CST 2273 : Tag: blume-20040304-intinf-fmt 2274 : Description: 2275 : 2276 : Fixed problem with IntInf.fmt (sign would show up on the right instead 2277 : of on the left for BIN, OCT, and HEX). 2278 : 2279 : ---------------------------------------------------------------------- 2280 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2281 : mblume 1464 Date: 2004/03/04 11:25:00 CST 2282 : Tag: blume-20040304-symlinks 2283 : Description: 2284 : 2285 : Fixed problem with installer script (unix only) where bin/ml-yacc and 2286 : friends pointed (via symlinks) to absolute locations instead of just 2287 : .run-sml. This was reported by Vesa A Norrman. 2288 : 2289 : ---------------------------------------------------------------------- 2290 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2291 : mblume 1455 Date: 2004/02/13 14:50:00 CST 2292 : Tag: Release_110_45 2293 : Description: 2294 : 2295 : New working version (110.45). New bootfiles. 2296 : 2297 : ---------------------------------------------------------------------- 2298 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2299 : mblume 1448 Date: 2004/01/26 15:15:15 CST 2300 : Tag: blume-20040126-toplevel 2301 : Description: 2302 : 2303 : Improved handling of exceptions at the interactive toplevel. 2304 : 2305 : ---------------------------------------------------------------------- 2306 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2307 : Date: 2004/01/26 11:25:00 2308 : mblume 1446 Tag: blume-20040126-app 2309 : Description: 2310 : 2311 : Type of top-level "app" corrected. 2312 : mblume 1447 Added code for setting vp_limitPtrMask to Win32-specific runtime. 2313 : mblume 1446 2314 : ---------------------------------------------------------------------- 2315 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2316 : mblume 1427 Date: 2003/11/18 17:10 CST 2317 : Tag: blume-20031118-basis-fiddle 2318 : Description: 2319 : 2320 : - changed Timer interface to what might become the spec 2321 : - POSIX_FLAGS -> BIT_FLAGS according to spec 2322 : - some other minor discrepancies wrt. spec eliminated 2323 : 2324 : ---------------------------------------------------------------------- 2325 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2326 : mblume 1414 Date: 2003/11/06 12:00:00 CST 2327 : Tag: Release_110_44 2328 : Description: 2329 : 2330 : New working version (110.44). New bootfiles. 2331 : 2332 : ---------------------------------------------------------------------- 2333 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2334 : mblume 1411 Date: 2003/11/04 11:50:00 CST 2335 : Tag: blume-20031104-move-libraries 2336 : Description: 2337 : 2338 : Eliminated the "dont_move_libraries" directive in config/targets. 2339 : (The mechanism was broken and could not be fixed easily. Moreover, 2340 : there does not seem to be any reason not to move all libraries into 2341 : lib during installation. I originally implemented this directive as a 2342 : backward-compatibility feature when I first introduced the new CM. 2343 : Now that things have been stable for a long time and going back to the 2344 : old CM is not an option, there is no reason to keep it around.) 2345 : 2346 : ---------------------------------------------------------------------- 2347 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2348 : mblume 1409 Date: 2003/11/03 16:00:00 CST 2349 : Tag: blume-20031103-installdir 2350 : Description: 2351 : 2352 : Made installer honor INSTALLDIR variable again. (Thanks to Chris 2353 : Richards for pointing out the problem and providing the solution.) 2354 : 2355 : ---------------------------------------------------------------------- 2356 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2357 : mblume 1400 Date: 2003/10/01 17:05:00 CDT 2358 : Tag: blume-20031001-lal-mlrisc 2359 : Description: 2360 : 2361 : MLRISC bug fix from Lal. 2362 : 2363 : ---------------------------------------------------------------------- 2364 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2365 : mblume 1399 Date: 2003/09/30 16:10:00 CDT 2366 : Tag: blume-20030930-primio-bat 2367 : mblume 1398 Description: 2368 : 2369 : 1. Added openVector, nullRd, and nullWr to PRIM_IO. 2370 : 2. Improved .bat files (for Win32 port) to make things work under Win95. 2371 : (thanks to Aaron S. Hawley for this one) 2372 : 2373 : ---------------------------------------------------------------------- 2374 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2375 : mblume 1395 Date: 2003/09/26 16:05:00 CDT 2376 : Tag: blume-20030926-wrappriv 2377 : Description: 2378 : 2379 : Added missing wrapper for privilege "primitive" in$smlnj/viscomp/core.cm. 2380 : 2381 : ---------------------------------------------------------------------- 2382 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2383 : mblume 1394 Date: 2003/09/26 15:00:00 CDT 2384 : Tag: blume-20030926-110_43_3 2385 : Description: 2386 : 2387 : - additional cleanup 2388 : - version number bump, NEW BOOTFILES 2389 : 2390 : ---------------------------------------------------------------------- 2391 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2392 : mblume 1393 Date: 2003/09/26 12:00:00 CDT 2393 : Tag: blume-20030926-ppautoload 2394 : Description: 2395 : 2396 : I modified the read-eval-print loop so that the autoloader gets 2397 : invoked whenever the prettyprinter tries to look up a symbol that 2398 : is not currently defined in the toplevel environment but which 2399 : appears in CM's autoload registry. As a result, we see far fewer of 2400 : those ?.Foo.Bar.xxx names in the prettyprinter's output. 2401 : 2402 : In addition to this I tried to clean up some pieces of the Basis 2403 : implementation (e.g., Socket, Word8Array) in order to prevent other 2404 : instances of these ?.Foo.Bar.xxx names from being printed. 2405 : 2406 : The mechanism that picks names for types still needs some work, though. 2407 : (Right now it seems that if there is a type A.t which is defined to 2408 : mblume 1394 be B.u, but B is unavailable at toplevel, then A.t gets printed as 2409 : "?.B.u" although the perhaps more sensible solution would be to use 2410 : mblume 1393 "A.t" in this case. In other words, the prettyprinter should follow 2411 : a chain of DEFtycs not farther than there are corresponding toplevel 2412 : names in the current environment.) 2413 : 2414 : ---------------------------------------------------------------------- 2415 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2416 : mblume 1391 Date: 2003/09/24 16:31:00 CDT 2417 : Tag: blume-20030924-installer 2418 : Description: 2419 : 2420 : Another installer tweak: All the ML code for the installer is now 2421 : compiled during CMB.make and put into a little library called 2422 : $smlnj/installer.cm. The installation then simply invokes 2423 : 2424 : sml -m$smlnj/installer.cm 2425 : 2426 : and everything happens automagically. 2427 : 2428 : Win32: ML code senses value of environment variable SMLNJ_HOME. 2429 : Unix: ML code senses values of environment variables ROOT, CONFIGDIR, 2430 : and BINDIR. 2431 : 2432 : The new scheme guarantees that the ML code responsible for the installation 2433 : is in sync with the APIs of the main system. Also, the installer is 2434 : somewhat faster because the installer script is precompiled. 2435 : 2436 : ---------------------------------------------------------------------- 2437 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2438 : mblume 1390 Date: 2003/09/24 15:35:00 CDT 2439 : Tag: blume-20030924-synsock 2440 : Description: 2441 : 2442 : Added a signature SYNCHRONOUS_SOCKET to basis.cm. This is like SOCKET 2443 : but excludes all non-blocking operations. Defined SOCKET (in Basis) 2444 : and CML_SOCKET in terms of SYNCHRONOUS_SOCKET. Removed superfluous 2445 : implementations of non-blocking operations from CML's Socket 2446 : structure. 2447 : 2448 : ---------------------------------------------------------------------- 2449 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2450 : mblume 1389 Date: 2003/09/24 15:10:05 CDT 2451 : Tag: blume-20030924-sockets 2452 : Description: 2453 : 2454 : 1. Fixed SOCKET API and implementation to match Basis spec. 2455 : This required changing the internal representation of sockets to one 2456 : that remembers (for each socket file descriptor) whether it is currently 2457 : blocking or non-blocking. This state is maintained lazily (i.e., a system 2458 : call is made only if the state actually needs to change). 2459 : 2460 : 2. OS-specific details of sockets were moved into separate files, thus 2461 : making it possible to unify the bulk of the socket implementations 2462 : between Unix and Win32. 2463 : 2464 : 3. CML's socket API changed accordingly. 2465 : (Note that we need to remove non-blocking functions from this API 2466 : since they are redundant in the case of CML!) 2467 : 2468 : 4. CML's socket implementation now makes use of non-blocking functions 2469 : provided by Basis, thus removing all OS-dependent code from this part 2470 : of CML. 2471 : 2472 : 5. Changed Real64.precision from 52 to 53. Minor cleanup in Real64 code. 2473 : 2474 : ---------------------------------------------------------------------- 2475 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2476 : mblume 1387 Date: 2003/09/22 12:10:00 CDT 2477 : mblume 1388 Tag: blume-20030922-110_43_2 2478 : mblume 1387 Description: 2479 : 2480 : Made a new interim version and bootfiles for developer's bootstrapping 2481 : convenience. 2482 : 2483 : 110.43.2 -- NEW BOOTFILES 2484 : 2485 : ---------------------------------------------------------------------- 2486 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2487 : mblume 1385 Date: 2003/09/19 15:55:00 CDT 2488 : Tag: blume-20030919-cmdir 2489 : Description: 2490 : 2491 : 1. new-install.sh -> install.sh 2492 : 2. changed default CM "metadata" directory name to ".cm" (instead of "CM") 2493 : 3. tweaked installer so that another name instead of .cm can be chosen 2494 : at install time (by setting the CM_DIR_ARC environment variable 2495 : during installation); once installation is complete, the name is 2496 : fixed 2497 : 2498 : ---------------------------------------------------------------------- 2499 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2500 : mblume 1384 Date: 2003/09/18 16:00:00 CDT 2501 : Tag: blume-20030918-110_43_1 2502 : Description: 2503 : 2504 : Made a new interim version and bootfiles for developer's bootstrapping 2505 : convenience. 2506 : 2507 : 110.43.1 -- NEW BOOTFILES 2508 : 2509 : ---------------------------------------------------------------------- 2510 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2511 : mblume 1383 Date: 2003/09/18 15:20:00 CDT 2512 : Tag: blume-20030918-misc 2513 : Description: 2514 : 2515 : 1. Exported fractionsPerSecond etc. from TimeImp (but not from Time as 2516 : this seems to be controversial at the moment) and used those in 2517 : Posix.ProcEnv.times. 2518 : 2519 : 2. Added Time.{from,to}Nanoseconds to Time. 2520 : 2521 : 3. Improved Real.{from,to}LargeInt by avoiding needless calculations. 2522 : For example, fromLargeInt never needs to look at more than 3 "big 2523 : digits" to get its 53 bits of precision. 2524 : 2525 : ---------------------------------------------------------------------- 2526 : mblume 1384 Name: Matthias Blume (blume (at) tti - c (dot) org) 2527 : mblume 1381 Date: 2003/09/17 16:30:00 CDT 2528 : Tag: blume-20030917-real32-slices 2529 : Description: 2530 : 2531 : Added an entry to the primitive environment 2532 : (compiler/Semant/statenv/prim.sml) for int32->real64 conversion and 2533 : added code to compiler/CodeGen/main/mlriscGen.sml to implement it. 2534 : 2535 : Removed some of the "magic" constants in real64.sml and replaced them 2536 : with code that generates these values from their corresponding 2537 : integer counterparts. 2538 : 2539 : Made all(?) the slice-related changes to the Basis and made everything 2540 : compile again... 2541 : 2542 : ---------------------------------------------------------------------- 2543 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2544 : mblume 1375 Date: 2003/09/15 17:45:00 CDT 2545 : Tag: blume-20030915-rbase 2546 : Description: 2547 : 2548 : Fixed bug in Real.fromLargeInt. 2549 : 2550 : ---------------------------------------------------------------------- 2551 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2552 : mblume 1369 Date: 2003/09/13 18:11:00 CDT 2553 : Tag: blume-20030913-libinstall 2554 : Description: 2555 : 2556 : Minor bugfix in config/libinstall (set anchor with path to 2557 : standalone tool after installing it, otherwise libraries that 2558 : need ml-lex or ml-yacc won't compile the first time the installer 2559 : runs). 2560 : 2561 : ---------------------------------------------------------------------- 2562 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2563 : mblume 1368 Date: 2003/09/12 11:45:00 CDT 2564 : Tag: blume-20030912-various 2565 : Description: 2566 : 2567 : - fixed bug in Real.toLargeInt 2568 : - fixed bug in Posix.ProcEnv.times 2569 : - changed inputLine functions to return an option 2570 : - minor installer improvements / bugfixes 2571 : - changed default @SMLalloc parameter for x86/celeron to 64k 2572 : 2573 : ---------------------------------------------------------------------- 2574 : Name: Matthias Blume (blume (at) tti - c (dot) org) 2575 : mblume 1356 Date: 2003/09/09 22:00:00 CDT 2576 : Tag: Release_110_43 2577 : Description: 2578 : 2579 : New working release 110.43. New bootfiles. 2580 : 2581 : ---------------------------------------------------------------------- 2582 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2583 : mblume 1354 Date: 2003/09/09 19:20:00 CDT 2584 : Tag: blume-20030909-installer 2585 : Description: 2586 : 2587 : Rewrote large parts of config/install.sh in SML (config/libinstall.sml). 2588 : Modified config/install.bat to take advantage of it. Also modified 2589 : config/install.sh (and called it config/new-install.sh) to take advantage 2590 : of it on Unix systems. (The SML code is (supposed to be) platform- 2591 : independent.) 2592 : 2593 : The installer can now install everything under Win32 2594 : as well as under *nix as long as it compiles. 2595 : 2596 : Other changes: 2597 : 2598 : - made CML compile again under Win32 2599 : - made eXene compile under Win32 (by providing a fake structure UnixSock 2600 : and by using OS.Process.getEnv instead of Posix.ProcEnv.getenv) 2601 : - fixed a bug in nowhere: it assumed that type OS.Process.status is the 2602 : same as type int; under Win32 it isn't 2603 : - fixed some slice-related problems in the win32-specific parts of CML 2604 : - added a functor argument "sameVol" to os-path-fn.sml in the Basis 2605 : (under Win32, the volume name is case-insensitive, and the 2606 : OS.Path code compares volume names for equality) 2607 : 2608 : ---------------------------------------------------------------------- 2609 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2610 : mblume 1353 Date: 2003/09/08 11:55:00 CDT 2611 : Tag: blume-20030908-fullpath 2612 : Description: 2613 : 2614 : Made Win32 version of OS.FileSys.fullPath return current directory 2615 : when given an empty string. This is what the spec says, and incidentally, 2616 : CM depends on it. (CM otherwise goes into an infinite loop in certain 2617 : cases when presented with the name of a non-existing .cm file.) 2618 : 2619 : ---------------------------------------------------------------------- 2620 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2621 : mblume 1350 Date: 2003/09/04 16:30:00 CDT 2622 : mblume 1352 Tag: blume-20030905-slices-etc 2623 : mblume 1350 Description: 2624 : 2625 : 1. Changed interface to vectors and arrays in Basis to match 2626 : (draft) Basis spec. 2627 : 2. Added signatures and implementations of slices according to 2628 : Basis spec. 2629 : 3. Edited source code throughout the system to make it compile again 2630 : under 1. and 2. (In some cases code had to be added to have it 2631 : match the new signatures.) 2632 : 4. MLRISC should be backward-compatible: the copies of the originals 2633 : of files that needed to change under 3. were retained, the .cm files 2634 : check the compiler version number and use old versions when 2635 : appropriate. 2636 : 5. Changed type of OS.FileSys.readDir and Posix.FileSys.readdir to 2637 : dirstream -> string option (in accordance with Basis spec). 2638 : 6. When generating code that counts lines, ml-lex used function 2639 : CharVector.foldli, taking advantage of its old interface. 2640 : This has been replaced with the corresponding code from 2641 : CharVectorSlice. (html-lex must be re-lexed!) 2642 : 7. BitArray in smlnj-lib/Util has been extended/modified to match the 2643 : new MONO_ARRAY signature. (Do we need BitArraySlice?) 2644 : 8. Removed temporary additions (fromInternal, toInternal) from the 2645 : (now obsolete) IntInf in smlnj-lib/Util. 2646 : 9. Cleaned up structure Byte. 2647 : 10. Added localOffset, scan, and fromString to Date (according to spec). 2648 : Cleaned/corrected implementation of Date. 2649 : (Still need to check for correctness; implement better canonicalizeDate.) 2650 : 11. Added "scan" to signature IEEE_REAL. 2651 : 12. Some improvements to IntInf [in particular: efficiency-hack for 2652 : mod and rem when second operand is 2 (for parity checks).] 2653 : 13. Changed representation of type Time.time, using a single IntInf.int 2654 : value counting microseconds. This considerably simplified the 2655 : implementation of structure Time. We now support negative time 2656 : values; scan and fromString handle signs. 2657 : 14. Functor PrimIO now takes two additional arguments (VectorSlice and 2658 : ArraySlice). 2659 : 2660 : ---------------------------------------------------------------------- 2661 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2662 : mblume 1347 Date: 2003/08/28 17:00:00 CDT 2663 : Tag: blume-20030828-intinf 2664 : Description: 2665 : 2666 : This is a major update which comes with a version number bump 2667 : (110.42.99 -- yes, we are really close to 110.43 :-), NEW BOOTFILES, 2668 : and an implementation of IntInf in the Basis. 2669 : 2670 : There are a fairly large number of related changes and updates throughout 2671 : the system: 2672 : 2673 : Basis: 2674 : - Implemented IntInf. 2675 : - Made LargeInt a projection of IntInf (by filtering through INTEGER). 2676 : mblume 1348 - Added some missing Real64 operations, most notably Real.toLargeInt. 2677 : mblume 1347 - Added FixedInt as a synonym for Int32. 2678 : 2679 : compiler: 2680 : * Added support for a built-in intinf type. 2681 : - literals 2682 : - pattern matching 2683 : - conversion shortcuts (Int32.fromLarge o Int.toLarge etc.) 2684 : - overloading on literals and operations 2685 : 2686 : This required adding a primitive type intinf, some additional 2687 : primops, and implementations for several non-trivial intinf 2688 : operations in Core. (The intinf type is completely abstract 2689 : to the compiler; all operations get delegated back to the Core.) 2690 : 2691 : * Intinf equality is handled by polyequal. However, the compiler 2692 : does not print its usual warning in this case (since polyequal 2693 : is the right thing to do there). 2694 : 2695 : * Improved the organization of structure InlineT. 2696 : 2697 : * A word about conversion primops: 2698 : If conversions involving intinf do not cancel out during 2699 : mblume 1348 CPS contract, then the compiler must insert calls to Core functions. 2700 : mblume 1347 Since all core access must be resolved already during the FLINT 2701 : translate phase, it would be too late a the time of CPS contract 2702 : mblume 1348 to add new Core calls. For this reason, conversion primops 2703 : mblume 1347 for intinf carry two arguments: 1. the numeric argument that 2704 : they are supposed to convert, and 2. the Core function that 2705 : can help with this conversion if necessary. If CPS contract 2706 : mblume 1348 eliminates a primop, then the associated Core function becomes 2707 : dead and goes away. Intinf conversion primops that do not get 2708 : eliminated by CPS contract get rewritten into calls of their 2709 : core functions by a separate, new phase. 2710 : mblume 1347 2711 : interactive system: 2712 : - Control.Print.intinfDepth controls max length of intinf constants 2713 : being printed. (Analogous to Control.Print.stringDepth.) 2714 : - Cleanup in printutil and pputil: got rid of unused stuff and 2715 : duplicates; replaced some of the code with code that makes better 2716 : use of library functionality. 2717 : 2718 : CM: 2719 : Bugfix: parse-errors in init group (system/smlnj/init/init.cmi) 2720 : are no longer silent. 2721 : 2722 : CKIT: 2723 : Fixed mismatched uses of Int32 and LargeInt. I always decided 2724 : in favor of LargeInt -- which is now the same as IntInf. 2725 : CKIT-knowledgable people should check whether this is what's 2726 : intended and otherwise change things back to using Int32 or 2727 : FixedInt. 2728 : 2729 : Throughout the code: 2730 : mblume 1348 Started using IntInf.int literals and built-in operations 2731 : mblume 1347 (e.g., comparison with 0) where this seems appropriate. 2732 : 2733 : 2734 : ---------------------------------------------------------------------- 2735 : macqueen 1343 Name: Dave MacQueen (dbm@cs.uchicago.edu) 2736 : Date: 2003/08/13 11:36:00 CDT 2737 : Tag: dbm-20030813-mcz-merge1 2738 : Description: 2739 : 2740 : Merging changes from the mcz-branch development branch into trunk. 2741 : These changes involve replacement of the emulated old prettyprinter 2742 : interface with direct use of the SML/NJ Lib PP library, and fixing 2743 : of a couple of bugs (895, 1186) relating to error messages. A new 2744 : prettyprinter for ast datatypes (Elaborator/print/ppast.{sig,sml}) 2745 : has been added. 2746 : 2747 : ---------------------------------------------------------------------- 2748 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2749 : mblume 1342 Date: 2003/08/11 15:45:00 CDT 2750 : Tag: blume-20030811-windows 2751 : Description: 2752 : 2753 : Version number bumped to 110.42.9. NEW BOOTFILES!!! 2754 : 2755 : http://smlnj.cs.uchicago.edu/dist/working/110.42.9/ 2756 : 2757 : This patch restores SML/NJ's ability to run under win32. There are a 2758 : number of changes, including fixes for several bugs that had gone 2759 : unnoticed until now: 2760 : 2761 : - uname "CYGWIN_NT*" is recognized as win32 (This is relevant only when 2762 : trying to run the win32 version from within cygwin.) 2763 : 2764 : - There are a number of simple .bat scripts that substitute for their 2765 : corresponding Unix shell-scripts. (See below.) 2766 : 2767 : - The internals of ml-build have been modified slightly. The main 2768 : difference is that instead of calling ".link-sml" (or link-sml.bat) 2769 : using OS.Process.system, the ML process delegates this task back 2770 : to the script. Otherwise problems arise in mixed environments such 2771 : as Cygwin where scripts look and work like Unix scripts, but 2772 : where OS.Process.system cannot run them. 2773 : 2774 : - In CM, the srcpath pickler used native pathname syntax -- which 2775 : is incorrect in the case of cross-compilation. The new pickle format 2776 : is independent of platform-specific naming conventions. 2777 : 2778 : - Path configuration files (such as lib/pathconfig) can now choose 2779 : between native and standard syntax. Placing a line of the form 2780 : 2781 : standard! 2782 : 2783 : into the file causes all subsequent paths to be interpreted using 2784 : CM standard pathname syntax (= Unix conventions); a line 2785 : 2786 : native! 2787 : 2788 : switches back to native style. This was needed so that 2789 : path config files can be written portably, see src/system/pathconfig. 2790 : 2791 : - Runtime system: 2792 : 2793 : - win32-filesys.c: get_file_time and set_file_time now 2794 : access modification time, not creation time. 2795 : 2796 : - I/O code made aware of new array representation. 2797 : 2798 : - Bug fixes in X86.prim.masm. 2799 : 2800 : - src/system/makeml made aware of win32. (For use under cygwin 2801 : and other Unix-environments for windows.) 2802 : 2803 : - In Basis, fixed off-by-one error in win32-io.sml (function vecF) 2804 : which caused BinIO.inputAll to fail consistently. 2805 : 2806 : .bat scripts: 2807 : 2808 : Windows .bat scripts assume that SMLNJ_HOME is defined. 2809 : 2810 : - sml.bat, ml-yacc.bat, ml-lex.bat: Driver scripts for standalone 2811 : applications (sml, ml-yacc, ml-lex). 2812 : - ml-build.bat: analogous to ml-build. 2813 : - config\install.bat: Analogous to config/install.sh. This requires 2814 : that SMLNJ_HOME is set and that Microsoft Visual C is ready to use. 2815 : (nmake etc. must be on the path, and vcvars32 must have been run.) 2816 : Moreover, sources for ml-lex and ml-yacc need to exist under src, 2817 : and the bootfile hierarchy must have been unpacked under 2818 : sml.boot.x86-win32. 2819 : The script is very primitive and does a poor job at error checking. 2820 : It only installs the base system, ml-lex, and ml-yacc. No other 2821 : libraries are being installed (i.e., you get only those that 2822 : are part of the compiler.) 2823 : - link-sml.bat: analogous to .link-sml, but not currently used 2824 : 2825 : Unrelated bug fixes: 2826 : 2827 : - ml-nlffigen now exports structures ST_* corresponding to incomplete 2828 : types. 2829 : - Added getDevice to PP/src/pp-debug-fn.sml. (Would not compile 2830 : otherwise.) 2831 : 2832 : ---------------------------------------------------------------------- 2833 : macqueen 1337 Name: Dave MacQueen (macqueen@cs.uchicago.edu) 2834 : Date: 2003/06/17 2835 : Tag: macqueen-20030617-bug895 2836 : Description: 2837 : 2838 : Modified compiler/Elaborator/print/pptype.sml to fix bug 895. 2839 : Tag will be used for new development branch (mcz-branch) for 2840 : use by MacQueen, (Lucasz) Zairek, and (George) Cao at uchicago. 2841 : 2842 : ---------------------------------------------------------------------- 2843 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2844 : mblume 1335 Date: 2003/05/27 16:55:00 CDT 2845 : Tag: blume-20030527-polyeq 2846 : Description: 2847 : 2848 : Tried to eliminated most cases of polymorphic equality. 2849 : 2850 : ---------------------------------------------------------------------- 2851 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2852 : mblume 1334 Date: 2003/05/21 17:45:00 CDT 2853 : Tag: blume-20030517-complete 2854 : Description: 2855 : 2856 : Two changes: 2857 : 2858 : 1. Added a flag for controlling whether non-exhaustive bindings will 2859 : be treated as errors (default is false). 2860 : 2. Cleaned up the *entire* source tree so that CMB.make goes through 2861 : without a single non-exhaustive match- or bind warning. 2862 : 2863 : ---------------------------------------------------------------------- 2864 : mblume 1368 Name: Matthias Blume (blume (at) tti - c (dot) org) 2865 : mblume 1332 Date: 2003/05/17 10:20:00 CDT 2866 : Tag: blume-20030517-absyn 2867 : Description: 2868 : 2869 : 1. Added cases for IF, WHILE, ANDALSO, and ORELSE to Absyn. 2870 : 2871 : This mainly affects the quality of error messages. However, some 2872 : of the code is now more straightforward than before. (Treatment of 2873 : the above four constructs in translate.sml is much simpler than 2874 : the "macro-expansion" that was going on before. Plus, the mach- 2875 : compiler no longer gets invoked just to be able to compile an 2876 : if-expression.) 2877 : 2878 : 2. The ErrorMsg.Error exception is now caught and absorbed by the 2879 : interactive loop. 2880 : 2881 : ---------------------------------------------------------------------- 2882 : allenleung 1327 Name: Allen Leung 2883 : Date: 2003/05/16 13:05:00 CDT 2884 : Tag: leunga-20030516-cygwin-runtime 2885 : Description: 2886 : 2887 : blume 2155 Ported the runtime system to cygwin, which uses the unix 2888 : allenleung 1327 x86-unix bin files. Missing/buggy features: 2889 : 2890 : blume 2155 o getnetbyname, getnetbyaddr: these functions seem to be missing in 2891 : allenleung 1327 the Cygwin library. 2892 : o Ctrl-C handling may be flaky. 2893 : o Windows system calls and Windows I/O are not supported. 2894 : 2895 : A new set of binfiles is located at: 2896 : 2897 : http://www.dorsai.org/~leunga/boot.x86-unix.tgz 2898 : 2899 : This is only needed for bootstrapping the cygwin version of smlnj. 2900 : Other x86 versions can use the existing binfiles. 2901 : 2902 : ---------------------------------------------------------------------- 2903 : mblume 1317 Name: Matthias Blume 2904 : Date: 2003/04/08 15:42:00 CDT 2905 : Tag: blume-20030408-listpair 2906 : Description: 2907 : 2908 : 1. Added a target 'mlrisc' to installer. 2909 : 2910 : 2. Added missing elements to structure ListPair. 2911 : 2912 : ---------------------------------------------------------------------- 2913 : leunga 1296 Name: Allen Leung 2914 : Date: 2003/01/07 10:40:00 EST 2915 : Tag: leunga-20030107-int-rem 2916 : Description: 2917 : 2918 : Fixed a bug in Int.rem(x,y) where y is a power of 2 on x86. 2919 : The arguments to the SUBL instruction were swapped. 2920 : 2921 : ---------------------------------------------------------------------- 2922 : blume 1229 Name: Matthias Blume 2923 : blume 1294 Date: 2002/12/12 16:25:00 EST 2924 : Tag: blume-20021212-risc-ra 2925 : Description: 2926 : 2927 : Fixed a serious bug in the rewrite code for FP spilling/reloading that 2928 : sent the RA into an infinite loop when floating point registers get 2929 : spilled. (Because of this bug, e.g., nucleic stopped compiling between 2930 : 110.37 and 110.38.) 2931 : There was another set of potential problems related to the handling of 2932 : MLRISC annotations (but those did not yet cause real problems, apparently). 2933 : 2934 : ---------------------------------------------------------------------- 2935 : Name: Matthias Blume 2936 : blume 1291 Date: 2002/12/06 22:40:00 EST 2937 : Tag: blume-20021206-cm-fileid 2938 : Description: 2939 : 2940 : Added a call of SrcPath.sync at the beginning of Parse.parse (in CM). 2941 : This fixes the problem of CM getting confused by files that suddenly 2942 : change their identity (e.g., by getting unlinked and recreated by some 2943 : text editor such as vi). There might be a better/cheaper/cleaner way 2944 : of doing this, but for now this will have to do. 2945 : 2946 : ---------------------------------------------------------------------- 2947 : Name: Matthias Blume 2948 : blume 1288 Date: 2002/10/28 09:50:00 EST 2949 : blume 2155 Tag: blume-20021028-typecheck 2950 : blume 1288 Description: 2951 : 2952 : Exported structure Typecheck from $smlnj/viscomp/core.cm. 2953 : 2954 : ---------------------------------------------------------------------- 2955 : Name: Matthias Blume 2956 : blume 1282 Date: 2002/10/17 09:10:00 EDT 2957 : blume 1279 Tag: Release_110_42 2958 : Description: 2959 : 2960 : blume 1282 In good old tradition, there has been a slight hiccup so that we have 2961 : to patch 110.42 after the fact. The old release tag has been replaced 2962 : (see below). 2963 : 2964 : The change solves a problem with two competing approaches the 2965 : configuration problem regarding MacOS 10.1 vs. MacOS 10.2 which got in 2966 : each other's way. 2967 : 2968 : This change only affects the runtime system code and the installer script. 2969 : (No new bootfiles.) 2970 : 2971 : ---------------------------------------------------------------------- 2972 : Name: Matthias Blume 2973 : Date: 2002/10/16 12:00:00 EDT 2974 : Tag: Release_110_42_removed 2975 : Description: 2976 : 2977 : blume 1279 New working release. New bootfiles. 2978 : 2979 : ---------------------------------------------------------------------- 2980 : Name: Matthias Blume 2981 : blume 1273 Date: 2002/10/10 13:10:00 EDT 2982 : Tag: blume-20021010-ppc-divs 2983 : Description: 2984 : 2985 : The mltree operator DIVS must be implemented with an overflow check on 2986 : the PPC because the hardware indicates divide-by-zero using "overflow" as 2987 : well. 2988 : 2989 : ---------------------------------------------------------------------- 2990 : Name: Matthias Blume 2991 : blume 1261 Date: 2002/07/23 11:45:00 2992 : Tag: blume-20020723-smlnj-home 2993 : Description: 2994 : 2995 : Sml now senses the SMLNJ_HOME environment variable. If this is set, 2996 : then the bin dir is assumed to be in$SMLNJ_HOME/bin and (unless 2997 : CM_PATHCONFIG is also set), the path configuration file is assumed 2998 : to be in $SMLNJ_HOME/lib/pathconfig. This way one can easily move 2999 : the entire tree to some other place and everything will "just work". 3000 : 3001 : (Companion commands such as ml-build and ml-makedepend also sense this 3002 : variable.) 3003 : 3004 : ---------------------------------------------------------------------- 3005 : Name: Matthias Blume 3006 : blume 1259 Date: 2002/07/12 21:19:00 EDT 3007 : Tag: blume-20020712-liveness 3008 : Description: 3009 : 3010 : Exported two useful "step" functions from liveness module (MLRISC). 3011 : 3012 : ---------------------------------------------------------------------- 3013 : Name: Matthias Blume 3014 : blume 1253 Date: 2002/07/05 16:00 EDT 3015 : Tag: Release_110_41 3016 : Description: 3017 : 3018 : New working release. New bootfiles. 3019 : 3020 : ---------------------------------------------------------------------- 3021 : Name: Matthias Blume 3022 : blume 1250 Date: 2002/07/05 10:25:00 EDT 3023 : Tag: blume-20020705-btimp 3024 : Description: 3025 : 3026 : Exported structure BTImp from$smlnj/viscomp/debugprof.cm so that 3027 : other clients can set up backtracing support. 3028 : 3029 : ---------------------------------------------------------------------- 3030 : Name: Matthias Blume 3031 : blume 1249 Date: 2002/06/25 17:23:00 EDT 3032 : Tag: blume-20020625-fpmax 3033 : Description: 3034 : 3035 : Fixed a bug in translation of INLMAX (and INLMIN) for the floating-point 3036 : case. (The sense of the isNaN test was reversed -- which made min and 3037 : max always return their first argument.) 3038 : 3039 : ---------------------------------------------------------------------- 3040 : Name: Matthias Blume 3041 : blume 1240 Date: 2002/06/11 3042 : Tag: blume-20020611-unixpath 3043 : Description: 3044 : 3045 : Back-ported OS.Path.{from,to}UnixPath from idlbasis-devel branch. 3046 : 3047 : ---------------------------------------------------------------------- 3048 : Name: Matthias Blume 3049 : blume 1238 Date: 2002/06/10 16:35:00 EDT 3050 : Tag: blume-20020610-ieeereal 3051 : Description: 3052 : 3053 : I back-ported my implementation of IEEEReal.fromString from the 3054 : idlbasis-devel branch so that we can test it. 3055 : 3056 : Another small change is that ppDec tries to give more information 3057 : than just "" in the case of functors. However, this code is 3058 : broken in some mysterious way if the functor's body's signature 3059 : has not been declared by ascription but gets inferred from the 3060 : implementation. This needs fixing... 3061 : 3062 : ---------------------------------------------------------------------- 3063 : Name: Matthias Blume 3064 : blume 1229 Date: 2002/05/31 3065 : Tag: blume-20020531-btrace-mode 3066 : Description: 3067 : 3068 : Resurrected SMLofNJ.Internals.BTrace.mode. (It accidentally fell by 3069 : the wayside when I switched over to using Controls everywhere.) 3070 : 3071 : ---------------------------------------------------------------------- 3072 : george 1222 Name: Lal George 3073 : Date: 2002/05/23 12:21:40 EDT 3074 : Tag: george-20020523-visual-labels 3075 : Description: 3076 : 3077 : Labels are now displayed in the graphical output to make 3078 : the fall-through and target blocks obvious. 3079 : 3080 : ---------------------------------------------------------------------- 3081 : blume 1204 Name: Matthias Blume 3082 : blume 1220 Date: 2002/05/22 11:03:00 EDT 3083 : Tag: blume-20020522-shrink 3084 : Description: 3085 : 3086 : John tweaked yesterday's fix for 1131 to handle an out-of-memory 3087 : situation that comes up when allocating huge arrays. 3088 : 3089 : ---------------------------------------------------------------------- 3090 : Name: Matthias Blume 3091 : blume 1215 Date: 2002/05/21 16:00:00 EDT 3092 : Tag: Release_110_40 3093 : Description: 3094 : 3095 : New working release (110.40). New bootfiles. 3096 : 3097 : [Also: John Reppy fixed GC bug 1131.] 3098 : 3099 : ---------------------------------------------------------------------- 3100 : Name: Matthias Blume 3101 : blume 1212 Date: 2002/05/21 12:35:00 EDT 3102 : Tag: blume-20020521-cmdoc 3103 : Description: 3104 : 3105 : CM documentation update. 3106 : 3107 : ---------------------------------------------------------------------- 3108 : Name: Matthias Blume 3109 : blume 1211 Date: 2002/05/21 10:55:00 EDT 3110 : Tag: blume-20020521-misc 3111 : Description: 3112 : 3113 : - John tweaked runtime to be silent on heap export (except when 3114 : GC messages are on). 3115 : - I added a few more things (cross-compiling versions of CMB) to 3116 : config/preloads (as suggestions). 3117 : 3118 : ---------------------------------------------------------------------- 3119 : Name: Matthias Blume 3120 : blume 1208 Date: 2002/05/20 22:25:00 EDT 3121 : Tag: blume-20020520-controls 3122 : Description: 3123 : 3124 : - Added ControlUtil structure to control-lib.cm. 3125 : - Use it throughout. 3126 : - Used Controls facility to define MLRISC controls (as opposed to 3127 : registering MLRISC control ref cells with Controls after the fact) 3128 : - Fixed messed-up controls priorities. 3129 : 3130 : * Removed again all the stuff from config/preloads that one wouldn't 3131 : be able to preload at the time the initial heap image is built. 3132 : (Many libraries, e.g., CML, do not exist yet at this time. The 3133 : only libraries that can be preloaded via config/preloads are those 3134 : that come bundled with the bootfiles.) 3135 : 3136 : ---------------------------------------------------------------------- 3137 : Name: Matthias Blume 3138 : blume 1204 Date: 2002/05/20 10:59:00 EDT 3139 : Tag: blume-20020520-preloads 3140 : Description: 3141 : 3142 : Added a lot of commented-out suggestions for things to be included 3143 : in config/preloads. 3144 : 3145 : ---------------------------------------------------------------------- 3146 : leunga 1203 Name: Allen Leung 3147 : Date: 2002/05/18 14:20:00 EDT 3148 : Tag: leunga-20020518-mdl 3149 : Description: 3150 : 3151 : o Made the mdl tool stuff compile and run again. 3152 : o I've disabled all the stuff that depends on RTL specifications; they 3153 : are all badly broken anyway. 3154 : 3155 : ---------------------------------------------------------------------- 3156 : blume 1201 Name: Matthias Blume 3157 : Date: 2002/05/17 16:49:00 EDT 3158 : Tag: blume-20020517-controls 3159 : Description: 3160 : 3161 : 0. John Reppy made several modifications to the SML/NJ library. 3162 : In particular, there is a shiny new controls-lib.cm. 3163 : 3164 : 1. Pushed new controls interface through compiler so that everything 3165 : compiles again. 3166 : 3167 : 2. Added FormatComb and FORMAT_COMB to the CML version of the 3168 : SML/NJ library (so that CML compiles again). 3169 : 3170 : 3. Modified init scripts because XXX_DEFAULT environment variables 3171 : are no longer with us. (Boot-time initialization is now done 3172 : using the same environment variables that are also used for 3173 : startup-time initialization of controls.) 3174 : 3175 : ---------------------------------------------------------------------- 3176 : george 1192 Name: Lal George 3177 : Date: 2002/05/15 09:20:10 EDT 3178 : Tag: george-20020515-pseudo-op-decls 3179 : Description: 3180 : 3181 : All pseudo-ops emitted before the first segment declaration 3182 : such as TEXT, DATA, and BSS directives are assumed to be global 3183 : declarations and are emitted first in the assembly file. This is 3184 : useful in a number of situations where one has pseudo-ops that are not 3185 : specific to any segment, and also works around the constraint that one 3186 : cannot have client pseudo-ops in the TEXT segment. 3187 : 3188 : Because no segment is associated with these declarations it is 3189 : an error to allocate any space or objects before the first segment 3190 : directive and an exception will be raised. However, we cannot make 3191 : this check for client pseudo-ops. 3192 : 3193 : These top level declarations are a field in the CFG graph_info. 3194 : In theory you can continue to add to this field after the CFG has been 3195 : built -- provided you know what you are doing;-) 3196 : 3197 : ---------------------------------------------------------------------- 3198 : blume 1175 Name: Matthias Blume 3199 : blume 1190 Date: 2002/05/13 16:40:00 EDT 3200 : Tag: blume-20020513-pp-etc 3201 : Description: 3202 : 3203 : A few minor bugfixes: 3204 : 3205 : - Stopgap measure for bug recently reported by Elsa Gunter (ppDec). 3206 : (Bogus printouts for redefined bindings still occur. Compiler 3207 : bug should no longer occur now. We need to redo the prettyprinter 3208 : from scratch.) 3209 : 3210 : - CM pathname printer now also adds escape sequences for ( and ) 3211 : 3212 : - commend and docu fixes for ml-nlffi 3213 : 3214 : ---------------------------------------------------------------------- 3215 : Name: Matthias Blume 3216 : blume 1189 Date: 2002/05/10 16:40:00 EDT 3217 : Tag: blume-20020510-erg-textio 3218 : Description: 3219 : 3220 : Applied the following bugfix provided by Emden Gansner: 3221 : 3222 : Output is corrupted when outputSubstr is used rather than output. 3223 : 3224 : blume 2155 The problem occurs when a substring 3225 : blume 1189 3226 : ss = (s, dataStart, dataLen) 3227 : 3228 : blume 2155 where dataStart > 0, fills a stream buffer with avail bytes left. 3229 : avail bytes of s, starting at index dataStart, are copied into the 3230 : blume 1189 buffer, the buffer is flushed, and then the remaining dataLen-avail 3231 : blume 2155 bytes of ss are copied into the beginning of the buffer. Instead of 3232 : starting this copy at index dataStart+avail in s, the current code 3233 : blume 1189 starts the copy at index avail. 3234 : 3235 : Fix: 3236 : In text-io-fn.sml, change line 695 from 3237 : val needsFlush = copyVec(v, avail, dataLen-avail, buf, 0) 3238 : blume 2155 to 3239 : blume 1189 val needsFlush = copyVec(v, dataStart+avail, dataLen-avail, buf, 0) 3240 : 3241 : ---------------------------------------------------------------------- 3242 : Name: Matthias Blume 3243 : blume 1186 Date: 2002/04/12 13:55:00 EDT 3244 : Tag: blume-20020412-assyntax 3245 : Description: 3246 : 3247 : 1. Grabbed newer assyntax.h from the XFree86 project. 3248 : 2. Fiddled with how to compile X86.prim.asm without warnings. 3249 : 3. (Very) Minor cleanup in CM. 3250 : 3251 : ---------------------------------------------------------------------- 3252 : Name: Matthias Blume 3253 : blume 1185 Date: 2002/04/01 (no joke!) 17:07:00 EST 3254 : Tag: blume-20020401-x86div 3255 : Description: 3256 : 3257 : Added full support for div/mod/rem/quot on the x86, using the machine 3258 : instruction's two results (without clumsily recomputing the remainder) 3259 : directly where appropriate. 3260 : 3261 : Some more extensive power-of-two support was added to the x86 instruction 3262 : selector (avoiding expensive divs, mods, and muls where they can be 3263 : replaced with cheaper shifts and masks). However, this sort of thing 3264 : ought to be done earlier, e.g., within the CPS optimizer so that 3265 : all architectures benefit from it. 3266 : 3267 : The compiler compiles to a fixed point, but changes might be somewhat 3268 : fragile nevertheless. Please, report any strange things that you might 3269 : see wrt. div/mod/quot/rem... 3270 : 3271 : ---------------------------------------------------------------------- 3272 : Name: Matthias Blume 3273 : blume 1184 Date: 2002/03/29 17:22:00 3274 : Tag: blume-20020329-div 3275 : Description: 3276 : 3277 : Fixed my broken div/mod logic. Unfortunately, this means that the 3278 : inline code for div/mod now has one more comparison than before. 3279 : Fast paths (quotient > 0 or remainder = 0) are not affected, though. 3280 : The problem was with quotient = 0, because that alone does not tell 3281 : us which way the rounding went. One then has to look at whether 3282 : remainder and divisor have the same sign... :( 3283 : 3284 : Anyway, I replaced the bootfiles with fresh ones... 3285 : 3286 : ---------------------------------------------------------------------- 3287 : Name: Matthias Blume 3288 : blume 1183 Date: 2002/03/29 14:10:00 EST 3289 : Tag: blume-20020329-inlprims 3290 : Description: 3291 : 3292 : NEW BOOTFILES!!! Version number bumped to 110.39.3. 3293 : 3294 : Primops have changed. This means that the bin/boot-file formats have 3295 : changed as well. 3296 : 3297 : To make sure that there is no confusion, I made a new version. 3298 : 3299 : 3300 : CHANGES: 3301 : 3302 : * removed REMT from mltree (remainder should never overflow). 3303 : 3304 : * added primops to deal with divisions of all flavors to the frontend 3305 : 3306 : * handled these primops all the way through so they map to their respective 3307 : MLRISC support 3308 : 3309 : * used these primops in the implementation of Int, Int32, Word, Word32 3310 : 3311 : * removed INLDIV, INLMOD, and INLREM as they are no longer necessary 3312 : 3313 : * parameterized INLMIN, INLMAX, and INLABS by a numkind 3314 : 3315 : * translate.sml now deals with all flavors of INL{MIN,MAX,ABS}, including 3316 : floating point 3317 : 3318 : * used INL{MIN,MAX,ABS} in the implementation of Int, Int32, Word, Word32, 3319 : and Real (but Real.abs maps to a separate floating-point-only primop) 3320 : 3321 : 3322 : TODO items: 3323 : 3324 : * Hacked Alpha32 instruction selection, disabling the selection of REMx 3325 : instructions because the machine instruction encoder cannot handle 3326 : them. (Hppa, PPC, and Sparc instruction selection did not handle 3327 : REM in the first place, and REM is supported by the x86 machine coder.) 3328 : 3329 : * Handle DIV and MOD with DIV_TO_NEGINF directly in the x86 instruction 3330 : selection phase. (The two can be streamlined because the hardware 3331 : delivers both quotient and remainder at the same time anyway.) 3332 : 3333 : * Think about what to do with "valOf(Int32.minInt) div ~1" and friends. 3334 : (Currently the behavior is inconsistent both across architectures and 3335 : wrt. the draft Basis spec.) 3336 : 3337 : * Word8 should eventually be handled natively, too. 3338 : 3339 : * There seems to be one serious bug in mltree-gen.sml. It appears, though, 3340 : as if there currently is no execution path that could trigger it in 3341 : SML/NJ. (The assumptions underlying functions arith and promotable do not 3342 : hold for things like multiplication and division.) 3343 : 3344 : ---------------------------------------------------------------------- 3345 : Name: Matthias Blume 3346 : blume 1181 Date: 2002/03/27 16:27:00 EST 3347 : Tag: blume-20020327-mlrisc-divisions 3348 : Description: 3349 : 3350 : Added support for all four division operations (ML's div, mod, quot, 3351 : and rem) to MLRISC. In the course of doing so, I also rationalized 3352 : the naming (no more annoying switch-around of DIV and QUOT), by 3353 : parameterizing the operation by div_rounding_mode (which can be either 3354 : DIV_TO_ZERO or DIV_TO_NEGINF). 3355 : 3356 : The generic MLTreeGen functor takes care of compiling all four 3357 : operations down to only round-to-zero div. 3358 : 3359 : Missing pieces: 3360 : 3361 : * Doing something smarter than relying on MLTreeGen on architectures 3362 : like, e.g., the x86 where hardware division delivers both quotient and 3363 : remainder at the same time. With this, the implementation of the 3364 : round-to-neginf operations could be further streamlined. 3365 : 3366 : * Remove inlining support for div/mod/rem from the frontend and replace it 3367 : with primops that get carried through to the backend. Do this for all 3368 : int and word types. 3369 : 3370 : ---------------------------------------------------------------------- 3371 : Name: Matthias Blume 3372 : blume 1180 Date: 2002/03/25 17:25:00 EST 3373 : Tag: blume-20020325-divmod 3374 : Description: 3375 : 3376 : I improved (hopefully without breaking them) the implementation of Int.div, 3377 : Int.mod, and Int.rem. For this, the code in translate.sml now takes 3378 : advantage of the following observations: 3379 : 3380 : Let q = x quot y r = x rem y 3381 : d = x div y m = x mod y 3382 : 3383 : where "quot" is the round-to-zero version of integer division that 3384 : hardware usually provides. Then we have: 3385 : 3386 : r = x - q * y where neither the * nor the - will overflow 3387 : d = if q >= 0 orelse x = q * y then q else q - 1 3388 : where neither the * nor the - will overflow 3389 : m = if q >= 0 orelse r = 0 then r else r + y 3390 : where the + will not overflow 3391 : 3392 : This results in substantial simplification of the generated code. 3393 : The following table shows the number of CFG nodes and edges generated 3394 : for 3395 : fun f (x, y) = x OPER y 3396 : (* with OPER \in div, mod, quot, rem *) 3397 : 3398 : 3399 : OPER | nodes(old) | edges(old) | nodes(new) | edges(new) 3400 : -------------------------------------------------------- 3401 : div | 24 | 39 | 12 | 16 3402 : mod | 41 | 71 | 12 | 16 3403 : quot | 8 | 10 | 8 | 10 3404 : rem | 10 | 14 | 8 | 10 3405 : 3406 : 3407 : ---------------------------------------------------------------------- 3408 : Name: Matthias Blume 3409 : blume 1179 Date: 2002/03/25 22:06:00 EST 3410 : Tag: blume-20020325-cprotobug 3411 : Description: 3412 : 3413 : Fixed a bug in cproto (c prototype decoder). 3414 : 3415 : ---------------------------------------------------------------------- 3416 : Name: Matthias Blume 3417 : blume 1178 Date: 2002/03/25 16:00:00 EST 3418 : Tag: blume-20020325-raw-primops 3419 : Description: 3420 : 3421 : I did some cleanup to Allen's new primop code and 3422 : replaced yesterday's bootfiles with new ones. 3423 : (But they are stored in the same place.) 3424 : 3425 : ---------------------------------------------------------------------- 3426 : Name: Matthias Blume 3427 : blume 1175 Date: 2002/03/24 22:40:00 EST 3428 : Tag: blume-20020324-bootfiles 3429 : Description: 3430 : 3431 : Made the bootfiles that Allen asked for. 3432 : 3433 : ---------------------------------------------------------------------- 3434 : leunga 1174 Name: Allen Leung 3435 : Date: 2002/03/23 15:50:00 EST 3436 : Tag: leunga-20020323-flint-cps-rcc-primops 3437 : Description: 3438 : 3439 : 1. Changes to FLINT primops: 3440 : 3441 : (* make a call to a C-function; 3442 : * The primop carries C function prototype information and specifies 3443 : * which of its (ML-) arguments are floating point. C prototype 3444 : * information is for use by the backend, ML information is for 3445 : * use by the CPS converter. *) 3446 : | RAW_CCALL of { c_proto: CTypes.c_proto, 3447 : ml_args: ccall_type list, 3448 : ml_res_opt: ccall_type option, 3449 : reentrant : bool 3450 : } option 3451 : (* Allocate uninitialized storage on the heap. 3452 : * The record is meant to hold short-lived C objects, i.e., they 3453 : blume 2155 * are not ML pointers. With the tag, the representation is 3454 : leunga 1174 * the same as RECORD with tag tag_raw32 (sz=4), or tag_fblock (sz=8) 3455 : *) 3456 : blume 2155 | RAW_RECORD of {tag:bool,sz:int} 3457 : leunga 1174 and ccall_type = CCALL_INT32 | CCALL_REAL64 | CCALL_ML_PTR 3458 : 3459 : 2. These CPS primops are now overloaded: 3460 : 3461 : rawload of {kind:numkind} 3462 : rawstore of {kind:numkind} 3463 : 3464 : The one argument form is: 3465 : 3466 : rawload {kind} address 3467 : 3468 : The two argument form is: 3469 : blume 2155 3470 : leunga 1174 rawload {kind} [ml object, byte-offset] 3471 : 3472 : 3. RAW_CCALL/RCC now takes two extra arguments: 3473 : 3474 : a. The first is whether the C call is reentrant, i.e., whether 3475 : ML state should be saved and restored. 3476 : b. The second argument is a string argument specifying the name of 3477 : library and the C function. 3478 : 3479 : These things are currently not handled in the code generator, yet. 3480 : 3481 : 4. In CProto, 3482 : 3483 : blume 2155 An encoding type of "bool" means "ml object" and is mapped into 3484 : C prototype of PTR. Note that "bool" is different than "string", 3485 : leunga 1174 even though "string" is also mapped into PTR, because "bool" 3486 : is assigned an CPS type of BOGt, while "string" is assigned INT32t. 3487 : 3488 : 5. Pickler/unpicker 3489 : 3490 : Changed to handle RAW_RECORD and newest RAW_CCALL 3491 : 3492 : 6. MLRiscGen, 3493 : 3494 : 1. Changed to handle the new rawload/rawstore/rawrecord operators. 3495 : 2. Code for handling C Calls has been moved to a new module CPSCCalls, 3496 : in the file CodeGen/cpscompile/cps-c-calls.sml 3497 : 3498 : 7. Added the conditional move operator 3499 : 3500 : condmove of branch 3501 : 3502 : blume 2155 to cps. Generation of this is still buggy so it is currently 3503 : leunga 1174 disabled. 3504 : blume 2155 3505 : leunga 1174 ---------------------------------------------------------------------- 3506 : george 1168 Name: Lal George 3507 : blume 2155 Date: 2002/03/22 14:18:25 EST 3508 : george 1171 Tag: george-20020322-cps-branch-prob 3509 : george 1168 Description: 3510 : 3511 : blume 2155 Implemented the Ball-Larus branch prediction-heuristics, and 3512 : george 1168 incorporated graphical viewers for control flow graphs. 3513 : 3514 : george 1171 Ball-Larus Heuristics: 3515 : george 1168 --------------------- 3516 : See the file compiler/CodeGen/cpscompile/cpsBranchProb.sml. 3517 : 3518 : By design it uses the Dempster-Shafer theory for combining 3519 : probabilities. For example, in the function: 3520 : 3521 : fun f(n,acc) = if n = 0 then acc else f(n-1, n*acc) 3522 : 3523 : the ball-larus heuristics predicts that the n=0 is unlikely 3524 : (OH-heuristic), and the 'then' branch is unlikely because of the 3525 : RH-heuristic -- giving the 'then' branch an even lower combined 3526 : george 1171 probability using the Dempster-Shafer theory. 3527 : george 1168 3528 : Finally, John Reppy's loop analysis in MLRISC, further lowers the 3529 : probability of the 'then' branch because of the loop in the else 3530 : branch. 3531 : 3532 : 3533 : Graphical Viewing: 3534 : blume 2155 ------------------ 3535 : george 1168 I merely plugged in Allen's graphical viewers into the compiler. The 3536 : additional code is not much. At the top level, saying: 3537 : 3538 : Control.MLRISC.getFlag "cfg-graphical-view" := true; 3539 : 3540 : will display the graphical view of the control flow graph just before 3541 : back-patching. daVinci must be in your path for this to work. If 3542 : daVinci is not available, then the default viewer can be changed 3543 : using: 3544 : 3545 : Control.MLRISC.getString "viewer" 3546 : 3547 : which can be set to "dot" or "vcg" for the corresponding viewers. Of 3548 : course, these viewers must be in your path. 3549 : 3550 : The above will display the compilation unit at the level of clusters, 3551 : many of which are small, boring, and un-interesting. Also setting: 3552 : 3553 : Control.MLRISC.getInt "cfg-graphical-view_size" 3554 : 3555 : will display clusters that are larger than the value set by the above. 3556 : 3557 : blume 2155 3558 : george 1168 ---------------------------------------------------------------------- 3559 : blume 1159 Name: Matthias Blume 3560 : Date: 2002/03/21 22:20:00 EST 3561 : Tag: blume-20020321-kmp-bugfix 3562 : Description: 3563 : 3564 : Changed the interface to the KMP routine in PreString and fixed 3565 : a minor bug in one place where it was used. 3566 : 3567 : ---------------------------------------------------------------------- 3568 : leunga 1156 Name: Allen Leung 3569 : leunga 1158 Date: 2002/03/21 20:30:00 EST 3570 : Tag: leunga-20020321-cfg 3571 : Description: 3572 : 3573 : Fixed a potential problem in cfg edge splitting. 3574 : 3575 : ---------------------------------------------------------------------- 3576 : Name: Allen Leung 3577 : leunga 1156 Date: 2002/03/21 17:15:00 EST 3578 : Tag: leunga-20020321-x86-fp-cfg 3579 : Description: 3580 : 3581 : blume 2155 1. Recoded the buggy parts of x86-fp. 3582 : leunga 1156 3583 : a. All the block reordering code has been removed. 3584 : We now depend on the block placement phases to do this work. 3585 : 3586 : b. Critical edge splitting code has been simplified and moved into the 3587 : CFG modules, as where they belong. 3588 : 3589 : Both of these were quite buggy and complex. The code is now much, much 3590 : simpler. 3591 : 3592 : 2. X86 backend. 3593 : 3594 : a. Added instructions for 64-bit support. Instruction selection for 3595 : 64-bit has not been committed, however, since that 3596 : blume 2155 requires changes to MLTREE which haven't been approved by 3597 : leunga 1156 Lal and John. 3598 : 3599 : blume 2155 b. Added support for FUCOMI and FUCOMIP when generating code for 3600 : leunga 1156 PentiumPro and above. We only generate these instructions in 3601 : the fast-fp mode. 3602 : 3603 : blume 2155 c. Added cases for JP and JNP in X86FreqProps. 3604 : 3605 : leunga 1156 3. CFG 3606 : 3607 : CFG now has a bunch of methods for edge splitting and merging. 3608 : 3609 : 4. Machine description. 3610 : 3611 : John's simplification of MLTREE_BASIS.fcond broke a few machine 3612 : description things: 3613 : 3614 : rtl-build.{sig,sml} and hppa.mdl fixed. 3615 : 3616 : blume 2155 NOTE: the machine description stuff in the repository is still broken. 3617 : Again, I can't put my fixes in because that involves 3618 : changes to MLTREE. 3619 : leunga 1156 3620 : ---------------------------------------------------------------------- 3621 : blume 1145 Name: Matthias Blume 3622 : blume 1155 Date: 2002/03/20 15:55:00 EST 3623 : Tag: blume-20020320-kmp 3624 : Description: 3625 : 3626 : Implemented Knuth-Morris-Pratt string matching in PreString and used 3627 : it for String.isSubstring, Substring.isSubstring, and 3628 : Substring.position. 3629 : 3630 : (Might need some stress-testing. Simple examples worked fine.) 3631 : 3632 : ---------------------------------------------------------------------- 3633 : Name: Matthias Blume 3634 : blume 1152 Date: 2002/03/19 16:37:00 EST 3635 : Tag: blume-20020319-witnesses 3636 : Description: 3637 : 3638 : Added a structure C.W and functions convert/Ptr.convert to ml-nlffi-lib. 3639 : 3640 : This implements a generic mechanism for changing constness qualifiers 3641 : anywhere within big C types without resorting to outright "casts". 3642 : (So far, functions such as C.rw/C.ro or C.Ptr.rw/C.Ptr.ro only let you 3643 : modify the constness at the outermost level.) 3644 : The implementation of "convert" is based on the idea of "witness" 3645 : values -- values that are not used by the operation but whose types 3646 : "testify" to their applicability. On the implementation side, "convert" 3647 : is simply a projection (returning its second curried argument). With 3648 : cross-module inlining, it should not result in any machine code being 3649 : generated. 3650 : 3651 : ---------------------------------------------------------------------- 3652 : Name: Matthias Blume 3653 : blume 1148 Date: 2002/03/15 16:40:00 EST 3654 : Tag: blume-20020315-basis 3655 : Description: 3656 : 3657 : Provided (preliminary?) implementations for 3658 : 3659 : {String,Substring}.{concatWith,isSuffix,isSubstring} 3660 : 3661 : and 3662 : 3663 : Substring.full 3664 : 3665 : Those are in the Basis spec but they were missing in SML/NJ. 3666 : 3667 : ---------------------------------------------------------------------- 3668 : Name: Matthias Blume 3669 : blume 1145 Date: 2002/03/14 21:30:00 EST 3670 : Tag: blume-20020314-controls 3671 : Description: 3672 : 3673 : Controls: 3674 : --------- 3675 : 3676 : 1. Factored out the recently-added Controls : CONTROLS stuff and put 3677 : it into its own library /controls-lib.cm. The source tree for 3678 : this is under src/smlnj-lib/Controls. 3679 : 3680 : 2. Changed the names of types and functions in this interface, so they 3681 : make a bit more "sense": 3682 : 3683 : module -> registry 3684 : 'a registry -> 'a group 3685 : 3686 : 3. The interface now deals in ref cells only. The getter/setter interface 3687 : is (mostly) gone. 3688 : 3689 : 4. Added a function that lets one register an already-existing ref cell. 3690 : 3691 : 5. Made the corresponding modifications to the rest of the code so that 3692 : everything compiles again. 3693 : 3694 : 6. Changed the implementation of Controls.MLRISC back to something closer 3695 : to the original. In particular, this module (and therefore MLRISC) 3696 : does not depend on Controls. There now is some link-time code in 3697 : int-sys.sml that registers the MLRISC controls with the Controls 3698 : module. 3699 : 3700 : CM: 3701 : --- 3702 : 3703 : * One can now specify the lambda-split aggressiveness in init.cmi. 3704 : 3705 : ---------------------------------------------------------------------- 3706 : leunga 1142 Name: Allen Leung 3707 : Date: 2002/03/13 17:30:00 EST 3708 : Tag: leunga-20020313-x86-fp-unary 3709 : Description: 3710 : 3711 : Bug fix for: 3712 : 3713 : > leunga@weaselbane:~/Yale/tmp/sml-dist{21} bin/sml 3714 : > Standard ML of New Jersey v110.39.1 [FLINT v1.5], March 08, 2002 3715 : > - fun f(x,(y,z)) = Real.~ y; 3716 : > [autoloading] 3717 : > [autoloading done] 3718 : > fchsl (%eax), 184(%esp) 3719 : > Error: MLRisc bug: X86MCEmitter.emitInstr 3720 : blume 2155 > 3721 : leunga 1142 > uncaught exception Error 3722 : > raised at: ../MLRISC/control/mlriscErrormsg.sml:16.14-16.19 3723 : 3724 : The problem was that the code generator did not generate any fp registers 3725 : in this case, and the ra didn't know that it needed to run the X86FP phase to 3726 : translate the pseudo fp instruction. This only happened with unary fp 3727 : operators in certain situations. 3728 : 3729 : ---------------------------------------------------------------------- 3730 : blume 1137 Name: Matthias Blume 3731 : blume 1140 Date: 2002/03/13 14:00:00 EST 3732 : Tag: blume-20020313-overload-etc 3733 : Description: 3734 : 3735 : 1. Added _overload as a synonym for overload for backward compatibility. 3736 : (Control.overloadKW must be true for either version to be accepted.) 3737 : 3738 : 2. Fixed bug in install script that caused more things to be installed 3739 : than what was requested in config/targets. 3740 : 3741 : 3. Made CM aware of the (_)overload construct so that autoloading 3742 : works. 3743 : 3744 : ---------------------------------------------------------------------- 3745 : Name: Matthias Blume 3746 : blume 1138 Date: 2002/03/12 22:03:00 EST 3747 : Tag: blume-20020312-url 3748 : Description: 3749 : 3750 : Forgot to update BOOT and srcarchiveurl. 3751 : 3752 : ---------------------------------------------------------------------- 3753 : Name: Matthias Blume 3754 : blume 1137 Date: 2002/03/12 17:30:00 EST 3755 : Tag: blume-20020312-version110392 3756 : Description: 3757 : 3758 : Yet another version number bump (because of small changes to the 3759 : binfile format). Version number is now 110.39.2. NEW BOOTFILES! 3760 : 3761 : Changes: 3762 : 3763 : The new pid generation scheme described a few weeks ago was overly 3764 : complicated. I implemented a new mechanism that is simpler and 3765 : provides a bit more "stability": Once CM has seen a compilation 3766 : unit, it keeps its identity constant (as long as you do not delete 3767 : those crucial CM/GUID/* files). This means that when you change 3768 : blume 1145 an interface, compile, then go back to the old interface, and 3769 : blume 1137 compile again, you arrive at the original pid. 3770 : 3771 : There now also is a mechanism that instructs CM to use the plain 3772 : environment hash as a module's pid (effectively making its GUID 3773 : the empty string). For this, "noguid" must be specified as an 3774 : option to the .sml file in question within its .cm file. 3775 : This is most useful for code that is being generated by tools such 3776 : as ml-nlffigen (because during development programmers tend to 3777 : erase the tool's entire output directory tree including CM's cached 3778 : GUIDs). "noguid" is somewhat dangerous (since it can be used to locally 3779 : revert to the old, broken behavior of SML/NJ, but in specific cases 3780 : where there is no danger of interface confusion, its use is ok 3781 : (I think). 3782 : 3783 : ml-nlffigen by default generates "noguid" annotations. They can be 3784 : turned off by specifying -guid in its command line. 3785 : 3786 : ---------------------------------------------------------------------- 3787 : george 1136 Name: Lal George 3788 : Date: 2002/03/12 12 14:42:36 EST 3789 : Tag: george-20020312-frequency-computation 3790 : Description: 3791 : blume 2155 3792 : george 1136 Integrated jump chaining and static block frequency into the 3793 : compiler. More details and numbers later. 3794 : leunga 1025 3795 : george 1003 ---------------------------------------------------------------------- 3796 : george 1133 Name: Lal George 3797 : Date: 2002/03/11 11 22:38:53 EST 3798 : Tag: george-20020311-jump-chain-elim 3799 : Description: 3800 : 3801 : Tested the jump chain elimination on all architectures (except the 3802 : hppa). This is on by default right now and is profitable for the 3803 : alpha and x86, however, it may not be profitable for the sparc and ppc 3804 : when compiling the compiler. 3805 : 3806 : blume 2155 The gc test will typically jump to a label at the end of the cluster, 3807 : where there is another jump to an external cluster containing the actual 3808 : george 1133 code to invoke gc. This is to allow factoring of common gc invocation 3809 : sequences. That is to say, we generate: 3810 : 3811 : f: 3812 : testgc 3813 : ja L1 % jump if above to L1 3814 : 3815 : L1: 3816 : jmp L2 3817 : 3818 : 3819 : After jump chain elimination the 'ja L1' instructions is converted to 3820 : 'ja L2'. On the sparc and ppc, many of the 'ja L2' instructions may end 3821 : up being implemented in their long form (if L2 is far away) using: 3822 : 3823 : jbe L3 % jump if below or equal to L3 3824 : jmp L2 3825 : L3: 3826 : ... 3827 : 3828 : 3829 : For large compilation units L2 may be far away. 3830 : 3831 : 3832 : ---------------------------------------------------------------------- 3833 : blume 1132 Name: Matthias Blume 3834 : Date: 2002/03/11 13:30:00 EST 3835 : Tag: blume-20020311-mltreeeval 3836 : Description: 3837 : 3838 : A functor parameter was missing. 3839 : 3840 : ---------------------------------------------------------------------- 3841 : leunga 1130 Name: Allen Leung 3842 : leunga 1131 Date: 2002/03/11 10:30:00 EST 3843 : leunga 1142 Tag: leunga-20020311-runtime-string0 3844 : leunga 1131 Description: 3845 : 3846 : blume 2155 The representation of the empty string now points to a 3847 : legal null terminated C string instead of unit. It is now possible 3848 : to convert an ML string into C string with InlineT.CharVector.getData. 3849 : leunga 1131 This compiles into one single machine instruction. 3850 : 3851 : ---------------------------------------------------------------------- 3852 : Name: Allen Leung 3853 : leunga 1130 Date: 2002/03/10 23:55:00 EST 3854 : Tag: leunga-20020310-x86-call 3855 : Description: 3856 : 3857 : Added machine generation for CALL instruction (relative displacement mode) 3858 : 3859 : ---------------------------------------------------------------------- 3860 : blume 1128 Name: Matthias Blume 3861 : Date: 2002/03/08 16:05:00 3862 : Tag: blume-20020308-entrypoints 3863 : Description: 3864 : 3865 : Version number bumped to 110.39.1. NEW BOOTFILES! 3866 : 3867 : Entrypoints: non-zero offset into a code object where execution should begin. 3868 : 3869 : - Added the notion of an entrypoint to CodeObj. 3870 : - Added reading/writing of entrypoint info to Binfile. 3871 : - Made runtime system bootloader aware of entrypoints. 3872 : - Use the address of the label of the first function given to mlriscGen 3873 : as the entrypoint. This address is currently always 0, but it will 3874 : not be 0 once we turn on block placement. 3875 : - Removed the linkage cluster code (which was The Other Way(tm) of dealing 3876 : with entry points) from mlriscGen. 3877 : 3878 : ---------------------------------------------------------------------- 3879 : leunga 1127 Name: Allen Leung 3880 : Date: 2002/03/07 20:45:00 EST 3881 : Tag: leunga-20020307-x86-cmov 3882 : Description: 3883 : 3884 : Bug fixes for CMOVcc on x86. 3885 : 3886 : 1. Added machine code generation for CMOVcc 3887 : 2. CMOVcc is now generated in preference over SETcc on PentiumPro or above. 3888 : 3. CMOVcc cannot have an immediate operand as argument. 3889 : 3890 : ---------------------------------------------------------------------- 3891 : blume 1126 Name: Matthias Blume 3892 : Date: 2002/03/07 16:15:00 EST 3893 : Tag: blume-20020307-controls 3894 : Description: 3895 : 3896 : This is a very large but mostly boring patch which makes (almost) 3897 : every tuneable compiler knob (i.e., pretty much everything under 3898 : Control.* plus a few other things) configurable via both the command 3899 : line and environment variables in the style CM did its configuration 3900 : until now. 3901 : 3902 : Try starting sml with '-h' (or, if you are brave, '-H') 3903 : 3904 : To this end, I added a structure Controls : CONTROLS to smlnj-lib.cm which 3905 : implements the underlying generic mechanism. 3906 : 3907 : The interface to some of the existing such facilities has changed somewhat. 3908 : For example, the MLRiscControl module now provides mkFoo instead of getFoo. 3909 : (The getFoo interface is still there for backward-compatibility, but its 3910 : use is deprecated.) 3911 : 3912 : The ml-build script passes -Cxxx=yyy command-line arguments through so 3913 : that one can now twiddle the compiler settings when using this "batch" 3914 : compiler. 3915 : 3916 : TODO items: 3917 : 3918 : We should go through and throw out all controls that are no longer 3919 : connected to anything. Moreover, we should go through and provide 3920 : meaningful (and correct!) documentation strings for those controls 3921 : that still are connected. 3922 : 3923 : Currently, multiple calls to Controls.new are accepted (only the first 3924 : has any effect). Eventually we should make sure that every control 3925 : is being made (via Controls.new) exactly once. Future access can then 3926 : be done using Controls.acc. 3927 : 3928 : Finally, it would probably be a good idea to use the getter-setter 3929 : interface to controls rather than ref cells. For the time being, both 3930 : styles are provided by the Controls module, but getter-setter pairs are 3931 : better if thread-safety is of any concern because they can be wrapped. 3932 : 3933 : ***************************************** 3934 : 3935 : One bug fix: The function blockPlacement in three of the MLRISC 3936 : backpatch files used to be hard-wired to one of two possibilities at 3937 : link time (according to the value of the placementFlag). But (I 3938 : think) it should rather sense the flag every time. 3939 : 3940 : ***************************************** 3941 : 3942 : Other assorted changes (by other people who did not supply a HISTORY entry): 3943 : 3944 : 1. the cross-module inliner now works much better (Monnier) 3945 : 2. representation of weights, frequencies, and probabilities in MLRISC 3946 : changed in preparation of using those for weighted block placement 3947 : (Reppy, George) 3948 : 3949 : ---------------------------------------------------------------------- 3950 : george 1116 Name: Lal George 3951 : george 1124 Date: 2002/03/07 14:44:24 EST 2002 3952 : Tag: george-20020307-weighted-block-placement 3953 : 3954 : Tested the weighted block placement optimization on all architectures 3955 : (except the hppa) using AMPL to generate the block and edge frequencies. 3956 : Changes were required in the machine properties to correctly 3957 : blume 2155 categorize trap instructions. There is an MLRISC flag 3958 : "weighted-block-placement" that can be used to enable weighted block 3959 : george 1124 placement, but this will be ineffective without block/edge 3960 : frequencies (coming soon). 3961 : 3962 : 3963 : ---------------------------------------------------------------------- 3964 : Name: Lal George 3965 : blume 2155 Date: 2002/03/05 17:24:48 EST 3966 : george 1116 Tag: george-20020305-linkage-cluster 3967 : 3968 : george 1124 In order to support the block placement optimization, a new cluster 3969 : is generated as the very first cluster (called the linkage cluster). 3970 : blume 2155 It contains a single jump to the 'real' entry point for the compilation 3971 : george 1124 unit. Block placement has no effect on the linkage cluster itself, but 3972 : all the other clusters have full freedom in the manner in which they 3973 : blume 2155 reorder blocks or functions. 3974 : george 1116 3975 : On the x86 the typical linkage code that is generated is: 3976 : ---------------------- 3977 : .align 2 3978 : L0: 3979 : addlL1-L0, 72(%esp) 3980 : george 1124 jmp L1 3981 : george 1116 3982 : 3983 : .align 2 3984 : L1: 3985 : ---------------------- 3986 : 3987 : blume 2155 72(%esp) is the memory location for the stdlink register. This 3988 : george 1116 must contain the address of the CPS function being called. In the 3989 : george 1124 above example, it contains the address of L0; before 3990 : george 1116 calling L1 (the real entry point for the compilation unit), it 3991 : must contain the address for L1, and hence 3992 : 3993 : addl \$L1-L0, 72(%esp) 3994 : 3995 : george 1124 I have tested this on all architectures except the hppa.The increase 3996 : in code size is of course negligible 3997 : george 1116 3998 : ---------------------------------------------------------------------- 3999 : leunga 1115 Name: Allen Leung 4000 : Date: 2002/03/03 13:20:00 EST 4001 : Tag: leunga-20020303-mlrisc-tools 4002 : 4003 : Added #[ ... ] expressions to mlrisc tools 4004 : 4005 : ---------------------------------------------------------------------- 4006 : blume 1096 Name: Matthias Blume 4007 : blume 1098 Date: 2002/02/27 12:29:00 EST 4008 : Tag: blume-20020227-cdebug 4009 : Description: 4010 : 4011 : - made types in structure C and C_Debug to be equal 4012 : - got rid of code duplication (c-int.sml vs. c-int-debug.sml) 4013 : - there no longer is a C_Int_Debug (C_Debug is directly derived from C) 4014 : 4015 : ---------------------------------------------------------------------- 4016 : Name: Matthias Blume 4017 : blume 1096 Date: 2002/02/26 12:00:00 EST 4018 : Tag: blume-20020226-ffi 4019 : Description: 4020 : 4021 : 1. Fixed a minor bug in CM's "noweb" tool: 4022 : If numbering is turned off, then truly don't number (i.e., do not 4023 : supply the -L option to noweb). The previous behavior was to supply 4024 : -L'' -- which caused noweb to use the "default" line numbering scheme. 4025 : Thanks to Chris Richards for pointing this out (and supplying the fix). 4026 : 4027 : 2. Once again, I reworked some aspects of the FFI: 4028 : 4029 : A. The incomplete/complete type business: 4030 : 4031 : - Signatures POINTER_TO_INCOMPLETE_TYPE and accompanying functors are 4032 : gone! 4033 : - ML types representing an incomplete type are now *equal* to 4034 : ML types representing their corresponding complete types (just like 4035 : in C). This is still safe because ml-nlffigen will not generate 4036 : RTTI for incomplete types, nor will it generate functions that 4037 : require access to such RTTI. But when ML code generated from both 4038 : incomplete and complete versions of the C type meet, the ML types 4039 : are trivially interoperable. 4040 : 4041 : NOTE: These changes restore the full generality of the translation 4042 : (which was previously lost when I eliminated functorization)! 4043 : 4044 : B. Enum types: 4045 : 4046 : - Structure C now has a type constructor "enum" that is similar to 4047 : how the "su" constructor works. However, "enum" is not a phantom 4048 : type because each "T enum" has values (and is isomorphic to 4049 : MLRep.Signed.int). 4050 : - There are generic access operations for enum objects (using 4051 : MLRep.Signed.int). 4052 : - ml-nlffigen will generate a structure E_foo for each "enum foo". 4053 : * The structure contains the definition of type "mlrep" (the ML-side 4054 : representation type of the enum). Normally, mlrep is the same 4055 : as "MLRep.Signed.int", but if ml-nlffigen was invoked with "-ec", 4056 : then mlrep will be defined as a datatype -- thus facilitating 4057 : pattern matching on mlrep values. 4058 : ("-ec" will be suppressed if there are duplicate values in an 4059 : enumeration.) 4060 : * Constructors ("-ec") or values (no "-ec") e_xxx of type mlrep 4061 : will be generated for each C enum constant xxx. 4062 : * Conversion functions m2i and i2m convert between mlrep and 4063 : MLRep.Signed.int. (Without "-ec", these functions are identities.) 4064 : * Coversion functions c and ml convert between mlrep and "tag enum". 4065 : * Access functions (get/set) fetch and store mlrep values. 4066 : - By default (unless ml-nlffigen was invoked with "-nocollect"), unnamed 4067 : enumerations are merged into one single enumeration represented by 4068 : structure E_'. 4069 : 4070 : ---------------------------------------------------------------------- 4071 : leunga 1080 Name: Allen Leung 4072 : leunga 1094 Date: 2002/02/25 04:45:00 EST 4073 : Tag: leunga-20020225-cps-spill 4074 : 4075 : This is a new implementation of the CPS spill phase. 4076 : The new phase is in the new file compiler/CodeGen/cpscompile/spill-new.sml 4077 : In case of problems, replace it with the old file spill.sml 4078 : 4079 : blume 2155 The current compiler runs into some serious performance problems when 4080 : leunga 1094 constructing a large record. This can happen when we try to compile a 4081 : structure with many items. Even a very simple structure like the following 4082 : makes the compiler slow down. 4083 : 4084 : structure Foo = struct 4085 : val x_1 = 0w1 : Word32.int 4086 : val x_2 = 0w2 : Word32.int 4087 : val x_3 = 0w3 : Word32.int 4088 : ... 4089 : val x_N = 0wN : Word32.int 4090 : end 4091 : 4092 : blume 2155 The following table shows the compile time, from N=1000 to N=4000, 4093 : leunga 1094 with the old compiler: 4094 : 4095 : N 4096 : blume 2155 1000 CPS 100 spill 0.04u 0.00s 0.00g 4097 : MLRISC ra 0.06u 0.00s 0.05g 4098 : leunga 1094 (spills = 0 reloads = 0) 4099 : blume 2155 TOTAL 0.63u 0.07s 0.21g 4100 : leunga 1094 4101 : blume 2155 1100 CPS 100 spill 8.25u 0.32s 0.64g 4102 : MLRISC ra 5.68u 0.59s 3.93g 4103 : leunga 1094 (spills = 0 reloads = 0) 4104 : blume 2155 TOTAL 14.71u 0.99s 4.81g 4105 : leunga 1094 4106 : blume 2155 1500 CPS 100 spill 58.55u 2.34s 1.74g 4107 : MLRISC ra 5.54u 0.65s 3.91g 4108 : leunga 1094 (spills = 543 reloads = 1082) 4109 : blume 2155 TOTAL 65.40u 3.13s 6.00g 4110 : leunga 1094 4111 : blume 2155 2000 CPS 100 spill 126.69u 4.84s 3.08g 4112 : MLRISC ra 0.80u 0.10s 0.55g 4113 : leunga 1094 (spills = 42 reloads = 84) 4114 : blume 2155 TOTAL 129.42u 5.10s 4.13g 4115 : leunga 1094 4116 : blume 2155 3000 CPS 100 spill 675.59u 19.03s 11.64g 4117 : MLRISC ra 2.69u 0.27s 1.38g 4118 : leunga 1094 (spills = 62 reloads = 124) 4119 : blume 2155 TOTAL 682.48u 19.61s 13.99g 4120 : leunga 1094 4121 : blume 2155 4000 CPS 100 spill 2362.82u 56.28s 43.60g 4122 : MLRISC ra 4.96u 0.27s 2.72g 4123 : leunga 1094 (spills = 85 reloads = 170) 4124 : blume 2155 TOTAL 2375.26u 57.21s 48.00g 4125 : leunga 1094 4126 : blume 2155 As you can see the old cps spill module suffers from some serious 4127 : performance problem. But since I cannot decipher the old code fully, 4128 : instead of patching the problems up, I'm reimplementing it 4129 : with a different algorithm. The new code is more modular, 4130 : smaller when compiled, and substantially faster 4131 : (O(n log n) time and O(n) space). Timing of the new spill module: 4132 : leunga 1094 4133 : blume 2155 4000 CPS 100 spill 0.02u 0.00s 0.00g 4134 : MLRISC ra 0.25u 0.02s 0.15g 4135 : (spills=1 reloads=3) 4136 : TOTAL 7.74u 0.34s 1.62g 4137 : leunga 1094 4138 : Implementation details: 4139 : 4140 : blume 2155 As far as I can tell, the purpose of the CPS spill module is to make sure the 4141 : number of live variables at any program point (the bandwidth) 4142 : does not exceed a certain limit, which is determined by the 4143 : size of the spill area. 4144 : leunga 1094 4145 : blume 2155 When the bandwidth is too large, we decrease the register pressure by 4146 : leunga 1094 packing live variables into spill records. How we achieve this is 4147 : completely different than what we did in the old code. 4148 : 4149 : blume 2155 First, there is something about the MLRiscGen code generator 4150 : leunga 1094 that we should be aware of: 4151 : 4152 : o MLRiscGen performs code motion! 4153 : blume 2155 4154 : leunga 1094 In particular, it will move floating point computations and 4155 : blume 2155 address computations involving only the heap pointer to 4156 : their use sites (if there is only a single use). 4157 : leunga 1094 What this means is that if we have a CPS record construction 4158 : statement 4159 : blume 2155 4160 : leunga 1094 RECORD(k,vl,w,e) 4161 : blume 2155 4162 : we should never count the new record address w as live if w 4163 : leunga 1094 has only one use (which is often the case). 4164 : blume 2155 4165 : leunga 1094 We should do something similar to floating point, but the transformation 4166 : there is much more complex, so I won't deal with that. 4167 : 4168 : Secondly, there are now two new cps primops at our disposal: 4169 : 4170 : blume 2155 1. rawrecord of record_kind option 4171 : leunga 1094 This pure operator allocates some uninitialized storage from the heap. 4172 : There are two forms: 4173 : blume 2155 4174 : leunga