From: Matthew Flatt <mflatt@cs.utah.edu> To: plt-scheme@fast.cs.utah.edu Date: Fri, 12 Apr 2002 08:30:21 -0600 (MDT) Subject: 200alpha16 The exp-tagged source code in CVS for MzScheme and MrEd is now version 200alpha16. The main change for this version is a re-write of MzScheme’s I/O subsystem for Windows. This re-write enables `object-wait-multiple’ support for output ports, plus other improvements in the future. "Text-mode" I/O (with the LF<->CRLF conversiont) is currently supported in Windows only for regular files. In particular, MzScheme now reads and writes to stdin, stdout, and stderr in "binary mode". Text mode could be supported for all devices, but it’s a pain, so I’ll leave it out unless someone cares. (I’ve given up on text mode completely in my own code. CRLF files appear so often in Unix that I write programs to work with all newline conventions on all platforms.) Known bug: for Windows 95/98/Me, it’s technically possible that output flushes on different ports will be re-ordered when the ports write to the same underlying device. For example, if you run MzScheme within Emacs, the current error and output ports presumably write to the same pipe, and it’s possible that a new prompt will appear after an error message for the previous prompt due to a flush re-order. This re-ordering is unlikely, however. Besides, if you’re forced to run 95/98/Me instead of NT/2000/XP, then you probably have worse problems to worry about (unrelated to PLT Scheme). Other changes in 200alpha16: * `object-wait-multiple’ works on file-stream, TCP, and pipe output ports. (In 100alpha17, I expect it will work on all ports.) * `tcp-listen’ takes a new optional argument: the address where connections are receieved (#f = default = all of the listening machine’s addresses). * Fixed the macro-expansion bug that Doug found. * Bytecode input is validated to prevent crashes. More checking is needed to guarantee that the space allocated during a bytecode read is proportional to the size of the bytecode input. * Inside MzScheme: scheme_make_input_port() and scheme_make_output_port() have changed. Note that `make-input-port’ and `make-output-port’ have not yet changed. Matthew