This chapter describes interesting features and problems for the 7.3 release.
The last full release of the MIT Scheme system was version 7.1.3 in 1991. Since that time, there was a partial release of version 7.2 for i386/i486 machines and some MIPS R3000 machines. This section summarizes the changes that have occurred since version 7.1.3. The changes are divided into two parts: those that were incorporated in the 7.2 partial release, and those that were subsequently incorporated.
This is an abbreviated list of the changes that have been incorporated in the 7.3 release since the (partial) 7.2 release.
define-structure
now
creates records by default; these records are identical to those created
with the record abstraction.
call-with-current-continuation
is now properly tail-recursive.
-no-suspend-file
prevents the generation
of `scheme_suspend' files.
call-with-values ;replaces with-values current-load-pathname error-output-port fold-left fold-right interaction-i/o-port notification-output-port prompt-for-command-char prompt-for-command-expression prompt-for-confirmation prompt-for-evaluated-expression prompt-for-expression standard-unparser-method ;replaces unparser/standard-method stream-first stream-rest symbol<? trace-output-port
string-pad-left
now truncates from the left instead of the right.
make-graphics-device
is now a symbol.
set-working-directory-pathname!
changes only the value
for the current REPL.
string-capitalized? string-lower-case? string-upper-case? substring-capitalized? substring-lower-case? substring-upper-case?
M-x dabbrev-expand
M-x describe-syntax
M-x rcs-ci-locked-files
M-x rcs-diff
M-x rcs-list-locked-files
M-x rcs-log
M-x recover-file
M-x show-parameter-list
M-x sort-lines and other sorting commands
auto-mode-alist
variable (as in Emacs) Encryption/decryption of files inDired
Undo upgraded to match GNU Emacs 18.57 Buffers grow/shrink with constant amortized time Emacs 19 tags support (multiple tags files, inclusion)
gzip
instead of compress
.
This is an abbreviated list of the changes that were incorporated in the (partial) 7.2 release since the 7.1 release.
WM_DELETE_WINDOW
protocol) and has some limited support for event
handling. Windows are now closed when they are reclaimed by the garbage
collector.
*default-pathname-defaults* ->namestring ->truename close-port directory-namestring directory-pathname directory-pathname-as-file enough-namestring enough-pathname file-access file-attributes-direct ;same as file-attributes file-modification-time-direct file-modification-time-indirect ;same as file-modification-time file-namestring file-pathname file-readable? host-namestring i/o-port? make-generic-i/o-port make-i/o-port open-i/o-file pathname-simplify pathname-wild? pathname=? port/copy port/input-channel port/operation port/operation-names port/output-channel port/state port? record-copy record-modifier ;replaces record-updater set-port/state!
with-input-from-file
and with-output-to-file
no longer
close the port when they are exited abnormally.
#!optional
and #!rest
to be something distinct
from symbols.
"\nnn
" octal character escapes, much
like those in C.
canonicalize-input-filename canonicalize-input-pathname canonicalize-output-filename canonicalize-output-pathname canonicalize-overwrite-filename canonicalize-overwrite-pathname home-directory-pathname init-file-truename pathname->absolute-pathname pathname->input-truename pathname->output-truename pathname->overwrite-truename pathname->string pathname-components pathname-default-host pathname-directory-path pathname-directory-string pathname-name-path pathname-name-string pathname-new-host pathname-relative? string->pathname symbol->pathname
pathname-default
no longer accepts a host argument.
#f
or a list of symbols and strings with
first element either absolute
or relative
.
unspecific
. unspecific
now means that the field is not
used by the operating system.
M-x manual-entry
M-x outline-mode
M-x shell-resync-dirs
M-x shell-command
M-x shell-command-on-region
M-x telnet
RMAIL summary RMAIL sort REPL mode and asynchronous evaluation Printing commands "run light" for evaluation commands Reading and writing of compressed files (".Z"
suffix) Reading and writing of encrypted files (".KY"
suffix) Compress/uncompress commands forDired
Support for X protocols:WM_DELETE_WINDOW
andWM_TAKE_FOCUS
Time, load, and mail notification in mode line
This release introduces an important new feature: the compiler can generate output in C, which can then be compiled and linked using the usual C development tools. This feature is being used to support architectures, such as the SPARC and IBM RS6000, for which the compiler does not have native-code support.
MIT Scheme systems that have been built using this compiler feature are referred to as C back-end systems. This section provides a brief description of the features and known problems for such systems.
This section describes the general design of C back-end systems.
unsigned
data items and addresses fit into the same memory, and
if union
-ed, take the same space.
COMPILE_FOR_STATIC_LINKING
if it is to be statically linked into
the microcode or collected into a larger dynamically-loadable
library (e.g. edwin or the compiler). If you'd like to put together a
shared library of a large subsystem that you have written, please
contact us for advice on how it can be done.
This section details problems and shortcomings of the system that are specific to the C back-end.
compile-procedure
and compile-scode
do not work. This
will be fixed for a future release and is not very hard to bypass in
most cases. compile-procedure
gives an error.
compile-scode
returns something which is not a compiled
expression. cf
and compile-bin-file
work.
disk-restore
, previously loaded
modules are still mapped. In addition, at least in some versions of
unix, the shared object file cannot be deleted while it is loaded, so
recompilation of a module in place will fail if some process has it
already loaded.
fasdump
does not work for compiled code. It gives an error.
Only bands can be dumped.
do { body } while (0)Most of these macros are not really necessary, and the code generator could just issue the body directly.
(load "foo.scm")
in the
interaction buffer and got an error, say a mis-matched parenthesis.
You then switch to the foo.scm
buffer, fix the problem and then
try to save the file.
Edwin refuses, saying
Unable to open file "your-path\\foo.scm" because: UnknownWork-around: In the interaction buffer: Quit to top level. Do a
(gc-flip)
, which forces the file to be closed when the file port
is garbage-collected. Now you will be able to save the file.
MITSCHEME_INF_DIRECTORY
sometimes does not work.
The runtime system cannot find the debugging information unless it is on
the `C:' drive.
To test if the debugging information is available, try
(pp pp)If the debugging information is available the
pp
procedure
pretty-prints procedures as Scheme code.
If the information cannot be found then it prints the procedure as an
opaque object, similar to this:
#[compiled-procedure 13 ("pp" #x2) #xF #x646BF7]
(edwin-load "dabbrev")in your `edwin.ini' file.
emm386
you may have to put the following in
`config.sys':
device=emm386 noems novcpi