[plt-scheme] 299.29
The exp-tagged code in CVS for MzScheme and MrEd is now version 299.29.
This version includes a significant change in output buffering:
* File-stream output ports (including file ports, the initial output
port, and ports created by `subprocess') are now block-buffered by
default, instead of line-buffered. The exception is when an output
port corresponds to a terminal, in which case it is line-buffered
by default. Also, the initial error port remains unbuffered.
This change is especially likely to affect stdio-based communication
among OS-level processes. For example, when communicating with an
ispell subprocess, adding a newline at the end of a command
previously would have been enough to send the command to ispell.
Now, the output must be flushed explicitly (using `flush-output') or
the buffer mode must be explicitly changed to by-line (using
`file-stream-muffer-mode').
TCP ports are not file-stream ports, and TCP output remains
unbuffered.
These new buffering conventions are standard. I originally resisted the
standard conventions, because I find them confusing. For example, if
you put
(let loop ([n 0])
(fprintf (current-error-port) "ERR ~a~n" n)
(fprintf (current-output-port) "OUT ~a~n" n)
(loop (add1 n)))
in loop.ss and run
mzscheme -r loop.ss
then your terminal shows alternating "ERR" and "OUT", but in csh
mzscheme -r loop.ss >& out
groups many "ERR"s and "OUT"s together in the "out" file, instead of
always interleaving.
But I've often regretted MzScheme's deviation from standard buffering
conventions, and the v300 switchover seems like a good time to change.
As always, feedback on this change is welcome.
Other changes in v299.29:
* Changed Mac OS preferences file name to "org.plt-scheme.prefs.ss".
* Added binding of greek-lambda character (code point #x03BB) to
syntax that expands to `lambda'. This lambda is exported by the
`mzscheme' module.
DrScheme's "Insert Lambda" menu item now merely inserts a lambda
character, instead of a special object. (Old files with inserted
lambdas still contain the special object.)
* Changed the default mapping for the 'default font in PostScript from
Times to Helvetica
Matthew