|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: R T
Length: 5936 (0x1730) Types: TextFile Names: »Readme.unx«
└─⟦a0efdde77⟧ Bits:30001252 EUUGD11 Tape, 1987 Spring Conference Helsinki └─⟦this⟧ »EUUGD11/gnu-31mar87/scheme/Readme.unx«
Some information on the implementation of Scheme and where things are. Unix version. Scheme consists of two parts, the "microcode" and the runtime system: - The microcode is the part implemented in C, and consists of the virtual machine (interpreter) and the primitives plus support routines. - The runtime system is written in Scheme and contains the read-eval-print loop and some debugging and programming tools. There are many possible runtime systems and 3 are generated when Scheme is installed. The various runtime systems live in the bin subdirectory of the Scheme hierarchy. The runtime systems generated are: o The bare system, which contains only the support for the read-eval-print loop. It lives in bare.bin . o The normal development system which is the one we (the development group at MIT) use. It lives in normal.bin . o The student system which is used for MIT course 6.001 (Structure and interpretation of Computer Programs, text by Abelson, Sussman, and Sussman), a simpler to use but somewhat restricted version of the development system. It lives in scheme.bin and is the default. To change the default to the development system , connect (cd) to the bin subdirectory, rename (mv) scheme.bin to student.bin and normal.bin to scheme.bin. Description of the Scheme directory hierarchy: Assume in the following that /scheme is the Scheme root directory (tar will probably leave it as dist in the current directory). /scheme/microcode contains the C sources and object code for the microcode. It also contains some utility programs. In particular, it contains Psbtobin, which is the program used to convert between portable format Scheme binaries, and internal format Scheme binaries (see /scheme/psb below). /scheme/scm contains the scheme sources for the runtime system. /scheme/bin contains the binary ("fasloadable") versions of the files in /scheme/scm, and the generated runtime systems. The release tape contains an empty bin directory, but the installation procedure creates these files from the psb directory (see below). /scheme/psb contains the portable version of the scheme runtime binaries. These are the same as the files in bin but in a portable format independent of character set, machine word size, byte order, and more easily used over serial lines. /scheme also contains some utilities. Schloader.c is a program you may want to install as default instead of Scheme. It looks in a file to obtain the band file name (runtime system) and the microcode file name, and then invokes the microcode on this band. Edit it to specify where to look for this information file, and edit scheme_version to contain the correct filenames. Band.scm is a scheme source used to generate the runtime systems. Some Interesting mods 1) New primitives a) Write C procedures which will work as Scheme primitives (see the file microcode/prims.h for more information). For an example see microcode/sample.c or microcode/xdebug.c . b) Change the makefile in the microcode directory so that the Scheme system will know about the new primitive files: change the PRIM_SOURCES and PRIM_OBJECTS make macros to be lists with all the relevant files. c) Do "make scheme" in the microcode directory. If there are no compilation errors, a new Scheme microcode will be linked. d) Once the microcode has been generated (step b above), load up a Scheme, where the primitives can be obtained by using MAKE-PRIMITIVE-PROCEDURE: (MAKE-PRIMITIVE-PROCEDURE <symbol>) will return a procedure object corresponding to a primitive named <symbol>, if there is one. It can then be used like any other procedure. For examples, see the file sample.scm in the scm directory. 2) Executable scheme When scheme starts up it loads a band (a "linked" runtime system is called a band for historical reasons). This may be an unreasonably slow process, so you may want to circumvent it by dumping a Scheme which has the runtime system already loaded (as described below). The mechanism implementing this uses unexec.c, a file from GNU-EMACS. It is heavily conditionalized for various machines and operating systems, but we have only tried it on two configurations (VAX/BSD 4.2, and HP9000s300/HPUX). If you have GNU-EMACS on your machine, and it dumps an executable image, you should be able to make this work. Look at microcode/dumpworld.c and microcode/unexec.c. It is implemented using the optional primitive mechanism (see 1 above). To obtain a version of scheme which can make an executable dump of itself, add dumpworld.c and dumpworld.o to the PRIM... lines of the makefile as specified above. Link a new Scheme microcode. Once this is done, start scheme (with a normal system, instead of a student system) and, at scheme, type (dump-world "xscheme") This will make a file called xscheme which when executed will start a scheme with a normal runtime system already loaded. You may want to make this the default scheme that users get when they type scheme. Note: If you write primitives (or other modifications that you feel other people might be interested in (dumpworld.c for other systems, for example)), please send them to us so that we can include them in a later release. 3) Scheme compiler The compiler exists only for Vaxes running BSD4.2, is experimental, very unreliable, and hard to use. We will document how to generate a system with it and how to use it when it stabilizes (next release, hopefully). We do not distribute this compiler as part of the release. For bug reports send computer mail to BUG-CSCHEME%MIT-OZ@MIT-MC (on the Arpanet) or US Snail to Scheme Team c/o Prof. Hal Abelson 545 Technology Sq. rm 410 Cambridge MA 02139 Other related mailing lists: INFO-CSCHEME%MIT-OZ@MIT-MC Questions, notices of bug fixes, etc. Send mail to INFO-CSCHEME-REQUEST to be added. SCHEME@MIT-MC Applications, mostly for educational uses. Send mail to SCHEME-REQUEST to be added.