intro-ack.texi 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. @c Introduction & acknowledgement chapters.
  2. @node Introduction & acknowledgements
  3. @chapter Introduction
  4. Scheme48 is an implementation of Scheme based on a byte-code virtual
  5. machine with design goals of simplicity and cleanliness. To briefly
  6. enumerate some interesting aspects of it, Scheme48 features:
  7. @itemize @bullet
  8. @item
  9. an advanced module system based on Jonathan Rees's W7 security kernel
  10. with well-integrated interaction between macros and modules;
  11. @item
  12. a virtual machine written in a dialect of Scheme itself, Pre-Scheme,
  13. for which a compiler is written with Scheme48;
  14. @item
  15. a sophisticated, user-level, pre@"emptive multithreading system with
  16. numerous high-level concurrency abstractions;
  17. @item
  18. a composable, lock-free shared-memory thread synchronization mechanism
  19. known as @dfn{optimistic concurrency}; and
  20. @item
  21. an advanced user environment that is well-integrated with the module
  22. and thread systems to facilitate very rapid development of software
  23. systems scaling from small to large and single-threaded to
  24. multi-threaded.
  25. @end itemize
  26. It was originally written by Jonathan Rees and Richard Kelsey in 1986
  27. in response to the fact that so many Lisp implementations had started
  28. out simple and grown to be complex monsters of projects. It has been
  29. used in a number of research areas, including:
  30. @itemize @bullet
  31. @item
  32. mobile robots at Cornell [Donald 92];
  33. @item
  34. a multi-user collaboration system, sometimes known as a `MUD'
  35. (`multi-user dungeon') or `MUSE' (`multi-user simulation environment'),
  36. as well as general research in capability-based security [Museme; Rees
  37. 96]; and
  38. @item
  39. advanced distributed computing with higher-order mobile agents at NEC's
  40. Princeton research lab [Cejtin @etal{} 95].
  41. @end itemize
  42. The system is tied together in a modular fashion by a configuration
  43. language that permits quite easy mixing and matching of components, so
  44. much so that Scheme48 can be used essentially as its own OS, as it was
  45. in Cornell's mobile robots program, or just as easily within another,
  46. as the standard distribution is. The standard distribution is quite
  47. portable and needs only a 32-bit byte-addressed POSIX system.
  48. The name `Scheme48' commemorates the time it took Jonathan Rees and
  49. Richard Kelsey to originally write Scheme48 on August 6th & 7th, 1986:
  50. forty-eight hours. (It has been joked that the system has expanded to
  51. such a size now that it requires forty-eight hours to @emph{read} the
  52. source.)
  53. @section This manual
  54. This manual begins in the form of an introduction to the usage of
  55. Scheme48, suitable for those new to the system, after which it is
  56. primarily a reference material, organized by subject. Included in the
  57. manual is also a complete reference manual for Pre-Scheme, a low-level
  58. dialect of Scheme for systems programming and in which the Scheme48
  59. virtual machine is written; @pxref{Pre-Scheme}.
  60. This manual is, except for some sections pilfered and noted as such
  61. from the official but incomplete Scheme48 reference manual, solely the
  62. work of Taylor Campbell, on whom all responsibility for the content of
  63. the manual lies. The authors of Scheme48 do not endorse this manual.
  64. @section Acknowledgements
  65. Thanks to Jonathan Rees and Richard Kelsey for having decided so many
  66. years ago to make a simple Scheme implementation with a clean design in
  67. the first place, and for having worked on it so hard for so many years
  68. (almost twenty!); to Martin Gasbichler and Mike Sperber, for having
  69. picked up Scheme48 in the past couple years when Richard and Jonathan
  70. were unable to work actively on it; to Jeremy Fincher for having asked
  71. numerous questions about Scheme48 as he gathered knowledge from which
  72. he intended to build an implementation of his own Lisp dialect, thereby
  73. inducing me to decide to write the manual in the first place; to Jorgen
  74. Sch@"afer, for having also asked so many questions, proofread various
  75. drafts, and made innumerable suggestions to the manual.