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 /doc/trunk/src/changelog/HISTORY.txt
 [smlnj] / doc / trunk / src / changelog / HISTORY.txt

# Annotation of /doc/trunk/src/changelog/HISTORY.txt

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