raw
asciilifeform_shi...    1      TinyScheme would not exist if it wasn't for MiniScheme. I had just
asciilifeform_shi... 2 written the HTTP server for Ovrimos SQL Server, and I was lamenting the
asciilifeform_shi... 3 lack of a scripting language. Server-side Javascript would have been the
asciilifeform_shi... 4 preferred solution, had there been a Javascript interpreter I could
asciilifeform_shi... 5 lay my hands on. But there weren't. Perl would have been another solution,
asciilifeform_shi... 6 but it was probably ten times bigger that the program it was supposed to
asciilifeform_shi... 7 be embedded in. There would also be thorny licencing issues.
asciilifeform_shi... 8
asciilifeform_shi... 9 So, the obvious thing to do was find a trully small interpreter. Forth
asciilifeform_shi... 10 was a language I had once quasi-implemented, but the difficulty of
asciilifeform_shi... 11 handling dynamic data and the weirdness of the language put me off. I then
asciilifeform_shi... 12 looked around for a LISP interpreter, the next thing I knew was easy to
asciilifeform_shi... 13 implement. Alas, the LeLisp I knew from my days in UPMC (Universite Pierre
asciilifeform_shi... 14 et Marie Curie) had given way to Common Lisp, a megalith of a language!
asciilifeform_shi... 15 Then my search lead me to Scheme, a language I knew was very orthogonal
asciilifeform_shi... 16 and clean. When I found Mini-Scheme, a single C file of some 2400 loc, I
asciilifeform_shi... 17 fell in love with it! What if it lacked floating-point numbers and
asciilifeform_shi... 18 strings! The rest, as they say, is history.
asciilifeform_shi... 19
asciilifeform_shi... 20 Below are the original credits. Don't email Akira KIDA, the address has
asciilifeform_shi... 21 changed.
asciilifeform_shi... 22
asciilifeform_shi... 23 ---------- Mini-Scheme Interpreter Version 0.85 ----------
asciilifeform_shi... 24
asciilifeform_shi... 25 coded by Atsushi Moriwaki (11/5/1989)
asciilifeform_shi... 26
asciilifeform_shi... 27 E-MAIL : moriwaki@kurims.kurims.kyoto-u.ac.jp
asciilifeform_shi... 28
asciilifeform_shi... 29 THIS SOFTWARE IS IN THE PUBLIC DOMAIN
asciilifeform_shi... 30 ------------------------------------
asciilifeform_shi... 31 This software is completely free to copy, modify and/or re-distribute.
asciilifeform_shi... 32 But I would appreciate it if you left my name on the code as the author.
asciilifeform_shi... 33
asciilifeform_shi... 34 This version has been modified by R.C. Secrist.
asciilifeform_shi... 35
asciilifeform_shi... 36 Mini-Scheme is now maintained by Akira KIDA.
asciilifeform_shi... 37
asciilifeform_shi... 38 This is a revised and modified version by Akira KIDA.
asciilifeform_shi... 39 current version is 0.85k4 (15 May 1994)
asciilifeform_shi... 40
asciilifeform_shi... 41 Please send suggestions, bug reports and/or requests to:
asciilifeform_shi... 42 <SDI00379@niftyserve.or.jp>
asciilifeform_shi... 43
asciilifeform_shi... 44
asciilifeform_shi... 45 Features compared to MiniSCHEME
asciilifeform_shi... 46 -------------------------------
asciilifeform_shi... 47
asciilifeform_shi... 48 All code is now reentrant. Interpreter state is held in a 'scheme'
asciilifeform_shi... 49 struct, and many interpreters can coexist in the same program, possibly
asciilifeform_shi... 50 in different threads. The user can specify user-defined memory allocation
asciilifeform_shi... 51 primitives. (see "Programmer's Reference")
asciilifeform_shi... 52
asciilifeform_shi... 53 The reader is more consistent.
asciilifeform_shi... 54
asciilifeform_shi... 55 Strings, characters and flonums are supported. (see "Types")
asciilifeform_shi... 56
asciilifeform_shi... 57 Files being loaded can be nested up to some depth.
asciilifeform_shi... 58
asciilifeform_shi... 59 R5RS I/O is there, plus String Ports. (see "Scheme Reference","I/O")
asciilifeform_shi... 60
asciilifeform_shi... 61 Vectors exist.
asciilifeform_shi... 62
asciilifeform_shi... 63 As a standalone application, it supports command-line arguments.
asciilifeform_shi... 64 (see "Standalone")
asciilifeform_shi... 65
asciilifeform_shi... 66 Running out of memory is now handled.
asciilifeform_shi... 67
asciilifeform_shi... 68 The user can add foreign functions in C. (see "Foreign Functions")
asciilifeform_shi... 69
asciilifeform_shi... 70 The code has been changed slightly, core functions have been moved
asciilifeform_shi... 71 to the library, behavior has been aligned with R5RS etc.
asciilifeform_shi... 72
asciilifeform_shi... 73 Support has been added for user-defined error recovery.
asciilifeform_shi... 74 (see "Error Handling")
asciilifeform_shi... 75
asciilifeform_shi... 76 Support has been added for modular programming.
asciilifeform_shi... 77 (see "Colon Qualifiers - Packages")
asciilifeform_shi... 78
asciilifeform_shi... 79 To enable this, EVAL has changed internally, and can
asciilifeform_shi... 80 now take two arguments, as per R5RS. Environments are supported.
asciilifeform_shi... 81 (see "Colon Qualifiers - Packages")
asciilifeform_shi... 82
asciilifeform_shi... 83 Promises are now evaluated once only.
asciilifeform_shi... 84
asciilifeform_shi... 85 (macro (foo form) ...) is now equivalent to (macro foo (lambda(form) ...))
asciilifeform_shi... 86
asciilifeform_shi... 87 The reader can be extended using new #-expressions
asciilifeform_shi... 88 (see "Reader extensions")