aboutsummaryrefslogtreecommitdiffstats
path: root/scm.info
diff options
context:
space:
mode:
Diffstat (limited to 'scm.info')
-rwxr-xr-x[-rw-r--r--]scm.info3260
1 files changed, 1818 insertions, 1442 deletions
diff --git a/scm.info b/scm.info
index f1a693a..ac9f9dd 100644..100755
--- a/scm.info
+++ b/scm.info
@@ -1,16 +1,16 @@
-This is scm.info, produced by makeinfo version 4.8 from scm.texi.
+This is scm-5f2.info, produced by makeinfo version 4.13 from scm.texi. |
-This manual is for SCM (version 5e5, February 2008), and algorithmic |
-language Scheme implementation.
+This manual is for SCM (version 5f1, May 2013), an implementation of |
+the algorithmic language Scheme.
Copyright (C) 1990-2007 Free Software Foundation, Inc.
- Permission is granted to copy, distribute and/or modify this |
- document under the terms of the GNU Free Documentation License, |
- Version 1.2 or any later version published by the Free Software |
- Foundation; with no Invariant Sections, no Front-Cover Texts, and |
- no Back-Cover Texts. A copy of the license is included in the |
- section entitled "GNU Free Documentation License." |
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.3 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, no Front-Cover Texts, and
+ no Back-Cover Texts. A copy of the license is included in the
+ section entitled "GNU Free Documentation License."
INFO-DIR-SECTION The Algorithmic Language Scheme
START-INFO-DIR-ENTRY
@@ -18,22 +18,22 @@ START-INFO-DIR-ENTRY
END-INFO-DIR-ENTRY

-File: scm.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir)
-
+File: scm-5f2.info, Node: Top, Next: Overview, Prev: (dir), Up: (dir)
+ |
SCM
***
-This manual is for SCM (version 5e5, February 2008), and algorithmic |
-language Scheme implementation.
+This manual is for SCM (version 5f1, May 2013), an implementation of |
+the algorithmic language Scheme.
Copyright (C) 1990-2007 Free Software Foundation, Inc.
- Permission is granted to copy, distribute and/or modify this |
- document under the terms of the GNU Free Documentation License, |
- Version 1.2 or any later version published by the Free Software |
- Foundation; with no Invariant Sections, no Front-Cover Texts, and |
- no Back-Cover Texts. A copy of the license is included in the |
- section entitled "GNU Free Documentation License." |
+ Permission is granted to copy, distribute and/or modify this
+ document under the terms of the GNU Free Documentation License,
+ Version 1.3 or any later version published by the Free Software
+ Foundation; with no Invariant Sections, no Front-Cover Texts, and
+ no Back-Cover Texts. A copy of the license is included in the
+ section entitled "GNU Free Documentation License."
* Menu:
@@ -46,15 +46,15 @@ Copyright (C) 1990-2007 Free Software Foundation, Inc.
* Index::

-File: scm.info, Node: Overview, Next: Installing SCM, Prev: Top, Up: Top
-
+File: scm-5f2.info, Node: Overview, Next: Installing SCM, Prev: Top, Up: Top
+ |
1 Overview
**********
-SCM is a portable Scheme implementation written in C. SCM provides a |
+SCM is a portable Scheme implementation written in C. SCM provides a
machine independent platform for [JACAL], a symbolic algebra system.
-SCM supports and requires the SLIB Scheme library. SCM, SLIB, and |
-JACAL are GNU projects. |
+SCM supports and requires the SLIB Scheme library. SCM, SLIB, and
+JACAL are GNU projects.
* Menu:
@@ -64,8 +64,8 @@ JACAL are GNU projects. |
* Bibliography::

-File: scm.info, Node: SCM Features, Next: SCM Authors, Prev: Overview, Up: Overview
-
+File: scm-5f2.info, Node: SCM Features, Next: SCM Authors, Prev: Overview, Up: Overview
+ |
1.1 Features
============
@@ -105,7 +105,7 @@ File: scm.info, Node: SCM Features, Next: SCM Authors, Prev: Overview, Up: O
database, X-window graphics, BGI graphics, Motif, and Open-Windows
packages.
- * The Hobbit compiler and dynamic linking of compiled modules. |
+ * The Hobbit compiler and dynamic linking of compiled modules.
* User definable responses to interrupts and errors,
Process-syncronization primitives. Setable levels of monitoring
@@ -113,12 +113,12 @@ File: scm.info, Node: SCM Features, Next: SCM Authors, Prev: Overview, Up: O
function). `Restart', `quit', and `exec'.

-File: scm.info, Node: SCM Authors, Next: Copying, Prev: SCM Features, Up: Overview
-
+File: scm-5f2.info, Node: SCM Authors, Next: Copying, Prev: SCM Features, Up: Overview
+ |
1.2 Authors
===========
-Aubrey Jaffer (agj @ alum.mit.edu)
+Aubrey Jaffer (agj@alum.mit.edu)
Most of SCM.
Radey Shouman
@@ -142,8 +142,8 @@ There are many other contributors to SCM. They are acknowledged in the
file `ChangeLog', a log of changes that have been made to scm.

-File: scm.info, Node: Copying, Next: Bibliography, Prev: SCM Authors, Up: Overview
-
+File: scm-5f2.info, Node: Copying, Next: Bibliography, Prev: SCM Authors, Up: Overview
+ |
1.3 Copyright
=============
@@ -159,27 +159,27 @@ Authors have assigned their SCM copyrights to:
* GNU Free Documentation License:: Copying this Manual

-File: scm.info, Node: The SCM License, Next: SIOD copyright, Prev: Copying, Up: Copying
-
+File: scm-5f2.info, Node: The SCM License, Next: SIOD copyright, Prev: Copying, Up: Copying
+ |
1.3.1 The SCM License
---------------------
-This program is free software: you can redistribute it and/or modify it |
-under the terms of the GNU Lesser General Public License as published |
-by the Free Software Foundation, either version 3 of the License, or |
+This program is free software: you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published
+by the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Lesser General Public License for more details. |
+Lesser General Public License for more details.
-You should have received a copy of the GNU Lesser General Public |
-License along with this program. If not, see |
-`http://www.gnu.org/licenses/'. |
+You should have received a copy of the GNU Lesser General Public
+License along with this program. If not, see
+`http://www.gnu.org/licenses/'.

-File: scm.info, Node: SIOD copyright, Next: GNU Free Documentation License, Prev: The SCM License, Up: Copying
+File: scm-5f2.info, Node: SIOD copyright, Next: GNU Free Documentation License, Prev: The SCM License, Up: Copying
|
1.3.2 SIOD copyright
--------------------
@@ -213,439 +213,493 @@ Paradigm Associates Inc
Cambridge, MA 02138

-File: scm.info, Node: GNU Free Documentation License, Prev: SIOD copyright, Up: Copying
- |
-1.3.3 GNU Free Documentation License |
------------------------------------- |
- |
- Version 1.2, November 2002 |
- |
- Copyright (C) 2000,2001,2002 Free Software Foundation, Inc. |
- 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
- |
- Everyone is permitted to copy and distribute verbatim copies |
- of this license document, but changing it is not allowed. |
- |
- 0. PREAMBLE |
- |
- The purpose of this License is to make a manual, textbook, or other |
- functional and useful document "free" in the sense of freedom: to |
- assure everyone the effective freedom to copy and redistribute it, |
- with or without modifying it, either commercially or |
- noncommercially. Secondarily, this License preserves for the |
- author and publisher a way to get credit for their work, while not |
- being considered responsible for modifications made by others. |
- |
- This License is a kind of "copyleft", which means that derivative |
- works of the document must themselves be free in the same sense. |
- It complements the GNU General Public License, which is a copyleft |
- license designed for free software. |
- |
- We have designed this License in order to use it for manuals for |
- free software, because free software needs free documentation: a |
- free program should come with manuals providing the same freedoms |
- that the software does. But this License is not limited to |
- software manuals; it can be used for any textual work, regardless |
- of subject matter or whether it is published as a printed book. |
- We recommend this License principally for works whose purpose is |
- instruction or reference. |
- |
- 1. APPLICABILITY AND DEFINITIONS |
- |
- This License applies to any manual or other work, in any medium, |
- that contains a notice placed by the copyright holder saying it |
- can be distributed under the terms of this License. Such a notice |
- grants a world-wide, royalty-free license, unlimited in duration, |
- to use that work under the conditions stated herein. The |
- "Document", below, refers to any such manual or work. Any member |
- of the public is a licensee, and is addressed as "you". You |
- accept the license if you copy, modify or distribute the work in a |
- way requiring permission under copyright law. |
- |
- A "Modified Version" of the Document means any work containing the |
- Document or a portion of it, either copied verbatim, or with |
- modifications and/or translated into another language. |
- |
- A "Secondary Section" is a named appendix or a front-matter section |
- of the Document that deals exclusively with the relationship of the |
- publishers or authors of the Document to the Document's overall |
- subject (or to related matters) and contains nothing that could |
- fall directly within that overall subject. (Thus, if the Document |
- is in part a textbook of mathematics, a Secondary Section may not |
- explain any mathematics.) The relationship could be a matter of |
- historical connection with the subject or with related matters, or |
- of legal, commercial, philosophical, ethical or political position |
- regarding them. |
- |
- The "Invariant Sections" are certain Secondary Sections whose |
- titles are designated, as being those of Invariant Sections, in |
- the notice that says that the Document is released under this |
- License. If a section does not fit the above definition of |
- Secondary then it is not allowed to be designated as Invariant. |
- The Document may contain zero Invariant Sections. If the Document |
- does not identify any Invariant Sections then there are none. |
- |
- The "Cover Texts" are certain short passages of text that are |
- listed, as Front-Cover Texts or Back-Cover Texts, in the notice |
- that says that the Document is released under this License. A |
- Front-Cover Text may be at most 5 words, and a Back-Cover Text may |
- be at most 25 words. |
- |
- A "Transparent" copy of the Document means a machine-readable copy, |
- represented in a format whose specification is available to the |
- general public, that is suitable for revising the document |
- straightforwardly with generic text editors or (for images |
- composed of pixels) generic paint programs or (for drawings) some |
- widely available drawing editor, and that is suitable for input to |
- text formatters or for automatic translation to a variety of |
- formats suitable for input to text formatters. A copy made in an |
- otherwise Transparent file format whose markup, or absence of |
- markup, has been arranged to thwart or discourage subsequent |
- modification by readers is not Transparent. An image format is |
- not Transparent if used for any substantial amount of text. A |
- copy that is not "Transparent" is called "Opaque". |
- |
- Examples of suitable formats for Transparent copies include plain |
- ASCII without markup, Texinfo input format, LaTeX input format, |
- SGML or XML using a publicly available DTD, and |
- standard-conforming simple HTML, PostScript or PDF designed for |
- human modification. Examples of transparent image formats include |
- PNG, XCF and JPG. Opaque formats include proprietary formats that |
- can be read and edited only by proprietary word processors, SGML or |
- XML for which the DTD and/or processing tools are not generally |
- available, and the machine-generated HTML, PostScript or PDF |
- produced by some word processors for output purposes only. |
- |
- The "Title Page" means, for a printed book, the title page itself, |
- plus such following pages as are needed to hold, legibly, the |
- material this License requires to appear in the title page. For |
- works in formats which do not have any title page as such, "Title |
- Page" means the text near the most prominent appearance of the |
- work's title, preceding the beginning of the body of the text. |
- |
- A section "Entitled XYZ" means a named subunit of the Document |
- whose title either is precisely XYZ or contains XYZ in parentheses |
- following text that translates XYZ in another language. (Here XYZ |
- stands for a specific section name mentioned below, such as |
- "Acknowledgements", "Dedications", "Endorsements", or "History".) |
- To "Preserve the Title" of such a section when you modify the |
- Document means that it remains a section "Entitled XYZ" according |
- to this definition. |
- |
- The Document may include Warranty Disclaimers next to the notice |
- which states that this License applies to the Document. These |
- Warranty Disclaimers are considered to be included by reference in |
- this License, but only as regards disclaiming warranties: any other |
- implication that these Warranty Disclaimers may have is void and |
- has no effect on the meaning of this License. |
- |
- 2. VERBATIM COPYING |
- |
- You may copy and distribute the Document in any medium, either |
- commercially or noncommercially, provided that this License, the |
- copyright notices, and the license notice saying this License |
- applies to the Document are reproduced in all copies, and that you |
- add no other conditions whatsoever to those of this License. You |
- may not use technical measures to obstruct or control the reading |
- or further copying of the copies you make or distribute. However, |
- you may accept compensation in exchange for copies. If you |
- distribute a large enough number of copies you must also follow |
- the conditions in section 3. |
- |
- You may also lend copies, under the same conditions stated above, |
- and you may publicly display copies. |
- |
- 3. COPYING IN QUANTITY |
- |
- If you publish printed copies (or copies in media that commonly |
- have printed covers) of the Document, numbering more than 100, and |
- the Document's license notice requires Cover Texts, you must |
- enclose the copies in covers that carry, clearly and legibly, all |
- these Cover Texts: Front-Cover Texts on the front cover, and |
- Back-Cover Texts on the back cover. Both covers must also clearly |
- and legibly identify you as the publisher of these copies. The |
- front cover must present the full title with all words of the |
- title equally prominent and visible. You may add other material |
- on the covers in addition. Copying with changes limited to the |
- covers, as long as they preserve the title of the Document and |
- satisfy these conditions, can be treated as verbatim copying in |
- other respects. |
- |
- If the required texts for either cover are too voluminous to fit |
- legibly, you should put the first ones listed (as many as fit |
- reasonably) on the actual cover, and continue the rest onto |
- adjacent pages. |
- |
- If you publish or distribute Opaque copies of the Document |
- numbering more than 100, you must either include a |
- machine-readable Transparent copy along with each Opaque copy, or |
- state in or with each Opaque copy a computer-network location from |
- which the general network-using public has access to download |
- using public-standard network protocols a complete Transparent |
- copy of the Document, free of added material. If you use the |
- latter option, you must take reasonably prudent steps, when you |
- begin distribution of Opaque copies in quantity, to ensure that |
- this Transparent copy will remain thus accessible at the stated |
- location until at least one year after the last time you |
- distribute an Opaque copy (directly or through your agents or |
- retailers) of that edition to the public. |
- |
- It is requested, but not required, that you contact the authors of |
- the Document well before redistributing any large number of |
- copies, to give them a chance to provide you with an updated |
- version of the Document. |
- |
- 4. MODIFICATIONS |
- |
- You may copy and distribute a Modified Version of the Document |
- under the conditions of sections 2 and 3 above, provided that you |
- release the Modified Version under precisely this License, with |
- the Modified Version filling the role of the Document, thus |
- licensing distribution and modification of the Modified Version to |
- whoever possesses a copy of it. In addition, you must do these |
- things in the Modified Version: |
- |
- A. Use in the Title Page (and on the covers, if any) a title |
- distinct from that of the Document, and from those of |
- previous versions (which should, if there were any, be listed |
- in the History section of the Document). You may use the |
- same title as a previous version if the original publisher of |
- that version gives permission. |
- |
- B. List on the Title Page, as authors, one or more persons or |
- entities responsible for authorship of the modifications in |
- the Modified Version, together with at least five of the |
- principal authors of the Document (all of its principal |
- authors, if it has fewer than five), unless they release you |
- from this requirement. |
- |
- C. State on the Title page the name of the publisher of the |
- Modified Version, as the publisher. |
- |
- D. Preserve all the copyright notices of the Document. |
- |
- E. Add an appropriate copyright notice for your modifications |
- adjacent to the other copyright notices. |
- |
- F. Include, immediately after the copyright notices, a license |
- notice giving the public permission to use the Modified |
- Version under the terms of this License, in the form shown in |
- the Addendum below. |
- |
- G. Preserve in that license notice the full lists of Invariant |
- Sections and required Cover Texts given in the Document's |
- license notice. |
- |
- H. Include an unaltered copy of this License. |
- |
- I. Preserve the section Entitled "History", Preserve its Title, |
- and add to it an item stating at least the title, year, new |
- authors, and publisher of the Modified Version as given on |
- the Title Page. If there is no section Entitled "History" in |
- the Document, create one stating the title, year, authors, |
- and publisher of the Document as given on its Title Page, |
- then add an item describing the Modified Version as stated in |
- the previous sentence. |
- |
- J. Preserve the network location, if any, given in the Document |
- for public access to a Transparent copy of the Document, and |
- likewise the network locations given in the Document for |
- previous versions it was based on. These may be placed in |
- the "History" section. You may omit a network location for a |
- work that was published at least four years before the |
- Document itself, or if the original publisher of the version |
- it refers to gives permission. |
- |
- K. For any section Entitled "Acknowledgements" or "Dedications", |
- Preserve the Title of the section, and preserve in the |
- section all the substance and tone of each of the contributor |
- acknowledgements and/or dedications given therein. |
- |
- L. Preserve all the Invariant Sections of the Document, |
- unaltered in their text and in their titles. Section numbers |
- or the equivalent are not considered part of the section |
- titles. |
- |
- M. Delete any section Entitled "Endorsements". Such a section |
- may not be included in the Modified Version. |
- |
- N. Do not retitle any existing section to be Entitled |
- "Endorsements" or to conflict in title with any Invariant |
- Section. |
- |
- O. Preserve any Warranty Disclaimers. |
- |
- If the Modified Version includes new front-matter sections or |
- appendices that qualify as Secondary Sections and contain no |
- material copied from the Document, you may at your option |
- designate some or all of these sections as invariant. To do this, |
- add their titles to the list of Invariant Sections in the Modified |
- Version's license notice. These titles must be distinct from any |
- other section titles. |
- |
- You may add a section Entitled "Endorsements", provided it contains |
- nothing but endorsements of your Modified Version by various |
- parties--for example, statements of peer review or that the text |
- has been approved by an organization as the authoritative |
- definition of a standard. |
- |
- You may add a passage of up to five words as a Front-Cover Text, |
- and a passage of up to 25 words as a Back-Cover Text, to the end |
- of the list of Cover Texts in the Modified Version. Only one |
- passage of Front-Cover Text and one of Back-Cover Text may be |
- added by (or through arrangements made by) any one entity. If the |
- Document already includes a cover text for the same cover, |
- previously added by you or by arrangement made by the same entity |
- you are acting on behalf of, you may not add another; but you may |
- replace the old one, on explicit permission from the previous |
- publisher that added the old one. |
- |
- The author(s) and publisher(s) of the Document do not by this |
- License give permission to use their names for publicity for or to |
- assert or imply endorsement of any Modified Version. |
- |
- 5. COMBINING DOCUMENTS |
- |
- You may combine the Document with other documents released under |
- this License, under the terms defined in section 4 above for |
- modified versions, provided that you include in the combination |
- all of the Invariant Sections of all of the original documents, |
- unmodified, and list them all as Invariant Sections of your |
- combined work in its license notice, and that you preserve all |
- their Warranty Disclaimers. |
- |
- The combined work need only contain one copy of this License, and |
- multiple identical Invariant Sections may be replaced with a single |
- copy. If there are multiple Invariant Sections with the same name |
- but different contents, make the title of each such section unique |
- by adding at the end of it, in parentheses, the name of the |
- original author or publisher of that section if known, or else a |
- unique number. Make the same adjustment to the section titles in |
- the list of Invariant Sections in the license notice of the |
- combined work. |
- |
- In the combination, you must combine any sections Entitled |
- "History" in the various original documents, forming one section |
- Entitled "History"; likewise combine any sections Entitled |
- "Acknowledgements", and any sections Entitled "Dedications". You |
- must delete all sections Entitled "Endorsements." |
- |
- 6. COLLECTIONS OF DOCUMENTS |
- |
- You may make a collection consisting of the Document and other |
- documents released under this License, and replace the individual |
- copies of this License in the various documents with a single copy |
- that is included in the collection, provided that you follow the |
- rules of this License for verbatim copying of each of the |
- documents in all other respects. |
- |
- You may extract a single document from such a collection, and |
- distribute it individually under this License, provided you insert |
- a copy of this License into the extracted document, and follow |
- this License in all other respects regarding verbatim copying of |
- that document. |
- |
- 7. AGGREGATION WITH INDEPENDENT WORKS |
- |
- A compilation of the Document or its derivatives with other |
- separate and independent documents or works, in or on a volume of |
- a storage or distribution medium, is called an "aggregate" if the |
- copyright resulting from the compilation is not used to limit the |
- legal rights of the compilation's users beyond what the individual |
- works permit. When the Document is included in an aggregate, this |
- License does not apply to the other works in the aggregate which |
- are not themselves derivative works of the Document. |
- |
- If the Cover Text requirement of section 3 is applicable to these |
- copies of the Document, then if the Document is less than one half |
- of the entire aggregate, the Document's Cover Texts may be placed |
- on covers that bracket the Document within the aggregate, or the |
- electronic equivalent of covers if the Document is in electronic |
- form. Otherwise they must appear on printed covers that bracket |
- the whole aggregate. |
- |
- 8. TRANSLATION |
- |
- Translation is considered a kind of modification, so you may |
- distribute translations of the Document under the terms of section |
- 4. Replacing Invariant Sections with translations requires special |
- permission from their copyright holders, but you may include |
- translations of some or all Invariant Sections in addition to the |
- original versions of these Invariant Sections. You may include a |
- translation of this License, and all the license notices in the |
- Document, and any Warranty Disclaimers, provided that you also |
- include the original English version of this License and the |
- original versions of those notices and disclaimers. In case of a |
- disagreement between the translation and the original version of |
- this License or a notice or disclaimer, the original version will |
- prevail. |
- |
- If a section in the Document is Entitled "Acknowledgements", |
- "Dedications", or "History", the requirement (section 4) to |
- Preserve its Title (section 1) will typically require changing the |
- actual title. |
- |
- 9. TERMINATION |
- |
- You may not copy, modify, sublicense, or distribute the Document |
- except as expressly provided for under this License. Any other |
- attempt to copy, modify, sublicense or distribute the Document is |
- void, and will automatically terminate your rights under this |
- License. However, parties who have received copies, or rights, |
- from you under this License will not have their licenses |
- terminated so long as such parties remain in full compliance. |
- |
- 10. FUTURE REVISIONS OF THIS LICENSE |
- |
- The Free Software Foundation may publish new, revised versions of |
- the GNU Free Documentation License from time to time. Such new |
- versions will be similar in spirit to the present version, but may |
- differ in detail to address new problems or concerns. See |
- `http://www.gnu.org/copyleft/'. |
- |
- Each version of the License is given a distinguishing version |
- number. If the Document specifies that a particular numbered |
- version of this License "or any later version" applies to it, you |
- have the option of following the terms and conditions either of |
- that specified version or of any later version that has been |
- published (not as a draft) by the Free Software Foundation. If |
- the Document does not specify a version number of this License, |
- you may choose any version ever published (not as a draft) by the |
- Free Software Foundation. |
- |
-ADDENDUM: How to use this License for your documents |
-==================================================== |
- |
-To use this License in a document you have written, include a copy of |
-the License in the document and put the following copyright and license |
-notices just after the title page: |
- |
- Copyright (C) YEAR YOUR NAME. |
- Permission is granted to copy, distribute and/or modify this document |
- under the terms of the GNU Free Documentation License, Version 1.2 |
- or any later version published by the Free Software Foundation; |
- with no Invariant Sections, no Front-Cover Texts, and no Back-Cover |
- Texts. A copy of the license is included in the section entitled ``GNU
- Free Documentation License''. |
- |
-If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, |
-replace the "with...Texts." line with this: |
- |
- with the Invariant Sections being LIST THEIR TITLES, with |
- the Front-Cover Texts being LIST, and with the Back-Cover Texts |
- being LIST. |
- |
-If you have Invariant Sections without Cover Texts, or some other |
-combination of the three, merge those two alternatives to suit the |
-situation. |
- |
-If your document contains nontrivial examples of program code, we |
-recommend releasing these examples in parallel under your choice of |
-free software license, such as the GNU General Public License, to |
-permit their use in free software. |
+File: scm-5f2.info, Node: GNU Free Documentation License, Prev: SIOD copyright, Up: Copying
|
+1.3.3 GNU Free Documentation License
+------------------------------------
+
+ Version 1.3, 3 November 2008
+
+ Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
+ `http://fsf.org/'
+
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ 0. PREAMBLE
+
+ The purpose of this License is to make a manual, textbook, or other
+ functional and useful document "free" in the sense of freedom: to
+ assure everyone the effective freedom to copy and redistribute it,
+ with or without modifying it, either commercially or
+ noncommercially. Secondarily, this License preserves for the
+ author and publisher a way to get credit for their work, while not
+ being considered responsible for modifications made by others.
+
+ This License is a kind of "copyleft", which means that derivative
+ works of the document must themselves be free in the same sense.
+ It complements the GNU General Public License, which is a copyleft
+ license designed for free software.
+
+ We have designed this License in order to use it for manuals for
+ free software, because free software needs free documentation: a
+ free program should come with manuals providing the same freedoms
+ that the software does. But this License is not limited to
+ software manuals; it can be used for any textual work, regardless
+ of subject matter or whether it is published as a printed book.
+ We recommend this License principally for works whose purpose is
+ instruction or reference.
+
+ 1. APPLICABILITY AND DEFINITIONS
+
+ This License applies to any manual or other work, in any medium,
+ that contains a notice placed by the copyright holder saying it
+ can be distributed under the terms of this License. Such a notice
+ grants a world-wide, royalty-free license, unlimited in duration,
+ to use that work under the conditions stated herein. The
+ "Document", below, refers to any such manual or work. Any member
+ of the public is a licensee, and is addressed as "you". You
+ accept the license if you copy, modify or distribute the work in a
+ way requiring permission under copyright law.
+
+ A "Modified Version" of the Document means any work containing the
+ Document or a portion of it, either copied verbatim, or with
+ modifications and/or translated into another language.
+
+ A "Secondary Section" is a named appendix or a front-matter section
+ of the Document that deals exclusively with the relationship of the
+ publishers or authors of the Document to the Document's overall
+ subject (or to related matters) and contains nothing that could
+ fall directly within that overall subject. (Thus, if the Document
+ is in part a textbook of mathematics, a Secondary Section may not
+ explain any mathematics.) The relationship could be a matter of
+ historical connection with the subject or with related matters, or
+ of legal, commercial, philosophical, ethical or political position
+ regarding them.
+
+ The "Invariant Sections" are certain Secondary Sections whose
+ titles are designated, as being those of Invariant Sections, in
+ the notice that says that the Document is released under this
+ License. If a section does not fit the above definition of
+ Secondary then it is not allowed to be designated as Invariant.
+ The Document may contain zero Invariant Sections. If the Document
+ does not identify any Invariant Sections then there are none.
+
+ The "Cover Texts" are certain short passages of text that are
+ listed, as Front-Cover Texts or Back-Cover Texts, in the notice
+ that says that the Document is released under this License. A
+ Front-Cover Text may be at most 5 words, and a Back-Cover Text may
+ be at most 25 words.
+
+ A "Transparent" copy of the Document means a machine-readable copy,
+ represented in a format whose specification is available to the
+ general public, that is suitable for revising the document
+ straightforwardly with generic text editors or (for images
+ composed of pixels) generic paint programs or (for drawings) some
+ widely available drawing editor, and that is suitable for input to
+ text formatters or for automatic translation to a variety of
+ formats suitable for input to text formatters. A copy made in an
+ otherwise Transparent file format whose markup, or absence of
+ markup, has been arranged to thwart or discourage subsequent
+ modification by readers is not Transparent. An image format is
+ not Transparent if used for any substantial amount of text. A
+ copy that is not "Transparent" is called "Opaque".
+
+ Examples of suitable formats for Transparent copies include plain
+ ASCII without markup, Texinfo input format, LaTeX input format,
+ SGML or XML using a publicly available DTD, and
+ standard-conforming simple HTML, PostScript or PDF designed for
+ human modification. Examples of transparent image formats include
+ PNG, XCF and JPG. Opaque formats include proprietary formats that
+ can be read and edited only by proprietary word processors, SGML or
+ XML for which the DTD and/or processing tools are not generally
+ available, and the machine-generated HTML, PostScript or PDF
+ produced by some word processors for output purposes only.
+
+ The "Title Page" means, for a printed book, the title page itself,
+ plus such following pages as are needed to hold, legibly, the
+ material this License requires to appear in the title page. For
+ works in formats which do not have any title page as such, "Title
+ Page" means the text near the most prominent appearance of the
+ work's title, preceding the beginning of the body of the text.
+
+ The "publisher" means any person or entity that distributes copies
+ of the Document to the public.
+
+ A section "Entitled XYZ" means a named subunit of the Document
+ whose title either is precisely XYZ or contains XYZ in parentheses
+ following text that translates XYZ in another language. (Here XYZ
+ stands for a specific section name mentioned below, such as
+ "Acknowledgements", "Dedications", "Endorsements", or "History".)
+ To "Preserve the Title" of such a section when you modify the
+ Document means that it remains a section "Entitled XYZ" according
+ to this definition.
+
+ The Document may include Warranty Disclaimers next to the notice
+ which states that this License applies to the Document. These
+ Warranty Disclaimers are considered to be included by reference in
+ this License, but only as regards disclaiming warranties: any other
+ implication that these Warranty Disclaimers may have is void and
+ has no effect on the meaning of this License.
+
+ 2. VERBATIM COPYING
+
+ You may copy and distribute the Document in any medium, either
+ commercially or noncommercially, provided that this License, the
+ copyright notices, and the license notice saying this License
+ applies to the Document are reproduced in all copies, and that you
+ add no other conditions whatsoever to those of this License. You
+ may not use technical measures to obstruct or control the reading
+ or further copying of the copies you make or distribute. However,
+ you may accept compensation in exchange for copies. If you
+ distribute a large enough number of copies you must also follow
+ the conditions in section 3.
+
+ You may also lend copies, under the same conditions stated above,
+ and you may publicly display copies.
+
+ 3. COPYING IN QUANTITY
+
+ If you publish printed copies (or copies in media that commonly
+ have printed covers) of the Document, numbering more than 100, and
+ the Document's license notice requires Cover Texts, you must
+ enclose the copies in covers that carry, clearly and legibly, all
+ these Cover Texts: Front-Cover Texts on the front cover, and
+ Back-Cover Texts on the back cover. Both covers must also clearly
+ and legibly identify you as the publisher of these copies. The
+ front cover must present the full title with all words of the
+ title equally prominent and visible. You may add other material
+ on the covers in addition. Copying with changes limited to the
+ covers, as long as they preserve the title of the Document and
+ satisfy these conditions, can be treated as verbatim copying in
+ other respects.
+
+ If the required texts for either cover are too voluminous to fit
+ legibly, you should put the first ones listed (as many as fit
+ reasonably) on the actual cover, and continue the rest onto
+ adjacent pages.
+
+ If you publish or distribute Opaque copies of the Document
+ numbering more than 100, you must either include a
+ machine-readable Transparent copy along with each Opaque copy, or
+ state in or with each Opaque copy a computer-network location from
+ which the general network-using public has access to download
+ using public-standard network protocols a complete Transparent
+ copy of the Document, free of added material. If you use the
+ latter option, you must take reasonably prudent steps, when you
+ begin distribution of Opaque copies in quantity, to ensure that
+ this Transparent copy will remain thus accessible at the stated
+ location until at least one year after the last time you
+ distribute an Opaque copy (directly or through your agents or
+ retailers) of that edition to the public.
+
+ It is requested, but not required, that you contact the authors of
+ the Document well before redistributing any large number of
+ copies, to give them a chance to provide you with an updated
+ version of the Document.
+
+ 4. MODIFICATIONS
+
+ You may copy and distribute a Modified Version of the Document
+ under the conditions of sections 2 and 3 above, provided that you
+ release the Modified Version under precisely this License, with
+ the Modified Version filling the role of the Document, thus
+ licensing distribution and modification of the Modified Version to
+ whoever possesses a copy of it. In addition, you must do these
+ things in the Modified Version:
+
+ A. Use in the Title Page (and on the covers, if any) a title
+ distinct from that of the Document, and from those of
+ previous versions (which should, if there were any, be listed
+ in the History section of the Document). You may use the
+ same title as a previous version if the original publisher of
+ that version gives permission.
+
+ B. List on the Title Page, as authors, one or more persons or
+ entities responsible for authorship of the modifications in
+ the Modified Version, together with at least five of the
+ principal authors of the Document (all of its principal
+ authors, if it has fewer than five), unless they release you
+ from this requirement.
+
+ C. State on the Title page the name of the publisher of the
+ Modified Version, as the publisher.
+
+ D. Preserve all the copyright notices of the Document.
+
+ E. Add an appropriate copyright notice for your modifications
+ adjacent to the other copyright notices.
+
+ F. Include, immediately after the copyright notices, a license
+ notice giving the public permission to use the Modified
+ Version under the terms of this License, in the form shown in
+ the Addendum below.
+
+ G. Preserve in that license notice the full lists of Invariant
+ Sections and required Cover Texts given in the Document's
+ license notice.
+
+ H. Include an unaltered copy of this License.
+
+ I. Preserve the section Entitled "History", Preserve its Title,
+ and add to it an item stating at least the title, year, new
+ authors, and publisher of the Modified Version as given on
+ the Title Page. If there is no section Entitled "History" in
+ the Document, create one stating the title, year, authors,
+ and publisher of the Document as given on its Title Page,
+ then add an item describing the Modified Version as stated in
+ the previous sentence.
+
+ J. Preserve the network location, if any, given in the Document
+ for public access to a Transparent copy of the Document, and
+ likewise the network locations given in the Document for
+ previous versions it was based on. These may be placed in
+ the "History" section. You may omit a network location for a
+ work that was published at least four years before the
+ Document itself, or if the original publisher of the version
+ it refers to gives permission.
+
+ K. For any section Entitled "Acknowledgements" or "Dedications",
+ Preserve the Title of the section, and preserve in the
+ section all the substance and tone of each of the contributor
+ acknowledgements and/or dedications given therein.
+
+ L. Preserve all the Invariant Sections of the Document,
+ unaltered in their text and in their titles. Section numbers
+ or the equivalent are not considered part of the section
+ titles.
+
+ M. Delete any section Entitled "Endorsements". Such a section
+ may not be included in the Modified Version.
+
+ N. Do not retitle any existing section to be Entitled
+ "Endorsements" or to conflict in title with any Invariant
+ Section.
+
+ O. Preserve any Warranty Disclaimers.
+
+ If the Modified Version includes new front-matter sections or
+ appendices that qualify as Secondary Sections and contain no
+ material copied from the Document, you may at your option
+ designate some or all of these sections as invariant. To do this,
+ add their titles to the list of Invariant Sections in the Modified
+ Version's license notice. These titles must be distinct from any
+ other section titles.
+
+ You may add a section Entitled "Endorsements", provided it contains
+ nothing but endorsements of your Modified Version by various
+ parties--for example, statements of peer review or that the text
+ has been approved by an organization as the authoritative
+ definition of a standard.
+
+ You may add a passage of up to five words as a Front-Cover Text,
+ and a passage of up to 25 words as a Back-Cover Text, to the end
+ of the list of Cover Texts in the Modified Version. Only one
+ passage of Front-Cover Text and one of Back-Cover Text may be
+ added by (or through arrangements made by) any one entity. If the
+ Document already includes a cover text for the same cover,
+ previously added by you or by arrangement made by the same entity
+ you are acting on behalf of, you may not add another; but you may
+ replace the old one, on explicit permission from the previous
+ publisher that added the old one.
+
+ The author(s) and publisher(s) of the Document do not by this
+ License give permission to use their names for publicity for or to
+ assert or imply endorsement of any Modified Version.
+
+ 5. COMBINING DOCUMENTS
+
+ You may combine the Document with other documents released under
+ this License, under the terms defined in section 4 above for
+ modified versions, provided that you include in the combination
+ all of the Invariant Sections of all of the original documents,
+ unmodified, and list them all as Invariant Sections of your
+ combined work in its license notice, and that you preserve all
+ their Warranty Disclaimers.
+
+ The combined work need only contain one copy of this License, and
+ multiple identical Invariant Sections may be replaced with a single
+ copy. If there are multiple Invariant Sections with the same name
+ but different contents, make the title of each such section unique
+ by adding at the end of it, in parentheses, the name of the
+ original author or publisher of that section if known, or else a
+ unique number. Make the same adjustment to the section titles in
+ the list of Invariant Sections in the license notice of the
+ combined work.
+
+ In the combination, you must combine any sections Entitled
+ "History" in the various original documents, forming one section
+ Entitled "History"; likewise combine any sections Entitled
+ "Acknowledgements", and any sections Entitled "Dedications". You
+ must delete all sections Entitled "Endorsements."
+
+ 6. COLLECTIONS OF DOCUMENTS
+
+ You may make a collection consisting of the Document and other
+ documents released under this License, and replace the individual
+ copies of this License in the various documents with a single copy
+ that is included in the collection, provided that you follow the
+ rules of this License for verbatim copying of each of the
+ documents in all other respects.
+
+ You may extract a single document from such a collection, and
+ distribute it individually under this License, provided you insert
+ a copy of this License into the extracted document, and follow
+ this License in all other respects regarding verbatim copying of
+ that document.
+
+ 7. AGGREGATION WITH INDEPENDENT WORKS
+
+ A compilation of the Document or its derivatives with other
+ separate and independent documents or works, in or on a volume of
+ a storage or distribution medium, is called an "aggregate" if the
+ copyright resulting from the compilation is not used to limit the
+ legal rights of the compilation's users beyond what the individual
+ works permit. When the Document is included in an aggregate, this
+ License does not apply to the other works in the aggregate which
+ are not themselves derivative works of the Document.
+
+ If the Cover Text requirement of section 3 is applicable to these
+ copies of the Document, then if the Document is less than one half
+ of the entire aggregate, the Document's Cover Texts may be placed
+ on covers that bracket the Document within the aggregate, or the
+ electronic equivalent of covers if the Document is in electronic
+ form. Otherwise they must appear on printed covers that bracket
+ the whole aggregate.
+
+ 8. TRANSLATION
+
+ Translation is considered a kind of modification, so you may
+ distribute translations of the Document under the terms of section
+ 4. Replacing Invariant Sections with translations requires special
+ permission from their copyright holders, but you may include
+ translations of some or all Invariant Sections in addition to the
+ original versions of these Invariant Sections. You may include a
+ translation of this License, and all the license notices in the
+ Document, and any Warranty Disclaimers, provided that you also
+ include the original English version of this License and the
+ original versions of those notices and disclaimers. In case of a
+ disagreement between the translation and the original version of
+ this License or a notice or disclaimer, the original version will
+ prevail.
+
+ If a section in the Document is Entitled "Acknowledgements",
+ "Dedications", or "History", the requirement (section 4) to
+ Preserve its Title (section 1) will typically require changing the
+ actual title.
+
+ 9. TERMINATION
+
+ You may not copy, modify, sublicense, or distribute the Document
+ except as expressly provided under this License. Any attempt
+ otherwise to copy, modify, sublicense, or distribute it is void,
+ and will automatically terminate your rights under this License.
+
+ However, if you cease all violation of this License, then your
+ license from a particular copyright holder is reinstated (a)
+ provisionally, unless and until the copyright holder explicitly
+ and finally terminates your license, and (b) permanently, if the
+ copyright holder fails to notify you of the violation by some
+ reasonable means prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+ reinstated permanently if the copyright holder notifies you of the
+ violation by some reasonable means, this is the first time you have
+ received notice of violation of this License (for any work) from
+ that copyright holder, and you cure the violation prior to 30 days
+ after your receipt of the notice.
+
+ Termination of your rights under this section does not terminate
+ the licenses of parties who have received copies or rights from
+ you under this License. If your rights have been terminated and
+ not permanently reinstated, receipt of a copy of some or all of
+ the same material does not give you any rights to use it.
+
+ 10. FUTURE REVISIONS OF THIS LICENSE
+
+ The Free Software Foundation may publish new, revised versions of
+ the GNU Free Documentation License from time to time. Such new
+ versions will be similar in spirit to the present version, but may
+ differ in detail to address new problems or concerns. See
+ `http://www.gnu.org/copyleft/'.
+
+ Each version of the License is given a distinguishing version
+ number. If the Document specifies that a particular numbered
+ version of this License "or any later version" applies to it, you
+ have the option of following the terms and conditions either of
+ that specified version or of any later version that has been
+ published (not as a draft) by the Free Software Foundation. If
+ the Document does not specify a version number of this License,
+ you may choose any version ever published (not as a draft) by the
+ Free Software Foundation. If the Document specifies that a proxy
+ can decide which future versions of this License can be used, that
+ proxy's public statement of acceptance of a version permanently
+ authorizes you to choose that version for the Document.
+
+ 11. RELICENSING
+
+ "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
+ World Wide Web server that publishes copyrightable works and also
+ provides prominent facilities for anybody to edit those works. A
+ public wiki that anybody can edit is an example of such a server.
+ A "Massive Multiauthor Collaboration" (or "MMC") contained in the
+ site means any set of copyrightable works thus published on the MMC
+ site.
+
+ "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
+ license published by Creative Commons Corporation, a not-for-profit
+ corporation with a principal place of business in San Francisco,
+ California, as well as future copyleft versions of that license
+ published by that same organization.
+
+ "Incorporate" means to publish or republish a Document, in whole or
+ in part, as part of another Document.
+
+ An MMC is "eligible for relicensing" if it is licensed under this
+ License, and if all works that were first published under this
+ License somewhere other than this MMC, and subsequently
+ incorporated in whole or in part into the MMC, (1) had no cover
+ texts or invariant sections, and (2) were thus incorporated prior
+ to November 1, 2008.
+
+ The operator of an MMC Site may republish an MMC contained in the
+ site under CC-BY-SA on the same site at any time before August 1,
+ 2009, provided the MMC is eligible for relicensing.
+
+
+ADDENDUM: How to use this License for your documents
+====================================================
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and license
+notices just after the title page:
+
+ Copyright (C) YEAR YOUR NAME.
+ Permission is granted to copy, distribute and/or modify this document
+ under the terms of the GNU Free Documentation License, Version 1.3
+ or any later version published by the Free Software Foundation;
+ with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
+ Texts. A copy of the license is included in the section entitled ``GNU
+ Free Documentation License''.
+
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+ with the Invariant Sections being LIST THEIR TITLES, with
+ the Front-Cover Texts being LIST, and with the Back-Cover Texts
+ being LIST.
+
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License, to
+permit their use in free software.
+

-File: scm.info, Node: Bibliography, Prev: Copying, Up: Overview
+File: scm-5f2.info, Node: Bibliography, Prev: Copying, Up: Overview
|
1.4 Bibliography
================
@@ -659,7 +713,7 @@ File: scm.info, Node: Bibliography, Prev: Copying, Up: Overview
the Algorithmic Language Scheme. `ACM Lisp Pointers' Volume IV,
Number 3 (July-September 1991), pp. 1-55.
- *Note Top: (r4rs)Top.
+ *note Top: (r4rs)Top.
[R5RS]
Richard Kelsey and William Clinger and Jonathan (Rees, editors)
@@ -667,7 +721,7 @@ File: scm.info, Node: Bibliography, Prev: Copying, Up: Overview
`Higher-Order and Symbolic Computation' Volume 11, Number 1 (1998),
pp. 7-105, and `ACM SIGPLAN Notices' 33(9), September 1998.
- *Note Top: (r5rs)Top.
+ *note Top: (r5rs)Top.
[Exrename]
William Clinger Hygienic Macros Through Explicit Renaming `Lisp
@@ -690,13 +744,13 @@ File: scm.info, Node: Bibliography, Prev: Copying, Up: Overview
Todd R. Eigenschink, Dave Love, and Aubrey Jaffer. SLIB, The
Portable Scheme Library. Version 2c8, June 2000.
- *Note Top: (slib)Top.
+ *note Top: (slib)Top.
[JACAL]
Aubrey Jaffer. JACAL Symbolic Mathematics System. Version 1b0,
Sep 1999.
- *Note Top: (jacal)Top.
+ *note Top: (jacal)Top.
`scm.texi'
`scm.info'
@@ -709,42 +763,118 @@ File: scm.info, Node: Bibliography, Prev: Copying, Up: Overview
Documentation of the Xlib - SCM Language X Interface.

-File: scm.info, Node: Installing SCM, Next: Operational Features, Prev: Overview, Up: Top
-
+File: scm-5f2.info, Node: Installing SCM, Next: Operational Features, Prev: Overview, Up: Top
+ |
2 Installing SCM
****************
+SCM runs on a wide variety of platforms. "Distributions" is the |
+starting point for all platforms. The process described in "GNU |
+configure and make" will work on most Unix and GNU/Linux platforms. If |
+it works for you, then you may skip the later sections of "Installing |
+SCM". |
+ |
* Menu:
-* Making SCM:: Bootstrapping.
-* SLIB:: REQUIREd reading.
+* Distributions:: Source and Binaries
+* GNU configure and make:: For Unix and GNU/Linux
* Building SCM::
-* Installing Dynamic Linking::
-* Configure Module Catalog::
-* Saving Images:: Make Fast-Booting Executables
-* Automatic C Preprocessor Definitions::
-* Problems Compiling::
-* Problems Linking::
-* Problems Running::
-* Testing::
-* Reporting Problems::
+* Saving Executable Images:: For Faster Startup
+* Installation::
+* Troubleshooting and Testing::

-File: scm.info, Node: Making SCM, Next: SLIB, Prev: Installing SCM, Up: Installing SCM
-
-2.1 Making SCM
-==============
+File: scm-5f2.info, Node: Distributions, Next: GNU configure and make, Prev: Installing SCM, Up: Installing SCM
+ |
+2.1 Distributions |
+================= |
-The SCM distribution has "Makefile" which contains rules for making
-"scmlit", a "bare-bones" version of SCM sufficient for running `build'.
-`build' is used to compile (or create scripts to compile) full
-featured versions (*note Building SCM::).
+The SCM homepage contains links to precompiled binaries and source |
+distributions. |
-Makefiles are not portable to the majority of platforms. If `Makefile'
-works for you, good; If not, I don't want to hear about it. If you
-need to compile SCM without build, there are several ways to proceed:
+Downloads and instructions for installing the precompiled binaries are |
+at `http://people.csail.mit.edu/jaffer/SCM#QuickStart'. |
+ |
+If there is no precompiled binary for your platform, you may be able to |
+build from the source distribution. The rest of these instructions |
+deal with building and installing SCM and SLIB from sources. |
+ |
+Download (both SCM and SLIB of) either the last release or current |
+development snapshot from |
+`http://people.csail.mit.edu/jaffer/SCM#BuildFromSource'. |
+ |
+Unzip both the SCM and SLIB zips. For example, if you are working in |
+`/usr/local/src/', this will create directories `/usr/local/src/scm/' |
+and `/usr/local/src/slib/'. |
+ |
+
+File: scm-5f2.info, Node: GNU configure and make, Next: Building SCM, Prev: Distributions, Up: Installing SCM
+ |
+2.2 GNU configure and make |
+========================== |
+ |
+`scm/configure' and `slib/configure' are Shell scripts which create the |
+files `scm/config.status' and `slib/config.status' on Unix and MinGW |
+systems. |
+ |
+The `config.status' files are used (included) by the Makefile to |
+control where the packages will be installed by `make install'. With |
+GNU shell (bash) and utilities, the following commands should build and |
+install SCM and SLIB: |
+ |
+ bash$ (cd slib; ./configure --prefix=/usr/local/) |
+ bash$ (cd scm |
+ > ./configure --prefix=/usr/local/ |
+ > make scmlit |
+ > sudo make all |
+ > sudo make install) |
+ bash$ (cd slib; sudo make install) |
+ |
+If the install commands worked, skip to *note Testing::. |
+ |
+If `configure' doesn't work on your system, make `scm/config.status' |
+and `slib/config.status' be empty files. |
+ |
+For additional help on using the `configure' script, run |
+`./configure --help'. |
+ |
+`make all' will attempt to create a dumped executable (*note Saving |
+Executable Images::), which has very small startup latency. If that |
+fails, it will try to compile an ordinary `scm' executable. |
+ |
+Note that the compilation output may contain error messages; be |
+concerned only if the `make install' transcripts contain errors. |
+ |
+`sudo' runs the command after it as user "root". On recent GNU/Linux |
+systems, dumping requires that `make all' be run as user root; hence |
+the use of `sudo'. |
+ |
+`make install' requires root privileges if you are installing to |
+standard Unix locations as specified to (or defaulted by) |
+`./configure'. Note that this is independent of whether you did |
+`sudo make all' or `make all'. |
+ |
+* Menu:
+ |
+* Making scmlit::
+* Makefile targets::
+ |
+
+File: scm-5f2.info, Node: Making scmlit, Next: Makefile targets, Prev: GNU configure and make, Up: GNU configure and make
+ |
+2.2.1 Making scmlit |
+------------------- |
+ |
+The SCM distribution `Makefile' contains rules for making "scmlit", a |
+"bare-bones" version of SCM sufficient for running `build'. `build' is |
+a Scheme program used to compile (or create scripts to compile) full |
+featured versions of SCM (*note Building SCM::). To create scmlit, run |
+`make scmlit' in the `scm/' directory. |
+ |
+Makefiles are not portable to the majority of platforms. If you need |
+to compile SCM without `scmlit', there are several ways to proceed: |
- * Use the build (http://swiss.csail.mit.edu/~jaffer/buildscm.html)
+ * Use the build (http://people.csail.mit.edu/jaffer/buildscm.html)
web page to create custom batch scripts for compiling SCM.
* Use SCM on a different platform to run `build' to create a script
@@ -755,51 +885,115 @@ need to compile SCM without build, there are several ways to proceed:
* Create your own script or `Makefile'.
-
-File: scm.info, Node: SLIB, Next: Building SCM, Prev: Making SCM, Up: Installing SCM
-
-2.2 SLIB
-========
-
-[SLIB] is a portable Scheme library meant to provide compatibility and
-utility functions for all standard Scheme implementations. Although
-SLIB is not _neccessary_ to run SCM, I strongly suggest you obtain and
-install it. Bug reports about running SCM without SLIB have very low
-priority. SLIB is available from the same sites as SCM:
+Finding SLIB |
+------------ |
- * swiss.csail.mit.edu:/pub/scm/slib-3b1.tar.gz |
+If you didn't create scmlit using `make scmlit', then you must create a |
+file named `scm/require.scm'. For most installations, |
+`scm/require.scm' can just be copied from `scm/requires.scm', which is |
+part of the SCM distribution. |
- * ftp.gnu.org:/pub/gnu/jacal/slib-3b1.tar.gz |
+If, when executing `scmlit' or `scm', you get a message like: |
-Unpack SLIB (`tar xzf slib-3b1.tar.gz' or `unzip -ao slib-3b1.zip') in |
-an appropriate directory for your system; both `tar' and `unzip' will |
-create the directory `slib'.
+ ERROR: "LOAD couldn't find file " "/usr/local/src/scm/require" |
-Then create a file `require.scm' in the SCM "implementation-vicinity"
-(this is the same directory as where the file `Init5e5.scm' is |
-installed). `require.scm' should have the contents:
+then create a file `require.scm' in the SCM "implementation-vicinity" |
+(this is the same directory as where the file `Init5f1.scm' is). |
+`require.scm' should have the contents: |
(define (library-vicinity) "/usr/local/lib/slib/")
where the pathname string `/usr/local/lib/slib/' is to be replaced by
-the pathname into which you installed SLIB. Absolute pathnames are
-recommended here; if you use a relative pathname, SLIB can get confused
-when the working directory is changed (*note chmod: I/O-Extensions.).
-The way to specify a relative pathname is to append it to the
-implementation-vicinity, which is absolute:
+the pathname into which you unzipped (or installed) SLIB. |
+ |
+Alternatively, you can set the (shell) environment variable |
+`SCHEME_LIBRARY_PATH' to the pathname of the SLIB directory (*note |
+SCHEME_LIBRARY_PATH: SCM Variables.). If set, this environment |
+variable overrides `scm/require.scm'. |
+ |
+Absolute pathnames are recommended here; if you use a relative |
+pathname, SLIB can get confused when the working directory is changed |
+(*note chmod: I/O-Extensions.). The way to specify a relative pathname |
+is to append it to the implementation-vicinity, which is absolute: |
(define library-vicinity
(let ((lv (string-append (implementation-vicinity) "../slib/")))
(lambda () lv)))
-Alternatively, you can set the (shell) environment variable
-`SCHEME_LIBRARY_PATH' to the pathname of the SLIB directory (*note
-SCHEME_LIBRARY_PATH: SCM Variables.). If set, the environment variable
-overrides `require.scm'. Again, absolute pathnames are recommended.
-

-File: scm.info, Node: Building SCM, Next: Installing Dynamic Linking, Prev: SLIB, Up: Installing SCM
+File: scm-5f2.info, Node: Makefile targets, Prev: Making scmlit, Up: GNU configure and make
+ |
+2.2.2 Makefile targets |
+---------------------- |
+ |
+Each of the following four `make' targets creates an executable named |
+`scm'. Each target takes its build options from a file with an `.opt' |
+suffix. If that options file doesn't exist, making that target will |
+create the file with the `-F' features: cautious, bignums, arrays, |
+inexact, engineering-notation, and dynamic-linking. Once that `.opt' |
+file exists, you can edit it to your taste and it will be preserved. |
+ |
+`make scm4' |
+ Produces a R4RS executable named `scm' lacking hygienic macros |
+ (but with defmacro). The build options are taken from `scm4.opt'. |
+ If build or the executable fails, try removing `dynamic-linking' |
+ from `scm4.opt'. |
+ |
+`make scm5' |
+ R5RS; like `make scm4' but with `-F macro'. The build options are |
+ taken from `scm5.opt'. If build or the executable fails, try |
+ removing `dynamic-linking' from `scm5.opt'. |
+ |
+`make dscm4' |
+ Produces a R4RS executable named `udscm4', which it starts and |
+ dumps to a low startup latency executable named `scm'. The build |
+ options are taken from `udscm4.opt'. |
+ |
+ If the build fails, then `build scm4' instead. If the dumped |
+ executable fails to run, then send me a bug report (and use |
+ `build scm4' until the problem with dump is corrected). |
+ |
+`make dscm5' |
+ Like `make dscm4' but with `-F macro'. The build options are |
+ taken from `udscm5.opt'. |
+ |
+ If the build fails, then `build scm5' instead. If the dumped |
+ executable fails to run, then send me a bug report (and use |
+ `build scm5' until the problem with dump is corrected). |
+ |
+ |
+If the above builds fail because of `-F dynamic-linking', then (because |
+they can't be dynamically linked) you will likely want to add some |
+other features to the build's `.opt' file. See the `-F' build option |
+in *note Build Options::. |
+ |
+If dynamic-linking is working, then you will likely want to compile |
+most of the modules as "DLL"s. The build options for compiling DLLs |
+are in `dlls.opt'. |
+ |
+`make x.so' |
+ The `Xlib' module; *note SCM Language X Interface: (Xlibscm)Top. |
+ |
+`make myturtle' |
+ Creates a DLL named `turtlegr.so' which is a simple graphics API. |
+ |
+`make wbscm.so' |
+ The `wb' module; *note B-tree database implementation: (wb)Top. |
+ Compiling this requires that wb source be in a peer directory to |
+ scm. |
+ |
+`make dlls' |
+ Compiles all the distributed library modules, but not `wbscm.so'. |
+ Many of the module compiles are recursively invoked in such a way |
+ that failure of one (which could be due to a system library not |
+ being installed) doesn't cause the top-level `make dlls' to fail. |
+ If `make dlls' fails as a whole, it is time to submit a bug report |
+ (*note Reporting Problems::). |
+ |
+
+File: scm-5f2.info, Node: Building SCM, Next: Saving Executable Images, Prev: GNU configure and make, Up: Installing SCM
+ |
2.3 Building SCM
================
@@ -807,40 +1001,103 @@ The file "build" loads the file "build.scm", which constructs a
relational database of how to compile and link SCM executables.
`build.scm' has information for the platforms which SCM has been ported
to (of which I have been notified). Some of this information is old,
-incorrect, or incomplete. Send corrections and additions to jaffer @
-ai.mit.edu.
+incorrect, or incomplete. Send corrections and additions to |
+agj@alum.mit.edu. |
* Menu:
* Invoking Build::
-* Build Options::
+* Build Options:: build --help
* Compiling and Linking Custom Files::

-File: scm.info, Node: Invoking Build, Next: Build Options, Prev: Building SCM, Up: Building SCM
-
+File: scm-5f2.info, Node: Invoking Build, Next: Build Options, Prev: Building SCM, Up: Building SCM
+ |
2.3.1 Invoking Build
--------------------
-The _all_ method will also work for MS-DOS and unix. Use the _all_
-method if you encounter problems with `build'.
+This section teaches how to use `build', a Scheme program for creating |
+compilation scripts to produce SCM executables and library modules. |
+The options accepted by `build' are documented in *note Build Options::. |
+ |
+Use the _any_ method if you encounter problems with the other two |
+methods (MS-DOS, Unix). |
MS-DOS
From the SCM source directory, type `build' followed by up to 9
command line arguments.
-unix
+Unix |
From the SCM source directory, type `./build' followed by command
line arguments.
-_all_
+_any_ |
From the SCM source directory, start `scm' or `scmlit' and type
`(load "build")'. Alternatively, start `scm' or `scmlit' with the
- command line argument `-ilbuild'.
+ command line argument `-ilbuild'. This method will also work for |
+ MS-DOS and Unix. |
+ |
+ After loading various SLIB modules, the program will print: |
+ |
+ type (b "build <command-line>") to build |
+ type (b*) to enter build command loop |
+ |
+ The `b*' procedure enters into a "build shell" where you can enter |
+ commands (with or without the `build'). Blank lines are ignored. |
+ To create a build script with all defaults type `build'. |
+ |
+ If the build-shell encouters an error, you can reenter the |
+ build-shell by typing `(b*)'. To exit scm type `(quit)'. |
+ |
+ |
+Here is a transcript of an interactive (b*) build-shell. |
+ |
+ bash$ scmlit |
+ SCM version 5e7, Copyright (C) 1990-2006 Free Software Foundation. |
+ SCM comes with ABSOLUTELY NO WARRANTY; for details type `(terms)'. |
+ This is free software, and you are welcome to redistribute it |
+ under certain conditions; type `(terms)' for details. |
+ > (load "build") |
+ ;loading build |
+ ; loading /home/jaffer/slib/getparam |
+ ; loading /home/jaffer/slib/coerce |
+ ... |
+ ; done loading build.scm |
+ type (b "build <command-line>") to build |
+ type (b*) to enter build command loop |
+ ;done loading build |
+ #<unspecified> |
+ > (b*) |
+ ;loading /home/jaffer/slib/comparse |
+ ;done loading /home/jaffer/slib/comparse.scm |
+ build> -t exe |
+ #! /bin/sh |
+ # unix (linux) script created by SLIB/batch Wed Oct 26 17:14:23 2011 |
+ # [-p linux] |
+ # ================ Write file with C defines |
+ rm -f scmflags.h |
+ echo '#define IMPLINIT "Init5e7.scm"'>>scmflags.h |
+ echo '#define BIGNUMS'>>scmflags.h |
+ echo '#define FLOATS'>>scmflags.h |
+ echo '#define ARRAYS'>>scmflags.h |
+ # ================ Compile C source files |
+ gcc -c continue.c scm.c scmmain.c findexec.c script.c time.c repl.c scl.c eval.c sys.c subr.c debug.c unif.c rope.c
+ # ================ Link C object files |
+ gcc -rdynamic -o scm continue.o scm.o scmmain.o findexec.o script.o time.o repl.o scl.o eval.o sys.o subr.o debug.o unif.o rope.o -lm -lc
+ "scm" |
+ build> -t exe -w myscript.sh |
+ "scm" |
+ build> (quit) |
+No compilation was done. The `-t exe' command shows the compile |
+script. The `-t exe -w myscript.sh' line creates a file `myscript.sh' |
+containing the compile script. To actually compile and link it, type |
+`./myscript.sh'. |
Invoking build without the `-F' option will build or create a shell
script with the `arrays', `inexact', and `bignums' options as defaults.
+Invoking `build' with `-F lit -o scmlit' will make a script for |
+compiling `scmlit'. |
bash$ ./build
-|
@@ -848,7 +1105,7 @@ script with the `arrays', `inexact', and `bignums' options as defaults.
# unix (linux) script created by SLIB/batch
# ================ Write file with C defines
rm -f scmflags.h
- echo '#define IMPLINIT "Init5e5.scm"'>>scmflags.h |
+ echo '#define IMPLINIT "Init5f1.scm"'>>scmflags.h |
echo '#define BIGNUMS'>>scmflags.h
echo '#define FLOATS'>>scmflags.h
echo '#define ARRAYS'>>scmflags.h
@@ -867,7 +1124,7 @@ in the `-p' or `--platform=' option.
# unix (darwin) script created by SLIB/batch
# ================ Write file with C defines
rm -f scmflags.h
- echo '#define IMPLINIT "Init5e5.scm"'>>scmflags.h |
+ echo '#define IMPLINIT "Init5f1.scm"'>>scmflags.h |
# ================ Compile C source files
cc -O3 -c continue.c scm.c scmmain.c findexec.c script.c time.c repl.c scl.c eval.c sys.c subr.c debug.c unif.c rope.c
# ================ Link C object files
@@ -875,8 +1132,8 @@ in the `-p' or `--platform=' option.
cc -o scmlit continue.o scm.o scmmain.o findexec.o script.o time.o repl.o scl.o eval.o sys.o subr.o debug.o unif.o rope.o

-File: scm.info, Node: Build Options, Next: Compiling and Linking Custom Files, Prev: Invoking Build, Up: Building SCM
-
+File: scm-5f2.info, Node: Build Options, Next: Compiling and Linking Custom Files, Prev: Invoking Build, Up: Building SCM
+ |
2.3.2 Build Options
-------------------
@@ -950,7 +1207,7 @@ the SCM command line options.
The `Makefile' calls out builds with the options in `.opt' files:
`dlls.opt'
- Options for Makefile targets mydlls, myturtle, and x.so.
+ Options for Makefile targets dlls, myturtle, and x.so. |
`gdb.opt'
Options for udgdbscm and gdbscm.
@@ -1001,7 +1258,7 @@ the SCM command line options.
-- Build Option: -s PATHNAME
-- Build Option: --scheme-initial=PATHNAME
specifies that PATHNAME should be the default location of the SCM
- initialization file `Init5e5.scm'. SCM tries several likely |
+ initialization file `Init5f1.scm'. SCM tries several likely |
locations before resorting to PATHNAME (*note File-System
Habitat::). If not specified, the current directory (where build
is building) is used.
@@ -1231,6 +1488,9 @@ the SCM command line options.
"wb"
WB database with relational wrapper.
+ "wb-no-threads" |
+ no-comment |
+ |
"windows"
Microsoft Windows executable.
@@ -1242,8 +1502,8 @@ the SCM command line options.

-File: scm.info, Node: Compiling and Linking Custom Files, Prev: Build Options, Up: Building SCM
-
+File: scm-5f2.info, Node: Compiling and Linking Custom Files, Prev: Build Options, Up: Building SCM
+ |
2.3.3 Compiling and Linking Custom Files
----------------------------------------
@@ -1262,7 +1522,7 @@ link your file at compile time, use the `-c' and `-i' options to build:
-|
#! /bin/sh
rm -f scmflags.h
- echo '#define IMPLINIT "/home/jaffer/scm/Init5e5.scm"'>>scmflags.h |
+ echo '#define IMPLINIT "/home/jaffer/scm/Init5f1.scm"'>>scmflags.h |
echo '#define COMPILED_INITS init_foo();'>>scmflags.h
echo '#define BIGNUMS'>>scmflags.h
echo '#define FLOATS'>>scmflags.h
@@ -1278,7 +1538,7 @@ To make a dynamically loadable object file use the `-t dll' option:
-|
#! /bin/sh
rm -f scmflags.h
- echo '#define IMPLINIT "/home/jaffer/scm/Init5e5.scm"'>>scmflags.h |
+ echo '#define IMPLINIT "/home/jaffer/scm/Init5f1.scm"'>>scmflags.h |
echo '#define BIGNUMS'>>scmflags.h
echo '#define FLOATS'>>scmflags.h
echo '#define ARRAYS'>>scmflags.h
@@ -1288,105 +1548,15 @@ To make a dynamically loadable object file use the `-t dll' option:
Once `foo.c' compiles correctly (and your SCM build supports
dynamic-loading), you can load the compiled file with the Scheme command
-`(load "./foo.so")'. See *Note Configure Module Catalog:: for how to
+`(load "./foo.so")'. See *note Configure Module Catalog:: for how to
add a compiled dll file to SLIB's catalog.

-File: scm.info, Node: Installing Dynamic Linking, Next: Configure Module Catalog, Prev: Building SCM, Up: Installing SCM
-
-2.4 Installing Dynamic Linking
-==============================
-
-Dynamic linking has not been ported to all platforms. Operating systems
-in the BSD family (a.out binary format) can usually be ported to "DLD".
-The "dl" library (`#define SUN_DL' for SCM) was a proposed POSIX
-standard and may be available on other machines with "COFF" binary
-format. For notes about porting to MS-Windows and finishing the port
-to VMS *Note VMS Dynamic Linking::.
-
-"DLD" is a library package of C functions that performs "dynamic link
-editing" on GNU/Linux, VAX (Ultrix), Sun 3 (SunOS 3.4 and 4.0),
-SPARCstation (SunOS 4.0), Sequent Symmetry (Dynix), and Atari ST. It
-is available from:
-
- * ftp.gnu.org:pub/gnu/dld-3.3.tar.gz
-
-These notes about using libdl on SunOS are from `gcc.info':
-
- On a Sun, linking using GNU CC fails to find a shared library and
- reports that the library doesn't exist at all.
-
- This happens if you are using the GNU linker, because it does only
- static linking and looks only for unshared libraries. If you have
- a shared library with no unshared counterpart, the GNU linker
- won't find anything.
-
- We hope to make a linker which supports Sun shared libraries, but
- please don't ask when it will be finished-we don't know.
-
- Sun forgot to include a static version of `libdl.a' with some
- versions of SunOS (mainly 4.1). This results in undefined symbols
- when linking static binaries (that is, if you use `-static'). If
- you see undefined symbols `_dlclose', `_dlsym' or `_dlopen' when
- linking, compile and link against the file `mit/util/misc/dlsym.c'
- from the MIT version of X windows.
-
-
-File: scm.info, Node: Configure Module Catalog, Next: Saving Images, Prev: Installing Dynamic Linking, Up: Installing SCM
-
-2.5 Configure Module Catalog
+File: scm-5f2.info, Node: Saving Executable Images, Next: Installation, Prev: Building SCM, Up: Installing SCM
+ |
+2.4 Saving Executable Images |
============================
-
-The SLIB module "catalog" can be extended to define other
-`require'-able packages by adding calls to the Scheme source file
-`mkimpcat.scm'. Within `mkimpcat.scm', the following procedures are
-defined.
-
- -- Function: add-link feature object-file lib1 ...
- FEATURE should be a symbol. OBJECT-FILE should be a string naming
- a file containing compiled "object-code". Each LIBn argument
- should be either a string naming a library file or `#f'.
-
- If OBJECT-FILE exists, the `add-link' procedure registers symbol
- FEATURE so that the first time `require' is called with the symbol
- FEATURE as its argument, OBJECT-FILE and the LIB1 ... are
- dynamically linked into the executing SCM session.
-
- If OBJECT-FILE exists, `add-link' returns `#t', otherwise it
- returns `#f'.
-
- For example, to install a compiled dll `foo', add these lines to
- `mkimpcat.scm':
-
- (add-link 'foo
- (in-vicinity (implementation-vicinity) "foo"
- link:able-suffix))
-
-
- -- Function: add-alias alias feature
- ALIAS and FEATURE are symbols. The procedure `add-alias'
- registers ALIAS as an alias for FEATURE. An unspecified value is
- returned.
-
- `add-alias' causes `(require 'ALIAS)' to behave like `(require
- 'FEATURE)'.
-
- -- Function: add-source feature filename
- FEATURE is a symbol. FILENAME is a string naming a file
- containing Scheme source code. The procedure `add-source'
- registers FEATURE so that the first time `require' is called with
- the symbol FEATURE as its argument, the file FILENAME will be
- `load'ed. An unspecified value is returned.
-
-Remember to delete the file `slibcat' after modifying the file
-`mkimpcat.scm' in order to force SLIB to rebuild its cache.
-
-
-File: scm.info, Node: Saving Images, Next: Automatic C Preprocessor Definitions, Prev: Configure Module Catalog, Up: Installing SCM
-
-2.6 Saving Images
-=================
-
+ |
In SCM, the ability to save running program images is called "dump"
(*note Dump::). In order to make `dump' available to SCM, build with
feature `dump'. `dump'ed executables are compatible with dynamic
@@ -1401,23 +1571,23 @@ file from emacs.
The `dscm4' and `dscm5' targets in the SCM `Makefile' save images from
`udscm4' and `udscm5' executables respectively.
-Recent GNU/Linux innovations interfere with `dump'. For:
+"Address space layout randomization" interferes with `dump'. Here are |
+the fixes for various operating-systems: |
Fedora-Core-1
Remove the `#' from the line `#SETARCH = setarch i386' in the
`Makefile'.
Fedora-Core-3
- `http://jamesthornton.com/writing/emacs-compile.html' writes: [For
- FC3] combreloc has become the default for recent GNU ld, which
- breaks the unexec/undump on all versions of both Emacs and
- XEmacs...
+ `http://jamesthornton.com/writing/emacs-compile.html' [For FC3] |
+ combreloc has become the default for recent GNU ld, which breaks |
+ the unexec/undump on all versions of both Emacs and XEmacs... |
Override by adding the following to `udscm5.opt':
`--linker-options="-z nocombreloc"'
-Kernels later than 2.6.11
- `http://www.opensubscriber.com/message/emacs-devel@gnu.org/1007118.html'
+Linux Kernels later than 2.6.11 |
+`http://www.opensubscriber.com/message/emacs-devel@gnu.org/1007118.html'
mentions the "exec-shield" feature. Kernels later than 2.6.11
must do (as root):
@@ -1427,107 +1597,57 @@ Kernels later than 2.6.11
scripted for targets `dscm4' and `dscm5'. You must either set
`randomize_va_space' to 0 or run as root to dump.
+OS-X 10.6 |
+`http://developer.apple.com/library/mac/#documentation/Darwin/Reference/Manpages/man1/dyld.1.html'
+ The dynamic linker uses the following environment variables. They |
+ affect any program that uses the dynamic linker. |
+ |
+ DYLD_NO_PIE |
+ |
+ Causes dyld to not randomize the load addresses of images in a |
+ process where the main executable was built position independent. |
+ This can be helpful when trying to reproduce and debug a problem |
+ in a PIE. |
+ |

-File: scm.info, Node: Automatic C Preprocessor Definitions, Next: Problems Compiling, Prev: Saving Images, Up: Installing SCM
+File: scm-5f2.info, Node: Installation, Next: Troubleshooting and Testing, Prev: Saving Executable Images, Up: Installing SCM
+ |
+2.5 Installation |
+================ |
-2.7 Automatic C Preprocessor Definitions
-========================================
+Once `scmlit', `scm', and `dlls' have been built, these commands will |
+install them to the locations specified when you ran `./configure': |
+
+ bash$ (cd scm; make install) |
+ bash$ (cd slib; make install) |
+
+Note that installation to system directories (like `/usr/bin/') will |
+require that those commands be run as root: |
+
+ bash$ (cd scm; sudo make install) |
+ bash$ (cd slib; sudo make install) |
-These `#defines' are automatically provided by preprocessors of various
-C compilers. SCM uses the presence or absence of these definitions to
-configure "include file" locations and aliases for library functions.
-If the definition(s) corresponding to your system type is missing as
-your system is configured, add `-DFLAG' to the compilation command
-lines or add a `#define FLAG' line to `scmfig.h' or the beginning of
-`scmfig.h'.
-
- #define Platforms:
- ------- ----------
- ARM_ULIB Huw Rogers free unix library for acorn archimedes
- AZTEC_C Aztec_C 5.2a
- __CYGWIN__ Cygwin
- __CYGWIN32__ Cygwin
- _DCC Dice C on AMIGA
- __GNUC__ Gnu CC (and DJGPP)
- __EMX__ Gnu C port (gcc/emx 0.8e) to OS/2 2.0
- __HIGHC__ MetaWare High C
- __IBMC__ C-Set++ on OS/2 2.1
- _MSC_VER MS VisualC++ 4.2
- MWC Mark Williams C on COHERENT
- __MWERKS__ Metrowerks Compiler; Macintosh and WIN32 (?)
- _POSIX_SOURCE ??
- _QC Microsoft QuickC
- __STDC__ ANSI C compliant
- __TURBOC__ Turbo C and Borland C
- __USE_POSIX ??
- __WATCOMC__ Watcom C on MS-DOS
- __ZTC__ Zortech C
-
- _AIX AIX operating system
- __APPLE__ Apple Darwin
- AMIGA SAS/C 5.10 or Dice C on AMIGA
- __amigaos__ Gnu CC on AMIGA
- atarist ATARI-ST under Gnu CC
- __DragonflyBSD__ DragonflyBSD
- __FreeBSD__ FreeBSD
- GNUDOS DJGPP (obsolete in version 1.08)
- __GO32__ DJGPP (future?)
- hpux HP-UX
- linux GNU/Linux
- macintosh Macintosh (THINK_C and __MWERKS__ define)
- MCH_AMIGA Aztec_c 5.2a on AMIGA
- __MACH__ Apple Darwin
- __MINGW32__ MinGW - Minimalist GNU for Windows
- MSDOS Microsoft C 5.10 and 6.00A
- _MSDOS Microsoft CLARM and CLTHUMB compilers.
- __MSDOS__ Turbo C, Borland C, and DJGPP
- __NetBSD__ NetBSD
- nosve Control Data NOS/VE
- __OpenBSD__ OpenBSD
- SVR2 System V Revision 2.
- sun SunOS
- __SVR4 SunOS
- THINK_C developement environment for the Macintosh
- ultrix VAX with ULTRIX operating system.
- unix most Unix and similar systems and DJGPP (!?)
- __unix__ Gnu CC and DJGPP
- _UNICOS Cray operating system
- vaxc VAX C compiler
- VAXC VAX C compiler
- vax11c VAX C compiler
- VAX11 VAX C compiler
- _Windows Borland C 3.1 compiling for Windows
- _WIN32 MS VisualC++ 4.2 and Cygwin (Win32 API)
- _WIN32_WCE MS Windows CE
- vms (and VMS) VAX-11 C under VMS.
-
- __alpha DEC Alpha processor
- __alpha__ DEC Alpha processor
- hp9000s800 HP RISC processor
- __ia64 GCC on IA64
- __ia64__ GCC on IA64
- _LONGLONG GCC on IA64
- __i386__ DJGPP
- i386 DJGPP
- _M_ARM Microsoft CLARM compiler defines as 4 for ARM.
- _M_ARMT Microsoft CLTHUMB compiler defines as 4 for Thumb.
- MULTIMAX Encore computer
- ppc PowerPC
- __ppc__ PowerPC
- pyr Pyramid 9810 processor
- __sgi__ Silicon Graphics Inc.
- sparc SPARC processor
- sequent Sequent computer
- tahoe CCI Tahoe processor
- vax VAX processor
- __x86_64 AMD Opteron
-
-
-File: scm.info, Node: Problems Compiling, Next: Problems Linking, Prev: Automatic C Preprocessor Definitions, Up: Installing SCM
-
-2.8 Problems Compiling
-======================
+
+File: scm-5f2.info, Node: Troubleshooting and Testing, Prev: Installation, Up: Installing SCM
+ |
+2.6 Troubleshooting and Testing |
+=============================== |
+ |
+* Menu:
+ |
+* Problems Compiling::
+* Problems Linking::
+* Testing::
+* Problems Starting::
+* Problems Running::
+* Reporting Problems::
+ |
+
+File: scm-5f2.info, Node: Problems Compiling, Next: Problems Linking, Prev: Troubleshooting and Testing, Up: Troubleshooting and Testing
+ |
+2.6.1 Problems Compiling |
+------------------------ |
FILE PROBLEM / MESSAGE HOW TO FIX
*.c include file not found. Correct the status of
@@ -1557,21 +1677,66 @@ scl.c syntax error. #define SYSTNAME to your system
type in scl.c (softtype).

-File: scm.info, Node: Problems Linking, Next: Problems Running, Prev: Problems Compiling, Up: Installing SCM
-
-2.9 Problems Linking
-====================
+File: scm-5f2.info, Node: Problems Linking, Next: Testing, Prev: Problems Compiling, Up: Troubleshooting and Testing
+ |
+2.6.2 Problems Linking |
+---------------------- |
PROBLEM HOW TO FIX
_sin etc. missing. Uncomment LIBS in makefile.

-File: scm.info, Node: Problems Running, Next: Testing, Prev: Problems Linking, Up: Installing SCM
-
-2.10 Problems Running
-=====================
+File: scm-5f2.info, Node: Testing, Next: Problems Starting, Prev: Problems Linking, Up: Troubleshooting and Testing
+ |
+2.6.3 Testing |
+------------- |
+ |
+Loading `r4rstest.scm' in the distribution will run an [R4RS] |
+conformance test on `scm'. |
+ |
+ > (load "r4rstest.scm") |
+ -| |
+ ;loading r4rstest.scm |
+ SECTION(2 1) |
+ SECTION(3 4) |
+ #<primitive-procedure boolean?> |
+ #<primitive-procedure char?> |
+ #<primitive-procedure null?> |
+ #<primitive-procedure number?> |
+ ... |
+ |
+Loading `pi.scm' in the distribution will enable you to compute digits |
+of pi. |
+ |
+ > (load "pi.scm") |
+ ;loading pi.scm |
+ ;done loading pi.scm |
+ #<unspecified> |
+ > (pi 100 5) |
+ 00003 14159 26535 89793 23846 26433 83279 50288 41971 69399 |
+ 37510 58209 74944 59230 78164 06286 20899 86280 34825 34211 |
+ 70679 |
+ ;Evaluation took 550 ms (60 in gc) 36976 cells work, 1548.B other |
+ #<unspecified> |
+ |
+Performance |
+----------- |
+ |
+Loading `bench.scm' will compute and display performance statistics of |
+SCM running `pi.scm'. `make bench' or `make benchlit' appends the |
+performance report to the file `BenchLog', facilitating tracking |
+effects of changes to SCM on performance. |
+ |
+
+File: scm-5f2.info, Node: Problems Starting, Next: Problems Running, Prev: Testing, Up: Troubleshooting and Testing
+ |
+2.6.4 Problems Starting |
+----------------------- |
PROBLEM HOW TO FIX
+/bin/bash: scm: program not found Is `scm' in a `$PATH' directory? |
+/bin/bash: /usr/local/bin/scm: `chmod +x /usr/local/bin/scm' |
+Permission denied |
Opening message and then machine Change memory model option to C
crashes. compiler (or makefile).
Make sure sizet definition is
@@ -1588,61 +1753,27 @@ remove <FLAG> in scmfig.h and Do so and recompile files.
recompile scm.
add <FLAG> in scmfig.h and
recompile scm.
-ERROR: Init5e5.scm not found. Assign correct IMPLINIT in makefile |
+ERROR: Init5f1.scm not found. Assign correct IMPLINIT in makefile |
or scmfig.h.
Define environment variable
SCM_INIT_PATH to be the full
- pathname of Init5e5.scm. |
+ pathname of Init5f1.scm. |
WARNING: require.scm not found. Define environment variable
SCHEME_LIBRARY_PATH to be the full
pathname of the scheme library
[SLIB].
Change library-vicinity in
- Init5e5.scm to point to library or |
+ Init5f1.scm to point to library or |
remove.
Make sure the value of
(library-vicinity) has a trailing
file separator (like / or \).

-File: scm.info, Node: Testing, Next: Reporting Problems, Prev: Problems Running, Up: Installing SCM
-
-2.11 Testing
-============
-
-Loading `r4rstest.scm' in the distribution will run an [R4RS]
-conformance test on `scm'.
-
- > (load "r4rstest.scm")
- -|
- ;loading "r4rstest.scm"
- SECTION(2 1)
- SECTION(3 4)
- #<primitive-procedure boolean?>
- #<primitive-procedure char?>
- #<primitive-procedure null?>
- #<primitive-procedure number?>
- ...
-
-Loading `pi.scm' in the distribution will enable you to compute digits
-of pi.
-
- > (load "pi")
- ;loading "pi"
- ;done loading "pi.scm"
- ;Evaluation took 20 ms (0 in gc) 767 cells work, 233.B other
- #<unspecified>
- > (pi 100 5)
- 00003 14159 26535 89793 23846 26433 83279 50288 41971 69399
- 37510 58209 74944 59230 78164 06286 20899 86280 34825 34211
- 70679
- ;Evaluation took 550 ms (60 in gc) 36976 cells work, 1548.B other
- #<unspecified>
-
-Loading `bench.scm' will compute and display performance statistics of
-SCM running `pi.scm'. `make bench' or `make benchlit' appends the
-performance report to the file `BenchLog', facilitating tracking
-effects of changes to SCM on performance.
+File: scm-5f2.info, Node: Problems Running, Next: Reporting Problems, Prev: Problems Starting, Up: Troubleshooting and Testing
+ |
+2.6.5 Problems Running |
+---------------------- |
PROBLEM HOW TO FIX
Runs some and then machine crashes. See above under machine crashes.
@@ -1658,7 +1789,7 @@ Some symbol names print incorrectly. Change memory model option to C
than HEAP_SEG_SIZE).
ERROR: Rogue pointer in Heap. See above under machine crashes.
Newlines don't appear correctly in Check file mode (define OPEN_... in
-output files. `Init5e5.scm'). |
+output files. `Init5f1.scm'). |
Spaces or control characters appear Check character defines in
in symbol names. `scmfig.h'.
Negative numbers turn positive. Check SRS in `scmfig.h'.
@@ -1667,27 +1798,17 @@ Negative numbers turn positive. Check SRS in `scmfig.h'.
VMS: Couldn't unwind stack. #define CHEAP_CONTINUATIONS in
`scmfig.h'.
VAX: botched longjmp.
-
-Sparc(SUN-4) heap is growing out of control
- You are experiencing a GC problem peculiar to the Sparc. The
- problem is that SCM doesn't know how to clear register windows.
- Every location which is not reused still gets marked at GC time.
- This causes lots of stuff which should be collected to not be.
- This will be a problem with any _conservative_ GC until we find
- what instruction will clear the register windows. This problem is
- exacerbated by using lots of call-with-current-continuations. A
- possible fix for dynthrow() is commented out in `continue.c'.
-
+ |

-File: scm.info, Node: Reporting Problems, Prev: Testing, Up: Installing SCM
-
-2.12 Reporting Problems
-=======================
+File: scm-5f2.info, Node: Reporting Problems, Prev: Problems Running, Up: Troubleshooting and Testing
+ |
+2.6.6 Reporting Problems |
+------------------------ |
Reported problems and solutions are grouped under Compiling, Linking,
Running, and Testing. If you don't find your problem listed there, you
-can send a bug report to `agj @ alum.mit.edu'. The bug report should
-include:
+can send a bug report to `agj@alum.mit.edu' or `scm-discuss@gnu.org'. |
+The bug report should include: |
1. The version of SCM (printed when SCM is invoked with no arguments).
@@ -1705,8 +1826,8 @@ include:
corresponding with the vendor is recommended.

-File: scm.info, Node: Operational Features, Next: The Language, Prev: Installing SCM, Up: Top
-
+File: scm-5f2.info, Node: Operational Features, Next: The Language, Prev: Installing SCM, Up: Top
+ |
3 Operational Features
**********************
@@ -1726,8 +1847,8 @@ File: scm.info, Node: Operational Features, Next: The Language, Prev: Install
* Scripting::

-File: scm.info, Node: Invoking SCM, Next: SCM Options, Prev: Operational Features, Up: Operational Features
-
+File: scm-5f2.info, Node: Invoking SCM, Next: SCM Options, Prev: Operational Features, Up: Operational Features
+ |
3.1 Invoking SCM
================
@@ -1744,8 +1865,8 @@ variable SCM_INIT_PATH.
If SCM_INIT_PATH is not defined or if the file it names is not present,
`scm' tries to find the directory containing the executable file. If
it is able to locate the executable, `scm' looks for the initialization
-file (usually `Init5e5.scm') in platform-dependent directories relative |
-to this directory. See *Note File-System Habitat:: for a blow-by-blow
+file (usually `Init5f1.scm') in platform-dependent directories relative |
+to this directory. See *note File-System Habitat:: for a blow-by-blow
description.
As a last resort (if initialization file cannot be located), the C
@@ -1753,12 +1874,12 @@ compile parameter IMPLINIT (defined in the makefile or `scmfig.h') is
tried.
Unless the option `-no-init-file' or `--no-init-file' occurs in the
-command line, or if `scm' is being invoked as a script, `Init5e5.scm' |
+command line, or if `scm' is being invoked as a script, `Init5f1.scm' |
checks to see if there is file `ScmInit.scm' in the path specified by
the environment variable HOME (or in the current directory if HOME is
undefined). If it finds such a file, then it is loaded.
-`Init5e5.scm' then looks for command input from one of three sources: |
+`Init5f1.scm' then looks for command input from one of three sources: |
From an option on the command line, from a file named on the command
line, or from standard input.
@@ -1768,8 +1889,8 @@ Scheme-code files can also invoke SCM and its variants. *Note #!:
Lexical Conventions.

-File: scm.info, Node: SCM Options, Next: Invocation Examples, Prev: Invoking SCM, Up: Operational Features
-
+File: scm-5f2.info, Node: SCM Options, Next: Invocation Examples, Prev: Invoking SCM, Up: Operational Features
+ |
3.2 Options
===========
@@ -1883,8 +2004,8 @@ The options are processed in the order specified on the command line.
aguments.

-File: scm.info, Node: Invocation Examples, Next: SCM Variables, Prev: SCM Options, Up: Operational Features
-
+File: scm-5f2.info, Node: Invocation Examples, Next: SCM Variables, Prev: SCM Options, Up: Operational Features
+ |
3.3 Invocation Examples
=======================
@@ -1915,20 +2036,20 @@ File: scm.info, Node: Invocation Examples, Next: SCM Variables, Prev: SCM Opt
Like above but `rev4-optional-procedures' are also loaded.

-File: scm.info, Node: SCM Variables, Next: SCM Session, Prev: Invocation Examples, Up: Operational Features
-
+File: scm-5f2.info, Node: SCM Variables, Next: SCM Session, Prev: Invocation Examples, Up: Operational Features
+ |
3.4 Environment Variables
=========================
-- Environment Variable: SCM_INIT_PATH
is the pathname where `scm' will look for its initialization code.
- The default is the file `Init5e5.scm' in the source directory. |
+ The default is the file `Init5f1.scm' in the source directory. |
-- Environment Variable: SCHEME_LIBRARY_PATH
is the [SLIB] Scheme library directory.
-- Environment Variable: HOME
- is the directory where `Init5e5.scm' will look for the user |
+ is the directory where `Init5f1.scm' will look for the user |
initialization file `ScmInit.scm'.
-- Environment Variable: EDITOR
@@ -1955,8 +2076,8 @@ File: scm.info, Node: SCM Variables, Next: SCM Session, Prev: Invocation Exam
line. This can be overridden by subsequent `-i' and `-b' options.

-File: scm.info, Node: SCM Session, Next: Editing Scheme Code, Prev: SCM Variables, Up: Operational Features
-
+File: scm-5f2.info, Node: SCM Session, Next: Editing Scheme Code, Prev: SCM Variables, Up: Operational Features
+ |
3.6 SCM Session
===============
@@ -1994,13 +2115,28 @@ File: scm.info, Node: SCM Session, Next: Editing Scheme Code, Prev: SCM Varia
For documentation of the procedures `getenv' and `system' *Note System
Interface: (slib)System Interface.
+SCM extends `getenv' as suggested by draft SRFI-98:
+
+ -- Function: getenv name
+ Looks up NAME, a string, in the program environment. If NAME is
+ found a string of its value is returned. Otherwise, `#f' is
+ returned.
+
+ -- Function: getenv
+ Returns names and values of all the environment variables as an
+ association-list.
+
+ (getenv) =>
+ (("PATH" . "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin")
+ ("USERNAME" . "taro"))
+
-- Function: vms-debug
If SCM is compiled under VMS this `vms-debug' will invoke the VMS
debugger.

-File: scm.info, Node: Editing Scheme Code, Next: Debugging Scheme Code, Prev: SCM Session, Up: Operational Features
-
+File: scm-5f2.info, Node: Editing Scheme Code, Next: Debugging Scheme Code, Prev: SCM Session, Up: Operational Features
+ |
3.7 Editing Scheme Code
=======================
@@ -2047,8 +2183,8 @@ other systems:
After editing, the modified file will be loaded.

-File: scm.info, Node: Debugging Scheme Code, Next: Debugging Continuations, Prev: Editing Scheme Code, Up: Operational Features
-
+File: scm-5f2.info, Node: Debugging Scheme Code, Next: Debugging Continuations, Prev: Editing Scheme Code, Up: Operational Features
+ |
3.8 Debugging Scheme Code
=========================
@@ -2060,7 +2196,7 @@ debugging in Scheme.
occurs, a "stack trace" of certain pending calls are printed as
part of the default error response. A (memoized) expression and
newline are printed for each partially evaluated combination whose
- procedure is not builtin. See *Note Memoized Expressions:: for
+ procedure is not builtin. See *note Memoized Expressions:: for
how to read memoized expressions.
Also as the result of the `CAUTIOUS' flag, both `error' and
@@ -2137,21 +2273,20 @@ could be large. `pp' is a better choice.
Sometimes more elaborate measures are needed to print values in a useful
manner. When the values to be printed may have very large (or infinite)
-external representations, *Note Quick Print: (slib)Quick Print, can be
+external representations, *note Quick Print: (slib)Quick Print, can be
used.
When `trace' is not sufficient to find program flow problems, SLIB-PSD,
the Portable Scheme Debugger offers source code debugging from GNU
Emacs. PSD runs slowly, so start by instrumenting only a few functions
at a time.
- http://swiss.csail.mit.edu/ftpdir/scm/slib-psd1-3.tar.gz
- swiss.csail.mit.edu:/pub/scm/slib-psd1-3.tar.gz
+ http://groups.csail.mit.edu/mac/ftpdir/scm/slib-psd1-3.tar.gz
ftp.maths.tcd.ie:pub/bosullvn/jacal/slib-psd1-3.tar.gz
ftp.cs.indiana.edu:/pub/scheme-repository/utl/slib-psd1-3.tar.gz

-File: scm.info, Node: Debugging Continuations, Next: Errors, Prev: Debugging Scheme Code, Up: Operational Features
-
+File: scm-5f2.info, Node: Debugging Continuations, Next: Errors, Prev: Debugging Scheme Code, Up: Operational Features
+ |
3.9 Debugging Continuations
===========================
@@ -2180,7 +2315,7 @@ continuations:
of continuation CONT and returns the result. Values in the
environment may be returned or SET!.
-*Note stack-trace: Errors. also now accepts an optional continuation
+*note stack-trace: Errors. also now accepts an optional continuation
argument. `stack-trace' differs from `frame-trace' in that it
truncates long output using safeports and prints code from all
available frames.
@@ -2238,8 +2373,8 @@ available frames.
(frame-eval k 0 'x) => 8

-File: scm.info, Node: Errors, Next: Memoized Expressions, Prev: Debugging Continuations, Up: Operational Features
-
+File: scm-5f2.info, Node: Errors, Next: Memoized Expressions, Prev: Debugging Continuations, Up: Operational Features
+ |
3.10 Errors
===========
@@ -2346,20 +2481,20 @@ a system or library function.
warnings and errors.
-- Function: warn arg1 arg2 arg3 ...
- Alias for *Note slib:warn: (slib)System. Outputs an error message
- containing the arguments. `warn' is defined in `Init5e5.scm'. |
+ Alias for *note slib:warn: (slib)System. Outputs an error message
+ containing the arguments. `warn' is defined in `Init5f1.scm'. |
-- Function: error arg1 arg2 arg3 ...
- Alias for *Note slib:error: (slib)System. Outputs an error
+ Alias for *note slib:error: (slib)System. Outputs an error
message containing the arguments, aborts evaluation of the current
form and resumes the top level read-eval-print loop. `Error' is
- defined in `Init5e5.scm'. |
+ defined in `Init5f1.scm'. |
If SCM is built with the `CAUTIOUS' flag, then when an error occurs, a
"stack trace" of certain pending calls are printed as part of the
default error response. A (memoized) expression and newline are
printed for each partially evaluated combination whose procedure is not
-builtin. See *Note Memoized Expressions:: for how to read memoized
+builtin. See *note Memoized Expressions:: for how to read memoized
expressions.
Also as the result of the `CAUTIOUS' flag, both `error' and
@@ -2371,12 +2506,12 @@ with Lisp systems.
-- Function: stack-trace
Prints information describing the stack of partially evaluated
expressions. `stack-trace' returns `#t' if any lines were printed
- and `#f' otherwise. See `Init5e5.scm' for an example of the use |
+ and `#f' otherwise. See `Init5f1.scm' for an example of the use |
of `stack-trace'.

-File: scm.info, Node: Memoized Expressions, Next: Internal State, Prev: Errors, Up: Operational Features
-
+File: scm-5f2.info, Node: Memoized Expressions, Next: Internal State, Prev: Errors, Up: Operational Features
+ |
3.11 Memoized Expressions
=========================
@@ -2396,7 +2531,7 @@ a convenient aid to locating bugs and untested expressions.
* The names of identifiers which are not lexiallly bound but defined
at top-level have #@ prepended.
-For instance, `open-input-file' is defined as follows in `Init5e5.scm': |
+For instance, `open-input-file' is defined as follows in `Init5f1.scm': |
(define (open-input-file str)
(or (open-file str open_read)
@@ -2434,8 +2569,8 @@ too become memoized:
(#@error "OPEN-INPUT-FILE couldn't open file " #@0+0))>

-File: scm.info, Node: Internal State, Next: Scripting, Prev: Memoized Expressions, Up: Operational Features
-
+File: scm-5f2.info, Node: Internal State, Next: Scripting, Prev: Memoized Expressions, Up: Operational Features
+ |
3.12 Internal State
===================
@@ -2445,7 +2580,7 @@ File: scm.info, Node: Internal State, Next: Scripting, Prev: Memoized Express
*INTERACTIVE* is controlled directly by the command-line options
`-b', `-i', and `-s' (*note Invoking SCM::). If none of these
options are specified, the rules to determine interactivity are
- more complicated; see `Init5e5.scm' for details. |
+ more complicated; see `Init5f1.scm' for details. |
-- Function: abort
Resumes the top level Read-Eval-Print loop.
@@ -2494,13 +2629,16 @@ File: scm.info, Node: Internal State, Next: Scripting, Prev: Memoized Express
Scans all of SCM objects and reclaims for further use those that
are no longer accessible.
+ -- Function: gc #t |
+ Garbage-collects only the ecache. |
+ |
-- Function: room
-- Function: room #t
Prints out statistics about SCM's current use of storage. `(room
#t)' also gives the hexadecimal heap segment and stack bounds.
-- Constant: *scm-version*
- Contains the version string (e.g. `5e5') of SCM. |
+ Contains the version string (e.g. `5f1') of SCM. |
3.12.1 Executable path
----------------------
@@ -2525,8 +2663,8 @@ For other configuration constants and procedures *Note Configuration:
(slib)Configuration.

-File: scm.info, Node: Scripting, Prev: Internal State, Up: Operational Features
-
+File: scm-5f2.info, Node: Scripting, Prev: Internal State, Up: Operational Features
+ |
3.13 Scripting
==============
@@ -2537,8 +2675,8 @@ File: scm.info, Node: Scripting, Prev: Internal State, Up: Operational Featur
* Unix Shell Scripts:: Use /bin/sh to run Scheme

-File: scm.info, Node: Unix Scheme Scripts, Next: MS-DOS Compatible Scripts, Prev: Scripting, Up: Scripting
-
+File: scm-5f2.info, Node: Unix Scheme Scripts, Next: MS-DOS Compatible Scripts, Prev: Scripting, Up: Scripting
+ |
3.13.1 Unix Scheme Scripts
--------------------------
@@ -2623,15 +2761,15 @@ usage information.
Returns the factorial of N.

-File: scm.info, Node: MS-DOS Compatible Scripts, Next: Unix Shell Scripts, Prev: Unix Scheme Scripts, Up: Scripting
-
+File: scm-5f2.info, Node: MS-DOS Compatible Scripts, Next: Unix Shell Scripts, Prev: Unix Scheme Scripts, Up: Scripting
+ |
3.13.2 MS-DOS Compatible Scripts
--------------------------------
It turns out that we can create scheme-scripts which run both under unix
and MS-DOS. To implement this, I have written the MS-DOS programs:
`#!.bat' and `!#.exe', which are available from:
-`http://swiss.csail.mit.edu/ftpdir/scm/sharpbang.zip'
+`http://groups.csail.mit.edu/mac/ftpdir/scm/sharpbang.zip'
With these two programs installed in a `PATH' directory, we have the
following syntax for <PROGRAM>.BAT files.
@@ -2664,8 +2802,8 @@ The previous example Scheme-Script works in both MS-DOS and unix
systems.

-File: scm.info, Node: Unix Shell Scripts, Prev: MS-DOS Compatible Scripts, Up: Scripting
-
+File: scm-5f2.info, Node: Unix Shell Scripts, Prev: MS-DOS Compatible Scripts, Up: Scripting
+ |
3.13.3 Unix Shell Scripts
-------------------------
@@ -2724,8 +2862,8 @@ example.
=> 720

-File: scm.info, Node: The Language, Next: Packages, Prev: Operational Features, Up: Top
-
+File: scm-5f2.info, Node: The Language, Next: Packages, Prev: Operational Features, Up: Top
+ |
4 The Language
**************
@@ -2742,14 +2880,14 @@ File: scm.info, Node: The Language, Next: Packages, Prev: Operational Feature
* Syntax:: Macros

-File: scm.info, Node: Standards Compliance, Next: Storage, Prev: The Language, Up: The Language
-
+File: scm-5f2.info, Node: Standards Compliance, Next: Storage, Prev: The Language, Up: The Language
+ |
4.1 Standards Compliance
========================
Scm conforms to the `IEEE Standard 1178-1990. IEEE Standard for the
Scheme Programming Language.' (*note Bibliography::), and `Revised(5)
-Report on the Algorithmic Language Scheme'. *Note Top: (r5rs)Top. All
+Report on the Algorithmic Language Scheme'. *note Top: (r5rs)Top. All
the required features of these specifications are supported. Many of
the optional features are supported as well.
@@ -2862,8 +3000,8 @@ Optionals of [R5RS] not Supported by SCM
*Note Require: (slib)Require.

-File: scm.info, Node: Storage, Next: Time, Prev: Standards Compliance, Up: The Language
-
+File: scm-5f2.info, Node: Storage, Next: Time, Prev: Standards Compliance, Up: The Language
+ |
4.2 Storage
===========
@@ -2920,8 +3058,8 @@ File: scm.info, Node: Storage, Next: Time, Prev: Standards Compliance, Up: T
Springer-Verlag LNCS.

-File: scm.info, Node: Time, Next: Interrupts, Prev: Storage, Up: The Language
-
+File: scm-5f2.info, Node: Time, Next: Interrupts, Prev: Storage, Up: The Language
+ |
4.3 Time
========
@@ -2939,17 +3077,17 @@ File: scm.info, Node: Time, Next: Interrupts, Prev: Storage, Up: The Languag
Returns the integer time in internal time units from an unspecified
starting time. The difference of two calls to
`get-internal-real-time' divided by
- `interal-time-units-per-second' will give elapsed real time in
+ `internal-time-units-per-second' will give elapsed real time in |
seconds.
-- Function: current-time
Returns the time since 00:00:00 GMT, January 1, 1970, measured in
seconds. *Note current-time: (slib)Time and Date. `current-time'
- is used in *Note Time and Date: (slib)Time and Date.
+ is used in *note Time and Date: (slib)Time and Date.

-File: scm.info, Node: Interrupts, Next: Process Synchronization, Prev: Time, Up: The Language
-
+File: scm-5f2.info, Node: Interrupts, Next: Process Synchronization, Prev: Time, Up: The Language
+ |
4.4 Interrupts
==============
@@ -3027,8 +3165,8 @@ File: scm.info, Node: Interrupts, Next: Process Synchronization, Prev: Time,
`#f'. For instance, `(set! could-not-open #f)'.

-File: scm.info, Node: Process Synchronization, Next: Files and Ports, Prev: Interrupts, Up: The Language
-
+File: scm-5f2.info, Node: Process Synchronization, Next: Files and Ports, Prev: Interrupts, Up: The Language
+ |
4.5 Process Synchronization
===========================
@@ -3073,13 +3211,13 @@ operation.
Otherwise, returns `#f'.

-File: scm.info, Node: Files and Ports, Next: Eval and Load, Prev: Process Synchronization, Up: The Language
-
+File: scm-5f2.info, Node: Files and Ports, Next: Eval and Load, Prev: Process Synchronization, Up: The Language
+ |
4.6 Files and Ports
===================
These procedures generalize and extend the standard capabilities in
-*Note Ports: (r5rs)Ports.
+*note Ports: (r5rs)Ports.
* Menu:
@@ -3089,8 +3227,8 @@ These procedures generalize and extend the standard capabilities in
* Soft Ports::

-File: scm.info, Node: Opening and Closing, Next: Port Properties, Prev: Files and Ports, Up: Files and Ports
-
+File: scm-5f2.info, Node: Opening and Closing, Next: Port Properties, Prev: Files and Ports, Up: Files and Ports
+ |
4.6.1 Opening and Closing
-------------------------
@@ -3146,8 +3284,8 @@ File: scm.info, Node: Opening and Closing, Next: Port Properties, Prev: Files
Closes PORT. The same as close-input-port and close-output-port.

-File: scm.info, Node: Port Properties, Next: Port Redirection, Prev: Opening and Closing, Up: Files and Ports
-
+File: scm-5f2.info, Node: Port Properties, Next: Port Redirection, Prev: Opening and Closing, Up: Files and Ports
+ |
4.6.2 Port Properties
---------------------
@@ -3219,8 +3357,8 @@ File: scm.info, Node: Port Properties, Next: Port Redirection, Prev: Opening
returned by `current-input-port'.

-File: scm.info, Node: Port Redirection, Next: Soft Ports, Prev: Port Properties, Up: Files and Ports
-
+File: scm-5f2.info, Node: Port Redirection, Next: Soft Ports, Prev: Port Properties, Up: Files and Ports
+ |
4.6.3 Port Redirection
----------------------
@@ -3252,8 +3390,8 @@ File: scm.info, Node: Port Redirection, Next: Soft Ports, Prev: Port Properti
just the output-string and the error-string as arguments.

-File: scm.info, Node: Soft Ports, Prev: Port Redirection, Up: Files and Ports
-
+File: scm-5f2.info, Node: Soft Ports, Prev: Port Redirection, Up: Files and Ports
+ |
4.6.4 Soft Ports
----------------
@@ -3301,8 +3439,8 @@ accepting or delivering characters. It allows emulation of I/O ports.
(write p p) => #<input-output-soft#\space45d10#\>

-File: scm.info, Node: Eval and Load, Next: Lexical Conventions, Prev: Files and Ports, Up: The Language
-
+File: scm-5f2.info, Node: Eval and Load, Next: Lexical Conventions, Prev: Files and Ports, Up: The Language
+ |
4.7 Eval and Load
=================
@@ -3318,10 +3456,10 @@ File: scm.info, Node: Eval and Load, Next: Lexical Conventions, Prev: Files a
Is set to the pathname given as argument to `load', `try-load',
and `dyn:link' (*note Compiling And Linking: (hobbit)Compiling And
Linking.). `*load-pathname*' is used to compute the value of
- *Note program-vicinity: (slib)Vicinity.
+ *note program-vicinity: (slib)Vicinity.
-- Function: eval obj
- Alias for *Note eval: (slib)System.
+ Alias for *note eval: (slib)System.
-- Function: eval-string str
Returns the result of reading an expression from STR and
@@ -3341,8 +3479,8 @@ File: scm.info, Node: Eval and Load, Next: Lexical Conventions, Prev: Files a
* Line Numbers::

-File: scm.info, Node: Line Numbers, Prev: Eval and Load, Up: Eval and Load
-
+File: scm-5f2.info, Node: Line Numbers, Prev: Eval and Load, Up: Eval and Load
+ |
4.7.1 Line Numbers
------------------
@@ -3401,8 +3539,8 @@ line-numbers in other positions is undefined.
`*load-reader*' and `*slib-load-reader*' to #f.

-File: scm.info, Node: Lexical Conventions, Next: Syntax, Prev: Eval and Load, Up: The Language
-
+File: scm-5f2.info, Node: Lexical Conventions, Next: Syntax, Prev: Eval and Load, Up: The Language
+ |
4.8 Lexical Conventions
=======================
@@ -3414,8 +3552,8 @@ File: scm.info, Node: Lexical Conventions, Next: Syntax, Prev: Eval and Load,
* Modifying Read Syntax::

-File: scm.info, Node: Common-Lisp Read Syntax, Next: Load Syntax, Prev: Lexical Conventions, Up: Lexical Conventions
-
+File: scm-5f2.info, Node: Common-Lisp Read Syntax, Next: Load Syntax, Prev: Lexical Conventions, Up: Lexical Conventions
+ |
4.8.1 Common-Lisp Read Syntax
-----------------------------
@@ -3465,12 +3603,12 @@ using `#.'.
is equivalent to FORM (for compatibility with common-lisp).

-File: scm.info, Node: Load Syntax, Next: Documentation and Comments, Prev: Common-Lisp Read Syntax, Up: Lexical Conventions
-
+File: scm-5f2.info, Node: Load Syntax, Next: Documentation and Comments, Prev: Common-Lisp Read Syntax, Up: Lexical Conventions
+ |
4.8.2 Load Syntax
-----------------
-"#!" is the unix mechanism for executing scripts. See *Note Unix
+"#!" is the unix mechanism for executing scripts. See *note Unix
Scheme Scripts:: for the full description of how this comment supports
scripting.
@@ -3484,8 +3622,8 @@ scripting.
path is the string passed to `load', possibly with `.scm' appended.

-File: scm.info, Node: Documentation and Comments, Next: Modifying Read Syntax, Prev: Load Syntax, Up: Lexical Conventions
-
+File: scm-5f2.info, Node: Documentation and Comments, Next: Modifying Read Syntax, Prev: Load Syntax, Up: Lexical Conventions
+ |
4.8.3 Documentation and Comments
--------------------------------
@@ -3517,8 +3655,8 @@ File: scm.info, Node: Documentation and Comments, Next: Modifying Read Syntax,
Behaves as `(comment "TEXT-TILL-END-OF-LINE")'.

-File: scm.info, Node: Modifying Read Syntax, Prev: Documentation and Comments, Up: Lexical Conventions
-
+File: scm-5f2.info, Node: Modifying Read Syntax, Prev: Documentation and Comments, Up: Lexical Conventions
+ |
4.8.4 Modifying Read Syntax
---------------------------
@@ -3549,12 +3687,12 @@ File: scm.info, Node: Modifying Read Syntax, Prev: Documentation and Comments,
_Note_ When adding new <#> syntaxes, have your code save the previous
value of `load:sharp', `read:sharp', or `char:sharp' when defining it.
Call this saved value if an invocation's syntax is not recognized.
-This will allow `#+', `#-', and *Note Uniform Array::s to still be
+This will allow `#+', `#-', and *note Uniform Array::s to still be
supported (as they dispatch from `read:sharp').

-File: scm.info, Node: Syntax, Prev: Lexical Conventions, Up: The Language
-
+File: scm-5f2.info, Node: Syntax, Prev: Lexical Conventions, Up: The Language
+ |
4.9 Syntax
==========
@@ -3586,8 +3724,8 @@ use the correct macro loader when `require'd.
* Syntactic Hooks for Hygienic Macros::

-File: scm.info, Node: Define and Set, Next: Defmacro, Prev: Syntax, Up: Syntax
-
+File: scm-5f2.info, Node: Define and Set, Next: Defmacro, Prev: Syntax, Up: Syntax
+ |
4.9.1 Define and Set
--------------------
@@ -3668,8 +3806,8 @@ File: scm.info, Node: Define and Set, Next: Defmacro, Prev: Syntax, Up: Synt
(else 'consonant)) ==> consonant

-File: scm.info, Node: Defmacro, Next: Syntax-Rules, Prev: Define and Set, Up: Syntax
-
+File: scm-5f2.info, Node: Defmacro, Next: Syntax-Rules, Prev: Define and Set, Up: Syntax
+ |
4.9.2 Defmacro
--------------
@@ -3702,8 +3840,8 @@ For example:
(let1 not legal syntax) error--> not "does not match" ((name value))

-File: scm.info, Node: Syntax-Rules, Next: Macro Primitives, Prev: Defmacro, Up: Syntax
-
+File: scm-5f2.info, Node: Syntax-Rules, Next: Macro Primitives, Prev: Defmacro, Up: Syntax
+ |
4.9.3 Syntax-Rules
------------------
@@ -3756,8 +3894,8 @@ For example:
(set! eight 9) => ERROR

-File: scm.info, Node: Macro Primitives, Next: Environment Frames, Prev: Syntax-Rules, Up: Syntax
-
+File: scm-5f2.info, Node: Macro Primitives, Next: Environment Frames, Prev: Syntax-Rules, Up: Syntax
+ |
4.9.4 Macro Primitives
----------------------
@@ -3796,8 +3934,8 @@ File: scm.info, Node: Macro Primitives, Next: Environment Frames, Prev: Synta
may not result in NAME being interpreted as a macro keyword.

-File: scm.info, Node: Environment Frames, Next: Syntactic Hooks for Hygienic Macros, Prev: Macro Primitives, Up: Syntax
-
+File: scm-5f2.info, Node: Environment Frames, Next: Syntactic Hooks for Hygienic Macros, Prev: Macro Primitives, Up: Syntax
+ |
4.9.5 Environment Frames
------------------------
@@ -3861,8 +3999,8 @@ There are several types of environment frames:
bindings.

-File: scm.info, Node: Syntactic Hooks for Hygienic Macros, Prev: Environment Frames, Up: Syntax
-
+File: scm-5f2.info, Node: Syntactic Hooks for Hygienic Macros, Prev: Environment Frames, Up: Syntax
+ |
4.9.6 Syntactic Hooks for Hygienic Macros
-----------------------------------------
@@ -4015,8 +4153,8 @@ in order to denote the same binding.
binding in the usage environment of the new syntax.

-File: scm.info, Node: Packages, Next: The Implementation, Prev: The Language, Up: Top
-
+File: scm-5f2.info, Node: Packages, Next: The Implementation, Prev: The Language, Up: Top
+ |
5 Packages
**********
@@ -4043,8 +4181,8 @@ File: scm.info, Node: Packages, Next: The Implementation, Prev: The Language,
* Hobbit: (hobbit). Scheme-to-C Compiler

-File: scm.info, Node: Dynamic Linking, Next: Dump, Prev: Packages, Up: Packages
-
+File: scm-5f2.info, Node: Dynamic Linking, Next: Dump, Prev: Packages, Up: Packages
+ |
5.1 Dynamic Linking
===================
@@ -4154,8 +4292,8 @@ an example of their use.
`#t'; If not successful, `#f' is returned.

-File: scm.info, Node: Dump, Next: Numeric, Prev: Dynamic Linking, Up: Packages
-
+File: scm-5f2.info, Node: Dump, Next: Numeric, Prev: Dynamic Linking, Up: Packages
+ |
5.2 Dump
========
@@ -4252,8 +4390,8 @@ This task can also be accomplished using the `-o' command line option
bash$

-File: scm.info, Node: Numeric, Next: Arrays, Prev: Dump, Up: Packages
-
+File: scm-5f2.info, Node: Numeric, Next: Arrays, Prev: Dump, Up: Packages
+ |
5.3 Numeric
===========
@@ -4268,8 +4406,18 @@ File: scm.info, Node: Numeric, Next: Arrays, Prev: Dump, Up: Packages
-- Constant: pi
The ratio of the circumference to the diameter of a circle.
-These procedures augment the standard capabilities in *Note Numerical
-operations: (r5rs)Numerical operations.
+These procedures are in addition to those in *Note Irrational Integer
+Functions: (slib)Irrational Integer Functions. |
+ |
+ -- Function: exact-round x |
+ -- Function: exact-floor x |
+ -- Function: exact-ceiling x |
+ -- Function: exact-truncate x |
+ Return exact integers. |
+ |
+These procedures augment the standard capabilities in *note Numerical
+operations: (r5rs)Numerical operations. Many are from *Note Irrational
+Real Functions: (slib)Irrational Real Functions. |
-- Function: pi* z
`(* pi Z)'
@@ -4296,6 +4444,7 @@ operations: (r5rs)Numerical operations.
-- Function: real-asin x
-- Function: real-acos x
-- Function: real-atan x
+ -- Function: atan y x |
-- Function: real-sinh x
-- Function: real-cosh x
-- Function: real-tanh x
@@ -4317,9 +4466,14 @@ operations: (r5rs)Numerical operations.
error if the value which should be returned by a call to
`real-expt' is not real.
+ -- Function: infinite? z |
+ -- Function: finite? z |
+ All IEEE-754 numbers except positive and negative infinity and NaN |
+ (non-a-number) are finite. |
+ |

-File: scm.info, Node: Arrays, Next: Records, Prev: Numeric, Up: Packages
-
+File: scm-5f2.info, Node: Arrays, Next: Records, Prev: Numeric, Up: Packages
+ |
5.4 Arrays
==========
@@ -4331,13 +4485,13 @@ File: scm.info, Node: Arrays, Next: Records, Prev: Numeric, Up: Packages
* Array Mapping:: array-for-each

-File: scm.info, Node: Conventional Arrays, Next: Uniform Array, Prev: Arrays, Up: Arrays
-
+File: scm-5f2.info, Node: Conventional Arrays, Next: Uniform Array, Prev: Arrays, Up: Arrays
+ |
5.4.1 Conventional Arrays
-------------------------
The following syntax and procedures are SCM extensions to feature
-`array' in *Note Arrays: (slib)Arrays.
+`array' in *note Arrays: (slib)Arrays.
"Arrays" read and write as a `#' followed by the "rank" (number of
dimensions) followed by the character #\a or #\A and what appear as
@@ -4383,11 +4537,13 @@ equivalent to (and can't be distinguished from) scheme vectors.
enclosed array is unspecified.
examples:
- (enclose-array '#3A(((a b c) (d e f)) ((1 2 3) (4 5 6))) 1) =>
- #<enclosed-array (#1A(a d) #1A(b e) #1A(c f)) (#1A(1 4) #1A(2 5) #1A(3 6))>
- (enclose-array '#3A(((a b c) (d e f)) ((1 2 3) (4 5 6))) 1 0) =>
- #<enclosed-array #2A((a 1) (d 4)) #2A((b 2) (e 5)) #2A((c 3) (f 6))>
+(enclose-array '#3A(((a b c) (d e f)) ((1 2 3) (4 5 6))) 1) =>
+#<enclosed-array (#1A(a d) #1A(b e) #1A(c f)) (#1A(1 4) #1A(2 5) #1A(3 6))>
+
+(enclose-array '#3A(((a b c) (d e f)) ((1 2 3) (4 5 6))) 1 0) =>
+#<enclosed-array #2A((a 1) (d 4)) #2A((b 2) (e 5)) #2A((c 3) (f 6))>
+
-- Function: array->list array
Returns a list consisting of all the elements, in order, of ARRAY.
@@ -4406,8 +4562,8 @@ equivalent to (and can't be distinguished from) scheme vectors.
in memory.

-File: scm.info, Node: Uniform Array, Next: Bit Vectors, Prev: Conventional Arrays, Up: Arrays
-
+File: scm-5f2.info, Node: Uniform Array, Next: Bit Vectors, Prev: Conventional Arrays, Up: Arrays
+ |
5.4.2 Uniform Array
-------------------
@@ -4424,7 +4580,7 @@ equivalent to (and can't be distinguished from) strings.
(make-array "" 3) => "$q2"
Unshared uniform boolean 0-based arrays of rank 1 (dimension) are
-equivalent to (and can't be distinguished from) *Note bit-vectors: Bit
+equivalent to (and can't be distinguished from) *note bit-vectors: Bit
Vectors.
(make-array '#1at() 3) => #*000
==
@@ -4512,8 +4668,8 @@ returns a uniform vector of signed integers.
integer or if VAL is not boolean.

-File: scm.info, Node: Bit Vectors, Next: Array Mapping, Prev: Uniform Array, Up: Arrays
-
+File: scm-5f2.info, Node: Bit Vectors, Next: Array Mapping, Prev: Uniform Array, Up: Arrays
+ |
5.4.3 Bit Vectors
-----------------
@@ -4537,13 +4693,13 @@ uniform-arrays.
Modifies BV by replacing each element with its negation.
-- Function: bit-set*! bv uve bool
- If uve is a bit-vector BV and uve must be of the same length. If
- BOOL is `#t', uve is OR'ed into BV; If BOOL is `#f', the inversion
- of uve is AND'ed into BV.
+ If UVE is a bit-vector, then BV and UVE must be of the same |
+ length. If BOOL is `#t', then UVE is OR'ed into BV; If BOOL is |
+ `#f', the inversion of UVE is AND'ed into BV. |
- If uve is a unsigned integer vector all the elements of uve must be
- between 0 and the `LENGTH' of BV. The bits of BV corresponding to
- the indexes in uve are set to BOOL.
+ If UVE is a unsigned integer vector, then all the elements of UVE |
+ must be between 0 and the `LENGTH' of BV. The bits of BV |
+ corresponding to the indexes in UVE are set to BOOL. |
The return value is unspecified.
@@ -4553,8 +4709,8 @@ uniform-arrays.
BV is not modified.

-File: scm.info, Node: Array Mapping, Prev: Bit Vectors, Up: Arrays
-
+File: scm-5f2.info, Node: Array Mapping, Prev: Bit Vectors, Up: Arrays
+ |
5.4.4 Array Mapping
-------------------
@@ -4587,7 +4743,7 @@ SCM has some extra functions in feature `array-for-each':
value returned is unspecified. The order of application is
unspecified.
- Handling non-array arguments is a SCM extension of *Note
+ Handling non-array arguments is a SCM extension of *note
array-map!: (slib)Array Mapping.
-- Function: serial-array-map! array0 proc array1 ...
@@ -4613,8 +4769,8 @@ SCM has some extra functions in feature `array-for-each':
`array-map!' and friends to handle scalar arguments.

-File: scm.info, Node: Records, Next: I/O-Extensions, Prev: Arrays, Up: Packages
-
+File: scm-5f2.info, Node: Records, Next: I/O-Extensions, Prev: Arrays, Up: Packages
+ |
5.5 Records
===========
@@ -4635,12 +4791,12 @@ see *Note Records: (slib)Records, with the following extension.
Only the default printer will be used when printing error messages.

-File: scm.info, Node: I/O-Extensions, Next: Posix Extensions, Prev: Records, Up: Packages
-
+File: scm-5f2.info, Node: I/O-Extensions, Next: Posix Extensions, Prev: Records, Up: Packages
+ |
5.6 I/O-Extensions
==================
-If `'i/o-extensions' is provided (by linking in `ioext.o'), *Note Line
+If `'i/o-extensions' is provided (by linking in `ioext.o'), *note Line
I/O: (slib)Line I/O, and the following functions are defined:
-- Function: stat <port-or-string>
@@ -4703,7 +4859,7 @@ I/O: (slib)Line I/O, and the following functions are defined:
-- Function: duplicate-port port modes
Creates and returns a "duplicate" port from PORT. Duplicate
_unbuffered_ ports share one file position. MODES are as for
- *Note open-file: Files and Ports.
+ *note open-file: Files and Ports.
-- Function: redirect-port! from-port to-port
Closes TO-PORT and makes TO-PORT be a duplicate of FROM-PORT.
@@ -4751,7 +4907,16 @@ I/O: (slib)Line I/O, and the following functions are defined:
"Link.scm"
"Macro.scm"
"Transcen.scm"
- "Init5e5.scm" |
+ "Init5f1.scm" |
+ |
+ -- Function: directory*-for-each proc path-glob |
+ PATH-GLOB is a pathname whose last component is a (wildcard) |
+ pattern (*note Filenames: (slib)Filenames.). PROC must be a |
+ procedure taking one argument. `directory*-for-each' applies PROC |
+ to the (string) name of each file in the current directory. The |
+ dynamic order in which PROC is applied to the filenames is |
+ unspecified. The value returned by `directory*-for-each' is |
+ unspecified. |
-- Function: mkdir path mode
The `mkdir' function creates a new, empty directory whose name is
@@ -4782,6 +4947,11 @@ I/O: (slib)Line I/O, and the following functions are defined:
renaming is successful, `#t' is returned. Otherwise, `#f' is
returned.
+ -- Function: copy-file oldfilename newfilename |
+ Copies the file specified by OLDFILENAME to NEWFILENAME. If the |
+ copying is successful, `#t' is returned. Otherwise, `#f' is |
+ returned. |
+ |
-- Function: chmod file mode
The function `chmod' sets the access permission bits for the file
named by FILE to MODE. The FILE argument may be a string
@@ -4864,8 +5034,8 @@ I/O: (slib)Line I/O, and the following functions are defined:
(slib)System Interface.).

-File: scm.info, Node: Posix Extensions, Next: Unix Extensions, Prev: I/O-Extensions, Up: Packages
-
+File: scm-5f2.info, Node: Posix Extensions, Next: Unix Extensions, Prev: I/O-Extensions, Up: Packages
+ |
5.7 Posix Extensions
====================
@@ -4950,7 +5120,7 @@ Persona.
-- Function: kill pid sig
The `kill' function sends the signal SIGNUM to the process or
process group specified by PID. Besides the signals listed in
- *Note Standard Signals: (libc)Standard Signals, SIGNUM can also
+ *note Standard Signals: (libc)Standard Signals, SIGNUM can also
have a value of zero to check the validity of the PID.
The PID specifies the process or process group to receive the
@@ -5130,8 +5300,8 @@ Persona.
`#f'.

-File: scm.info, Node: Unix Extensions, Next: Sequence Comparison, Prev: Posix Extensions, Up: Packages
-
+File: scm-5f2.info, Node: Unix Extensions, Next: Sequence Comparison, Prev: Posix Extensions, Up: Packages
+ |
5.8 Unix Extensions
===================
@@ -5184,8 +5354,8 @@ These "privileged" and symbolic link functions are not in Posix:
actual writing is done. The value returned is unspecified.

-File: scm.info, Node: Sequence Comparison, Next: Regular Expression Pattern Matching, Prev: Unix Extensions, Up: Packages
-
+File: scm-5f2.info, Node: Sequence Comparison, Next: Regular Expression Pattern Matching, Prev: Unix Extensions, Up: Packages
+ |
5.9 Sequence Comparison
=======================
@@ -5195,8 +5365,8 @@ A blazing fast implementation of the sequence-comparison module in
SLIB, see *Note Sequence Comparison: (slib)Sequence Comparison.

-File: scm.info, Node: Regular Expression Pattern Matching, Next: Line Editing, Prev: Sequence Comparison, Up: Packages
-
+File: scm-5f2.info, Node: Regular Expression Pattern Matching, Next: Line Editing, Prev: Sequence Comparison, Up: Packages
+ |
5.10 Regular Expression Pattern Matching
========================================
@@ -5311,11 +5481,13 @@ description of regular expressions, *Note syntax: (regex)syntax.
to perform one substitution.

-File: scm.info, Node: Line Editing, Next: Curses, Prev: Regular Expression Pattern Matching, Up: Packages
-
+File: scm-5f2.info, Node: Line Editing, Next: Curses, Prev: Regular Expression Pattern Matching, Up: Packages
+ |
5.11 Line Editing
=================
+`(require 'edit-line)'
+
These procedures provide input line editing and recall.
These functions are defined in `edline.c' and `Iedline.scm' using the
@@ -5326,9 +5498,9 @@ available from:
* `ftp.gnu.org:/pub/gnu/readline-2.0.tar.gz'
-When `Iedline.scm' is loaded, if the current input port is the default
-input port and the environment variable EMACS is not defined,
-line-editing mode will be entered.
+When `edit-line' package is initialized, if the current input port is
+the default input port and the environment variable EMACS is not
+defined, line-editing mode will be entered.
-- Function: default-input-port
Returns the initial `current-input-port' SCM was invoked with
@@ -5352,8 +5524,8 @@ line-editing mode will be entered.
previous value of `(line-editing)'.

-File: scm.info, Node: Curses, Next: Sockets, Prev: Line Editing, Up: Packages
-
+File: scm-5f2.info, Node: Curses, Next: Sockets, Prev: Line Editing, Up: Packages
+ |
5.12 Curses
===========
@@ -5370,7 +5542,7 @@ completion and `#f' for failure.
curses mode temporarily, to do a system call, for example. This
routine will restore termio modes, move the cursor to the lower
left corner of the screen and reset the terminal into the proper
- non-visual mode. To resume after a temporary escape, call *Note
+ non-visual mode. To resume after a temporary escape, call *note
refresh: Window Manipulation.
* Menu:
@@ -5383,8 +5555,8 @@ completion and `#f' for failure.
* Curses Miscellany::

-File: scm.info, Node: Output Options Setting, Next: Terminal Mode Setting, Prev: Curses, Up: Curses
-
+File: scm-5f2.info, Node: Output Options Setting, Next: Terminal Mode Setting, Prev: Curses, Up: Curses
+ |
5.12.1 Output Options Setting
-----------------------------
@@ -5440,8 +5612,8 @@ necessary to turn these options off before calling `endwin'.
will hang until a key is pressed.

-File: scm.info, Node: Terminal Mode Setting, Next: Window Manipulation, Prev: Output Options Setting, Up: Curses
-
+File: scm-5f2.info, Node: Terminal Mode Setting, Next: Window Manipulation, Prev: Output Options Setting, Up: Curses
+ |
5.12.2 Terminal Mode Setting
----------------------------
@@ -5504,8 +5676,8 @@ routines. It is not necessary to turn these options off before calling
`savetty'.

-File: scm.info, Node: Window Manipulation, Next: Output, Prev: Terminal Mode Setting, Up: Curses
-
+File: scm-5f2.info, Node: Window Manipulation, Next: Output, Prev: Terminal Mode Setting, Up: Curses
+ |
5.12.3 Window Manipulation
--------------------------
@@ -5575,8 +5747,8 @@ File: scm.info, Node: Window Manipulation, Next: Output, Prev: Terminal Mode
which is (0, 0).

-File: scm.info, Node: Output, Next: Input, Prev: Window Manipulation, Up: Curses
-
+File: scm-5f2.info, Node: Output, Next: Input, Prev: Window Manipulation, Up: Curses
+ |
5.12.4 Output
-------------
@@ -5615,7 +5787,7 @@ These routines are used to "draw" text on windows
This routine copies blanks to every position in the window WIN.
-- Function: wclear win
- This routine is like `werase', but it also calls *Note clearok:
+ This routine is like `werase', but it also calls *note clearok:
Output Options Setting, arranging that the screen will be cleared
completely on the next call to `refresh' or `force-output' for
window WIN, and repainted from scratch.
@@ -5659,8 +5831,8 @@ These routines are used to "draw" text on windows
screen will be scrolled at the same time.

-File: scm.info, Node: Input, Next: Curses Miscellany, Prev: Output, Up: Curses
-
+File: scm-5f2.info, Node: Input, Next: Curses Miscellany, Prev: Output, Up: Curses
+ |
5.12.5 Input
------------
@@ -5686,8 +5858,8 @@ File: scm.info, Node: Input, Next: Curses Miscellany, Prev: Output, Up: Curs
window WIN is returned

-File: scm.info, Node: Curses Miscellany, Prev: Input, Up: Curses
-
+File: scm-5f2.info, Node: Curses Miscellany, Prev: Input, Up: Curses
+ |
5.12.6 Curses Miscellany
------------------------
@@ -5721,8 +5893,8 @@ File: scm.info, Node: Curses Miscellany, Prev: Input, Up: Curses
as is.

-File: scm.info, Node: Sockets, Next: SCMDB, Prev: Curses, Up: Packages
-
+File: scm-5f2.info, Node: Sockets, Next: SCMDB, Prev: Curses, Up: Packages
+ |
5.13 Sockets
============
@@ -5737,8 +5909,8 @@ Sockets: (libc)Sockets.
* Socket::

-File: scm.info, Node: Host and Other Inquiries, Next: Internet Addresses and Socket Names, Prev: Sockets, Up: Sockets
-
+File: scm-5f2.info, Node: Host and Other Inquiries, Next: Internet Addresses and Socket Names, Prev: Sockets, Up: Sockets
+ |
5.13.1 Host and Other Inquiries
-------------------------------
@@ -5830,8 +6002,8 @@ File: scm.info, Node: Host and Other Inquiries, Next: Internet Addresses and S
When called without an argument, the service table is closed.

-File: scm.info, Node: Internet Addresses and Socket Names, Next: Socket, Prev: Host and Other Inquiries, Up: Sockets
-
+File: scm-5f2.info, Node: Internet Addresses and Socket Names, Next: Socket, Prev: Host and Other Inquiries, Up: Sockets
+ |
5.13.2 Internet Addresses and Socket Names
------------------------------------------
@@ -5875,8 +6047,8 @@ following procedures:
Returns the integer Internet address for SOCKET-NAME.

-File: scm.info, Node: Socket, Prev: Internet Addresses and Socket Names, Up: Sockets
-
+File: scm-5f2.info, Node: Socket, Prev: Internet Addresses and Socket Names, Up: Sockets
+ |
5.13.3 Socket
-------------
@@ -6034,8 +6206,8 @@ you can use a client written in scheme:
(newline)))

-File: scm.info, Node: SCMDB, Prev: Sockets, Up: Packages
-
+File: scm-5f2.info, Node: SCMDB, Prev: Sockets, Up: Packages
+ |
5.14 SCMDB
==========
@@ -6046,8 +6218,8 @@ File: scm.info, Node: SCMDB, Prev: Sockets, Up: Packages
It is available from: `http://www.dedecker.net/jessie/scmdb/'

-File: scm.info, Node: The Implementation, Next: Index, Prev: Packages, Up: Top
-
+File: scm-5f2.info, Node: The Implementation, Next: Index, Prev: Packages, Up: Top
+ |
6 The Implementation
********************
@@ -6059,8 +6231,8 @@ File: scm.info, Node: The Implementation, Next: Index, Prev: Packages, Up: T
* Improvements To Make::

-File: scm.info, Node: Data Types, Next: Operations, Prev: The Implementation, Up: The Implementation
-
+File: scm-5f2.info, Node: Data Types, Next: Operations, Prev: The Implementation, Up: The Implementation
+ |
6.1 Data Types
==============
@@ -6078,13 +6250,16 @@ basic flavors, Immediates and Cells:
* Cells:: Non-Immediate types
* Header Cells:: Malloc objects
* Subr Cells:: Built-in and Compiled Procedures
+* Defining Subrs::
* Ptob Cells:: I/O ports
+* Defining Ptobs::
* Smob Cells:: Miscellaneous datatypes
+* Defining Smobs::
* Data Type Representations:: How they all fit together

-File: scm.info, Node: Immediates, Next: Cells, Prev: Data Types, Up: Data Types
-
+File: scm-5f2.info, Node: Immediates, Next: Cells, Prev: Data Types, Up: Data Types
+ |
6.1.1 Immediates
----------------
@@ -6222,8 +6397,8 @@ A "CAR Immediate" is an Immediate point which can only occur in the
`CAR's of evaluated code (as a result of `ceval''s memoization process).

-File: scm.info, Node: Cells, Next: Header Cells, Prev: Immediates, Up: Data Types
-
+File: scm-5f2.info, Node: Cells, Next: Header Cells, Prev: Immediates, Up: Data Types
+ |
6.1.2 Cells
-----------
@@ -6283,8 +6458,8 @@ is of type `SCM' and points to a cell (`CELLPTR').

-File: scm.info, Node: Header Cells, Next: Subr Cells, Prev: Cells, Up: Data Types
-
+File: scm-5f2.info, Node: Header Cells, Next: Subr Cells, Prev: Cells, Up: Data Types
+ |
6.1.3 Header Cells
------------------
@@ -6395,8 +6570,8 @@ memory allocated by `malloc'.
Expands to the length of CCLO.

-File: scm.info, Node: Subr Cells, Next: Ptob Cells, Prev: Header Cells, Up: Data Types
-
+File: scm-5f2.info, Node: Subr Cells, Next: Defining Subrs, Prev: Header Cells, Up: Data Types
+ |
6.1.4 Subr Cells
----------------
@@ -6460,9 +6635,63 @@ type `SCM'.
C function of list of `SCM' arguments.

-File: scm.info, Node: Ptob Cells, Next: Smob Cells, Prev: Subr Cells, Up: Data Types
-
-6.1.5 Ptob Cells
+File: scm-5f2.info, Node: Defining Subrs, Next: Ptob Cells, Prev: Subr Cells, Up: Data Types
+ |
+6.1.5 Defining Subrs |
+-------------------- |
+ |
+If "CCLO" is `#define'd when compiling, the compiled closure feature |
+will be enabled. It is automatically enabled if dynamic linking is |
+enabled. |
+ |
+The SCM interpreter directly recognizes subrs taking small numbers of |
+arguments. In order to create subrs taking larger numbers of arguments |
+use: |
+ |
+ -- Function: make_gsubr name req opt rest fcn |
+ returns a cclo (compiled closure) object of name `char *' NAME |
+ which takes `int' REQ required arguments, `int' OPT optional |
+ arguments, and a list of rest arguments if `int' REST is 1 (0 for |
+ not). |
+ |
+ `SCM (*fcn)()' is a pointer to a C function to do the work. |
+ |
+ The C function will always be called with REQ + OPT + REST |
+ arguments, optional arguments not supplied will be passed |
+ `UNDEFINED'. An error will be signaled if the subr is called with |
+ too many or too few arguments. Currently a total of 10 arguments |
+ may be specified, but increasing this limit should not be |
+ difficult. |
+ |
+ /* A silly example, taking 2 required args, |
+ 1 optional, and a list of rest args */ |
+ |
+ #include <scm.h> |
+ |
+ SCM gsubr_21l(req1,req2,opt,rst) |
+ SCM req1,req2,opt,rst; |
+ { |
+ lputs("gsubr-2-1-l:\n req1: ", cur_outp); |
+ display(req1,cur_outp); |
+ lputs("\n req2: ", cur_outp); |
+ display(req2,cur_outp); |
+ lputs("\n opt: ", cur_outp); |
+ display(opt,cur_outp); |
+ lputs("\n rest: ", cur_outp); |
+ display(rst,cur_outp); |
+ newline(cur_outp); |
+ return UNSPECIFIED; |
+ } |
+ |
+ void init_gsubr211() |
+ { |
+ make_gsubr("gsubr-2-1-l", 2, 1, 1, gsubr_21l); |
+ } |
+ |
+
+File: scm-5f2.info, Node: Ptob Cells, Next: Defining Ptobs, Prev: Defining Subrs, Up: Data Types
+ |
+6.1.6 Ptob Cells |
----------------
A "ptob" is a port object, capable of delivering or accepting characters.
@@ -6519,9 +6748,40 @@ for fports.
open output-port, respectively.

-File: scm.info, Node: Smob Cells, Next: Data Type Representations, Prev: Ptob Cells, Up: Data Types
-
-6.1.6 Smob Cells
+File: scm-5f2.info, Node: Defining Ptobs, Next: Smob Cells, Prev: Ptob Cells, Up: Data Types
+ |
+6.1.7 Defining Ptobs |
+-------------------- |
+ |
+"ptob"s are similar to smobs but define new types of port to which SCM |
+procedures can read or write. The following functions are defined in |
+the `ptobfuns': |
+ |
+ typedef struct { |
+ SCM (*mark)P((SCM ptr)); |
+ int (*free)P((FILE *p)); |
+ int (*print)P((SCM exp, SCM port, int writing)); |
+ SCM (*equalp)P((SCM, SCM)); |
+ int (*fputc)P((int c, FILE *p)); |
+ int (*fputs)P((char *s, FILE *p)); |
+ sizet (*fwrite)P((char *s, sizet siz, sizet num, FILE *p)); |
+ int (*fflush)P((FILE *stream)); |
+ int (*fgetc)P((FILE *p)); |
+ int (*fclose)P((FILE *p)); |
+ } ptobfuns; |
+ |
+The `.free' component to the structure takes a `FILE *' or other C |
+construct as its argument, unlike `.free' in a smob, which takes the |
+whole smob cell. Often, `.free' and `.fclose' can be the same |
+function. See `fptob' and `pipob' in `sys.c' for examples of how to |
+define ptobs. Ptobs that must allocate blocks of memory should use, |
+for example, `must_malloc' rather than `malloc' *Note Allocating
+memory::. |
+ |
+
+File: scm-5f2.info, Node: Smob Cells, Next: Defining Smobs, Prev: Defining Ptobs, Up: Data Types
+ |
+6.1.8 Smob Cells |
----------------
A "smob" is a miscellaneous datatype. The type code and GCMARK bit occupy
@@ -6609,10 +6869,84 @@ Defining Smobs::). These are the initial smobs:
`CDR'.

-File: scm.info, Node: Data Type Representations, Prev: Smob Cells, Up: Data Types
-
-6.1.7 Data Type Representations
--------------------------------
+File: scm-5f2.info, Node: Defining Smobs, Next: Data Type Representations, Prev: Smob Cells, Up: Data Types
+ |
+6.1.9 Defining Smobs |
+-------------------- |
+ |
+Here is an example of how to add a new type named `foo' to SCM. The |
+following lines need to be added to your code: |
+ |
+`long tc16_foo;' |
+ The type code which will be used to identify the new type. |
+ |
+`static smobfuns foosmob = {markfoo,freefoo,printfoo,equalpfoo};' |
+ smobfuns is a structure composed of 4 functions: |
+ |
+ typedef struct { |
+ SCM (*mark)P((SCM)); |
+ sizet (*free)P((CELLPTR)); |
+ int (*print)P((SCM exp, SCM port, int writing)); |
+ SCM (*equalp)P((SCM, SCM)); |
+ } smobfuns; |
+ |
+ `smob.mark' |
+ is a function of one argument of type `SCM' (the cell to |
+ mark) and returns type `SCM' which will then be marked. If |
+ no further objects need to be marked then return an immediate |
+ object such as `BOOL_F'. The smob cell itself will already |
+ have been marked. _Note_ This is different from SCM versions |
+ prior to 5c5. Only additional data specific to a smob type |
+ need be marked by `smob.mark'. |
+ |
+ 2 functions are provided: |
+ |
+ `markcdr(ptr)' |
+ returns `CDR(ptr)'. |
+ |
+ `mark0(ptr)' |
+ is a no-op used for smobs containing no additional `SCM' |
+ data. 0 may also be used in this case. |
+ |
+ `smob.free' |
+ is a function of one argument of type `CELLPTR' (the cell to |
+ collected) and returns type `sizet' which is the number of |
+ `malloc'ed bytes which were freed. `Smob.free' should free |
+ any `malloc'ed storage associated with this object. The |
+ function free0(ptr) is provided which does not free any |
+ storage and returns 0. |
+ |
+ `smob.print' |
+ is 0 or a function of 3 arguments. The first, of type `SCM', |
+ is the smob object. The second, of type `SCM', is the stream |
+ on which to write the result. The third, of type int, is 1 |
+ if the object should be `write'n, 0 if it should be |
+ `display'ed, and 2 if it should be `write'n for an error |
+ report. This function should return non-zero if it printed, |
+ and zero otherwise (in which case a hexadecimal number will |
+ be printed). |
+ |
+ `smob.equalp' |
+ is 0 or a function of 2 `SCM' arguments. Both of these |
+ arguments will be of type `tc16foo'. This function should |
+ return `BOOL_T' if the smobs are equal, `BOOL_F' if they are |
+ not. If `smob.equalp' is 0, `equal?' will return `BOOL_F' if |
+ they are not `eq?'. |
+ |
+`tc16_foo = newsmob(&foosmob);' |
+ Allocates the new type with the functions from `foosmob'. This |
+ line goes in an `init_' routine. |
+ |
+Promises and macros in `eval.c' and arbiters in `repl.c' provide |
+examples of SMOBs. There are a maximum of 256 SMOBs. Smobs that must |
+allocate blocks of memory should use, for example, `must_malloc' rather |
+than `malloc' *Note Allocating memory::. |
+ |
+
+File: scm-5f2.info, Node: Data Type Representations, Prev: Defining Smobs, Up: Data Types
+ |
+6.1.10 Data Type Representations |
+-------------------------------- |
IMMEDIATE: B,D,E,F=data bit, C=flag code, P=pointer address bit
................................
@@ -6636,20 +6970,20 @@ ssymbol .........long length....G0000101 ..........char *chars...........
msymbol .........long length....G0000111 ..........char *chars...........
string .........long length....G0001101 ..........char *chars...........
vector .........long length....G0001111 ...........SCM **elts...........
-Vbool .........long length....G0010101 ..........long *words...........
- spare 00010111
-VfixN8 .........long length....G0011101 ......unsigned char *words......
-VfixZ8 .........long length....G0011111 ..........char *words...........
-VfixN16 .........long length....G0100101 ......unsigned short *words.....
-VfixZ16 .........long length....G0100111 ........ short *words...........
-VfixN32 .........long length....G0101101 ......unsigned long *words......
-VfixZ32 .........long length....G0101111 ..........long *words...........
+VfixN8 .........long length....G0010101 ......unsigned char *words...... |
+VfixZ8 .........long length....G0010111 ..........char *words........... |
+VfixN16 .........long length....G0011101 ......unsigned short *words..... |
+VfixZ16 .........long length....G0011111 ........ short *words........... |
+VfixN32 .........long length....G0100101 ......unsigned medium *words.... |
+VfixZ32 .........long length....G0100111 ........medium *words........... |
+VfixN64 .........long length....G0101101 ......unsigned long *words...... |
+VfixZ64 .........long length....G0101111 ..........long *words........... |
VfloR32 .........long length....G0110101 .........float *words...........
VfloC32 .........long length....G0110111 .........float *words...........
VfloR64 .........long length....G0111101 ........double *words...........
VfloC64 .........long length....G0111111 ........double *words...........
- spare 01000101
+Vbool .........long length....G1000101 ..........long *words........... |
contin .........long length....G1001101 .............*regs..............
specfun ................xxxxxxxxG1001111 ...........SCM name.............
cclo ..short length..xxxxxx10G1001111 ...........SCM **elts...........
@@ -6691,8 +7025,8 @@ macro 000000000000000mxxxxxxxxG1111111 ...........SCM name.............
array ...short rank..cxxxxxxxxG1111111 ............*array..............

-File: scm.info, Node: Operations, Next: Program Self-Knowledge, Prev: Data Types, Up: The Implementation
-
+File: scm-5f2.info, Node: Operations, Next: Program Self-Knowledge, Prev: Data Types, Up: The Implementation
+ |
6.2 Operations
==============
@@ -6700,12 +7034,12 @@ File: scm.info, Node: Operations, Next: Program Self-Knowledge, Prev: Data Ty
* Garbage Collection:: Automatically reclaims unused storage
* Memory Management for Environments::
+* Dynamic Linking Support::
+* Configure Module Catalog::
+* Automatic C Preprocessor Definitions::
* Signals::
* C Macros::
* Changing Scm::
-* Defining Subrs::
-* Defining Smobs::
-* Defining Ptobs::
* Allocating memory::
* Embedding SCM:: In other programs
* Callbacks::
@@ -6714,8 +7048,8 @@ File: scm.info, Node: Operations, Next: Program Self-Knowledge, Prev: Data Ty
* Evaluation:: Why SCM is fast

-File: scm.info, Node: Garbage Collection, Next: Memory Management for Environments, Prev: Operations, Up: Operations
-
+File: scm-5f2.info, Node: Garbage Collection, Next: Memory Management for Environments, Prev: Operations, Up: Operations
+ |
6.2.1 Garbage Collection
------------------------
@@ -6734,8 +7068,8 @@ heap.
* Sweeping the Heap::

-File: scm.info, Node: Marking Cells, Next: Sweeping the Heap, Prev: Garbage Collection, Up: Garbage Collection
-
+File: scm-5f2.info, Node: Marking Cells, Next: Sweeping the Heap, Prev: Garbage Collection, Up: Garbage Collection
+ |
6.2.1.1 Marking Cells
.....................
@@ -6780,8 +7114,8 @@ symbols, "symhash".
practice and the advantage of using the c-stack far outweighs it.

-File: scm.info, Node: Sweeping the Heap, Prev: Marking Cells, Up: Garbage Collection
-
+File: scm-5f2.info, Node: Sweeping the Heap, Prev: Marking Cells, Up: Garbage Collection
+ |
6.2.1.2 Sweeping the Heap
.........................
@@ -6804,8 +7138,8 @@ collected.
the smob's `free' procedure is called to free its storage.

-File: scm.info, Node: Memory Management for Environments, Next: Signals, Prev: Garbage Collection, Up: Operations
-
+File: scm-5f2.info, Node: Memory Management for Environments, Next: Dynamic Linking Support, Prev: Garbage Collection, Up: Operations
+ |
6.2.2 Memory Management for Environments
----------------------------------------
@@ -6904,9 +7238,195 @@ into garbage collection techniques about which a considerable amount of
literature is available.

-File: scm.info, Node: Signals, Next: C Macros, Prev: Memory Management for Environments, Up: Operations
-
-6.2.3 Signals
+File: scm-5f2.info, Node: Dynamic Linking Support, Next: Configure Module Catalog, Prev: Memory Management for Environments, Up: Operations
+ |
+6.2.3 Dynamic Linking Support |
+----------------------------- |
+ |
+Dynamic linking has not been ported to all platforms. Operating systems |
+in the BSD family (a.out binary format) can usually be ported to "DLD". |
+The "dl" library (`#define SUN_DL' for SCM) was a proposed POSIX |
+standard and may be available on other machines with "COFF" binary |
+format. For notes about porting to MS-Windows and finishing the port |
+to VMS *note VMS Dynamic Linking::. |
+ |
+"DLD" is a library package of C functions that performs "dynamic link |
+editing" on GNU/Linux, VAX (Ultrix), Sun 3 (SunOS 3.4 and 4.0), |
+SPARCstation (SunOS 4.0), Sequent Symmetry (Dynix), and Atari ST. It |
+is available from: |
+ |
+ * ftp.gnu.org:pub/gnu/dld-3.3.tar.gz |
+ |
+These notes about using libdl on SunOS are from `gcc.info': |
+ |
+ On a Sun, linking using GNU CC fails to find a shared library and |
+ reports that the library doesn't exist at all. |
+ |
+ This happens if you are using the GNU linker, because it does only |
+ static linking and looks only for unshared libraries. If you have |
+ a shared library with no unshared counterpart, the GNU linker |
+ won't find anything. |
+ |
+ We hope to make a linker which supports Sun shared libraries, but |
+ please don't ask when it will be finished-we don't know. |
+ |
+ Sun forgot to include a static version of `libdl.a' with some |
+ versions of SunOS (mainly 4.1). This results in undefined symbols |
+ when linking static binaries (that is, if you use `-static'). If |
+ you see undefined symbols `_dlclose', `_dlsym' or `_dlopen' when |
+ linking, compile and link against the file `mit/util/misc/dlsym.c' |
+ from the MIT version of X windows. |
+ |
+
+File: scm-5f2.info, Node: Configure Module Catalog, Next: Automatic C Preprocessor Definitions, Prev: Dynamic Linking Support, Up: Operations
+ |
+6.2.4 Configure Module Catalog |
+------------------------------ |
+ |
+The SLIB module "catalog" can be extended to define other |
+`require'-able packages by adding calls to the Scheme source file |
+`mkimpcat.scm'. Within `mkimpcat.scm', the following procedures are |
+defined. |
+ |
+ -- Function: add-link feature object-file lib1 ... |
+ FEATURE should be a symbol. OBJECT-FILE should be a string naming |
+ a file containing compiled "object-code". Each LIBn argument |
+ should be either a string naming a library file or `#f'. |
+ |
+ If OBJECT-FILE exists, the `add-link' procedure registers symbol |
+ FEATURE so that the first time `require' is called with the symbol |
+ FEATURE as its argument, OBJECT-FILE and the LIB1 ... are |
+ dynamically linked into the executing SCM session. |
+ |
+ If OBJECT-FILE exists, `add-link' returns `#t', otherwise it |
+ returns `#f'. |
+ |
+ For example, to install a compiled dll `foo', add these lines to |
+ `mkimpcat.scm': |
+ |
+ (add-link 'foo |
+ (in-vicinity (implementation-vicinity) "foo" |
+ link:able-suffix)) |
+ |
+ |
+ -- Function: add-alias alias feature |
+ ALIAS and FEATURE are symbols. The procedure `add-alias' |
+ registers ALIAS as an alias for FEATURE. An unspecified value is |
+ returned. |
+ |
+ `add-alias' causes `(require 'ALIAS)' to behave like `(require |
+ 'FEATURE)'. |
+ |
+ -- Function: add-source feature filename |
+ FEATURE is a symbol. FILENAME is a string naming a file |
+ containing Scheme source code. The procedure `add-source' |
+ registers FEATURE so that the first time `require' is called with |
+ the symbol FEATURE as its argument, the file FILENAME will be |
+ `load'ed. An unspecified value is returned. |
+ |
+Remember to delete the file `slibcat' after modifying the file |
+`mkimpcat.scm' in order to force SLIB to rebuild its cache. |
+ |
+
+File: scm-5f2.info, Node: Automatic C Preprocessor Definitions, Next: Signals, Prev: Configure Module Catalog, Up: Operations
+ |
+6.2.5 Automatic C Preprocessor Definitions |
+------------------------------------------ |
+ |
+These `#defines' are automatically provided by preprocessors of various |
+C compilers. SCM uses the presence or absence of these definitions to |
+configure "include file" locations and aliases for library functions. |
+If the definition(s) corresponding to your system type is missing as |
+your system is configured, add `-DFLAG' to the compilation command |
+lines or add a `#define FLAG' line to `scmfig.h' or the beginning of |
+`scmfig.h'. |
+ |
+ #define Platforms: |
+ ------- ---------- |
+ ARM_ULIB Huw Rogers free unix library for acorn archimedes |
+ AZTEC_C Aztec_C 5.2a |
+ __CYGWIN__ Cygwin |
+ __CYGWIN32__ Cygwin |
+ _DCC Dice C on AMIGA |
+ __GNUC__ Gnu CC (and DJGPP) |
+ __EMX__ Gnu C port (gcc/emx 0.8e) to OS/2 2.0 |
+ __HIGHC__ MetaWare High C |
+ __IBMC__ C-Set++ on OS/2 2.1 |
+ _MSC_VER MS VisualC++ 4.2 |
+ MWC Mark Williams C on COHERENT |
+ __MWERKS__ Metrowerks Compiler; Macintosh and WIN32 (?) |
+ _POSIX_SOURCE ?? |
+ _QC Microsoft QuickC |
+ __STDC__ ANSI C compliant |
+ __TURBOC__ Turbo C and Borland C |
+ __USE_POSIX ?? |
+ __WATCOMC__ Watcom C on MS-DOS |
+ __ZTC__ Zortech C |
+ |
+ _AIX AIX operating system |
+ __APPLE__ Apple Darwin |
+ AMIGA SAS/C 5.10 or Dice C on AMIGA |
+ __amigaos__ Gnu CC on AMIGA |
+ atarist ATARI-ST under Gnu CC |
+ __DragonflyBSD__ DragonflyBSD |
+ __FreeBSD__ FreeBSD |
+ GNUDOS DJGPP (obsolete in version 1.08) |
+ __GO32__ DJGPP (future?) |
+ hpux HP-UX |
+ linux GNU/Linux |
+ macintosh Macintosh (THINK_C and __MWERKS__ define) |
+ MCH_AMIGA Aztec_c 5.2a on AMIGA |
+ __MACH__ Apple Darwin |
+ __MINGW32__ MinGW - Minimalist GNU for Windows |
+ MSDOS Microsoft C 5.10 and 6.00A |
+ _MSDOS Microsoft CLARM and CLTHUMB compilers. |
+ __MSDOS__ Turbo C, Borland C, and DJGPP |
+ __NetBSD__ NetBSD |
+ nosve Control Data NOS/VE |
+ __OpenBSD__ OpenBSD |
+ SVR2 System V Revision 2. |
+ sun SunOS |
+ __SVR4 SunOS |
+ THINK_C developement environment for the Macintosh |
+ ultrix VAX with ULTRIX operating system. |
+ unix most Unix and similar systems and DJGPP (!?) |
+ __unix__ Gnu CC and DJGPP |
+ _UNICOS Cray operating system |
+ vaxc VAX C compiler |
+ VAXC VAX C compiler |
+ vax11c VAX C compiler |
+ VAX11 VAX C compiler |
+ _Windows Borland C 3.1 compiling for Windows |
+ _WIN32 MS VisualC++ 4.2 and Cygwin (Win32 API) |
+ _WIN32_WCE MS Windows CE |
+ vms (and VMS) VAX-11 C under VMS. |
+ |
+ __alpha DEC Alpha processor |
+ __alpha__ DEC Alpha processor |
+ __hppa__ HP RISC processor |
+ hp9000s800 HP RISC processor |
+ __ia64 GCC on IA64 |
+ __ia64__ GCC on IA64 |
+ _LONGLONG GCC on IA64 |
+ __i386__ DJGPP |
+ i386 DJGPP |
+ _M_ARM Microsoft CLARM compiler defines as 4 for ARM. |
+ _M_ARMT Microsoft CLTHUMB compiler defines as 4 for Thumb. |
+ MULTIMAX Encore computer |
+ ppc PowerPC |
+ __ppc__ PowerPC |
+ pyr Pyramid 9810 processor |
+ __sgi__ Silicon Graphics Inc. |
+ sparc SPARC processor |
+ sequent Sequent computer |
+ tahoe CCI Tahoe processor |
+ vax VAX processor |
+ __x86_64 AMD Opteron |
+ |
+
+File: scm-5f2.info, Node: Signals, Next: C Macros, Prev: Automatic C Preprocessor Definitions, Up: Operations
+ |
+6.2.6 Signals |
-------------
-- Function: init_signals
@@ -6945,9 +7465,9 @@ macros `DEFER_INTS' and `ALLOW_INTS'.
`scmfig.h'.

-File: scm.info, Node: C Macros, Next: Changing Scm, Prev: Signals, Up: Operations
-
-6.2.4 C Macros
+File: scm-5f2.info, Node: C Macros, Next: Changing Scm, Prev: Signals, Up: Operations
+ |
+6.2.7 C Macros |
--------------
-- Macro: ASRTER cond arg pos subr
@@ -7000,9 +7520,9 @@ File: scm.info, Node: C Macros, Next: Changing Scm, Prev: Signals, Up: Opera
`ASRTGO' does is not active if the flag `RECKLESS' is defined.

-File: scm.info, Node: Changing Scm, Next: Defining Subrs, Prev: C Macros, Up: Operations
-
-6.2.5 Changing Scm
+File: scm-5f2.info, Node: Changing Scm, Next: Allocating memory, Prev: C Macros, Up: Operations
+ |
+6.2.8 Changing Scm |
------------------
When writing C-code for SCM, a precaution is recommended. If your
@@ -7095,7 +7615,7 @@ To add a package of new procedures to scm (see `crs.c' for example):
7. put any scheme code which needs to be run as part of your package
into `Ifoo.scm'.
- 8. put an `if' into `Init5e5.scm' which loads `Ifoo.scm' if your |
+ 8. put an `if' into `Init5f1.scm' which loads `Ifoo.scm' if your |
package is included:
(if (defined? twiddle-bits!)
@@ -7130,167 +7650,8 @@ New syntax can now be added without recompiling SCM by the use of the
and `defmacro'. For details, *Note Syntax::.

-File: scm.info, Node: Defining Subrs, Next: Defining Smobs, Prev: Changing Scm, Up: Operations
-
-6.2.6 Defining Subrs
---------------------
-
-If "CCLO" is `#define'd when compiling, the compiled closure feature
-will be enabled. It is automatically enabled if dynamic linking is
-enabled.
-
-The SCM interpreter directly recognizes subrs taking small numbers of
-arguments. In order to create subrs taking larger numbers of arguments
-use:
-
- -- Function: make_gsubr name req opt rest fcn
- returns a cclo (compiled closure) object of name `char *' NAME
- which takes `int' REQ required arguments, `int' OPT optional
- arguments, and a list of rest arguments if `int' REST is 1 (0 for
- not).
-
- `SCM (*fcn)()' is a pointer to a C function to do the work.
-
- The C function will always be called with REQ + OPT + REST
- arguments, optional arguments not supplied will be passed
- `UNDEFINED'. An error will be signaled if the subr is called with
- too many or too few arguments. Currently a total of 10 arguments
- may be specified, but increasing this limit should not be
- difficult.
-
- /* A silly example, taking 2 required args,
- 1 optional, and a list of rest args */
-
- #include <scm.h>
-
- SCM gsubr_21l(req1,req2,opt,rst)
- SCM req1,req2,opt,rst;
- {
- lputs("gsubr-2-1-l:\n req1: ", cur_outp);
- display(req1,cur_outp);
- lputs("\n req2: ", cur_outp);
- display(req2,cur_outp);
- lputs("\n opt: ", cur_outp);
- display(opt,cur_outp);
- lputs("\n rest: ", cur_outp);
- display(rst,cur_outp);
- newline(cur_outp);
- return UNSPECIFIED;
- }
-
- void init_gsubr211()
- {
- make_gsubr("gsubr-2-1-l", 2, 1, 1, gsubr_21l);
- }
-
-
-File: scm.info, Node: Defining Smobs, Next: Defining Ptobs, Prev: Defining Subrs, Up: Operations
-
-6.2.7 Defining Smobs
---------------------
-
-Here is an example of how to add a new type named `foo' to SCM. The
-following lines need to be added to your code:
-
-`long tc16_foo;'
- The type code which will be used to identify the new type.
-
-`static smobfuns foosmob = {markfoo,freefoo,printfoo,equalpfoo};'
- smobfuns is a structure composed of 4 functions:
-
- typedef struct {
- SCM (*mark)P((SCM));
- sizet (*free)P((CELLPTR));
- int (*print)P((SCM exp, SCM port, int writing));
- SCM (*equalp)P((SCM, SCM));
- } smobfuns;
-
- `smob.mark'
- is a function of one argument of type `SCM' (the cell to
- mark) and returns type `SCM' which will then be marked. If
- no further objects need to be marked then return an immediate
- object such as `BOOL_F'. The smob cell itself will already
- have been marked. _Note_ This is different from SCM versions
- prior to 5c5. Only additional data specific to a smob type
- need be marked by `smob.mark'.
-
- 2 functions are provided:
-
- `markcdr(ptr)'
- returns `CDR(ptr)'.
-
- `mark0(ptr)'
- is a no-op used for smobs containing no additional `SCM'
- data. 0 may also be used in this case.
-
- `smob.free'
- is a function of one argument of type `CELLPTR' (the cell to
- collected) and returns type `sizet' which is the number of
- `malloc'ed bytes which were freed. `Smob.free' should free
- any `malloc'ed storage associated with this object. The
- function free0(ptr) is provided which does not free any
- storage and returns 0.
-
- `smob.print'
- is 0 or a function of 3 arguments. The first, of type `SCM',
- is the smob object. The second, of type `SCM', is the stream
- on which to write the result. The third, of type int, is 1
- if the object should be `write'n, 0 if it should be
- `display'ed, and 2 if it should be `write'n for an error
- report. This function should return non-zero if it printed,
- and zero otherwise (in which case a hexadecimal number will
- be printed).
-
- `smob.equalp'
- is 0 or a function of 2 `SCM' arguments. Both of these
- arguments will be of type `tc16foo'. This function should
- return `BOOL_T' if the smobs are equal, `BOOL_F' if they are
- not. If `smob.equalp' is 0, `equal?' will return `BOOL_F' if
- they are not `eq?'.
-
-`tc16_foo = newsmob(&foosmob);'
- Allocates the new type with the functions from `foosmob'. This
- line goes in an `init_' routine.
-
-Promises and macros in `eval.c' and arbiters in `repl.c' provide
-examples of SMOBs. There are a maximum of 256 SMOBs. Smobs that must
-allocate blocks of memory should use, for example, `must_malloc' rather
-than `malloc' *Note Allocating memory::.
-
-
-File: scm.info, Node: Defining Ptobs, Next: Allocating memory, Prev: Defining Smobs, Up: Operations
-
-6.2.8 Defining Ptobs
---------------------
-
-"ptob"s are similar to smobs but define new types of port to which SCM
-procedures can read or write. The following functions are defined in
-the `ptobfuns':
-
- typedef struct {
- SCM (*mark)P((SCM ptr));
- int (*free)P((FILE *p));
- int (*print)P((SCM exp, SCM port, int writing));
- SCM (*equalp)P((SCM, SCM));
- int (*fputc)P((int c, FILE *p));
- int (*fputs)P((char *s, FILE *p));
- sizet (*fwrite)P((char *s, sizet siz, sizet num, FILE *p));
- int (*fflush)P((FILE *stream));
- int (*fgetc)P((FILE *p));
- int (*fclose)P((FILE *p));
- } ptobfuns;
-
-The `.free' component to the structure takes a `FILE *' or other C
-construct as its argument, unlike `.free' in a smob, which takes the
-whole smob cell. Often, `.free' and `.fclose' can be the same
-function. See `fptob' and `pipob' in `sys.c' for examples of how to
-define ptobs. Ptobs that must allocate blocks of memory should use,
-for example, `must_malloc' rather than `malloc' *Note Allocating
-memory::.
-
-
-File: scm.info, Node: Allocating memory, Next: Embedding SCM, Prev: Defining Ptobs, Up: Operations
-
+File: scm-5f2.info, Node: Allocating memory, Next: Embedding SCM, Prev: Changing Scm, Up: Operations
+ |
6.2.9 Allocating memory
-----------------------
@@ -7338,8 +7699,8 @@ must be large enough.
instead.

-File: scm.info, Node: Embedding SCM, Next: Callbacks, Prev: Allocating memory, Up: Operations
-
+File: scm-5f2.info, Node: Embedding SCM, Next: Callbacks, Prev: Allocating memory, Up: Operations
+ |
6.2.10 Embedding SCM
--------------------
@@ -7395,7 +7756,7 @@ SCM, then you can replace `scm_find_implpath'.
environment variable is defined, its value will be returned from
`scm_find_implpath'. Otherwise find_impl_file() is called with the
arguments EXECPATH, GENERIC_NAME (default "scm"), INIT_FILE_NAME
- (default "Init5e5_scm"), and the directory separator string |
+ (default "Init5f1_scm"), and the directory separator string |
DIRSEP. If find_impl_file() returns 0 and IMPLINIT is defined,
then a copy of the string IMPLINIT is returned.
@@ -7406,8 +7767,7 @@ SCM, then you can replace `scm_find_implpath'.
Otherwise, 0 is returned.
`init_buf0' should be called before any input is read from INPORT.
- Its value can be used as the last argument to
- scm_init_from_argv().
+ Its value can be used as the last argument to scm_init_from_argv().
-- Function: void scm_init_from_argv (int ARGC, char **ARGV, char
*SCRIPT_ARG, int IVERBOSE, int BUF0STDIN)
@@ -7518,13 +7878,13 @@ Here is a minimal embedding program `libtest.c':
-|
dld_find_executable(./libtest): /home/jaffer/scm/libtest
- implpath: /home/jaffer/scm/Init5e5.scm |
+ implpath: /home/jaffer/scm/Init5f1.scm |
This is libtest_init_user_scm
hello world

-File: scm.info, Node: Callbacks, Next: Type Conversions, Prev: Embedding SCM, Up: Operations
-
+File: scm-5f2.info, Node: Callbacks, Next: Type Conversions, Prev: Embedding SCM, Up: Operations
+ |
6.2.11 Callbacks
----------------
@@ -7534,7 +7894,7 @@ The source code for these routines are found in `rope.c'.
-- Function: int scm_ldfile (char *FILE)
Loads the Scheme source file FILE. Returns 0 if successful, non-0
if not. This function is used to load SCM's initialization file
- `Init5e5.scm'. |
+ `Init5f1.scm'. |
-- Function: int scm_ldprog (char *FILE)
Loads the Scheme source file `(in-vicinity (program-vicinity)
@@ -7571,8 +7931,8 @@ can use a wrapper like this for your Scheme procedures:
Calls to procedures so wrapped will return even if an error occurs.

-File: scm.info, Node: Type Conversions, Next: Continuations, Prev: Callbacks, Up: Operations
-
+File: scm-5f2.info, Node: Type Conversions, Next: Continuations, Prev: Callbacks, Up: Operations
+ |
6.2.12 Type Conversions
-----------------------
@@ -7658,15 +8018,15 @@ code. Most are defined in `rope.c'.
`makargvfrmstrs'.

-File: scm.info, Node: Continuations, Next: Evaluation, Prev: Type Conversions, Up: Operations
-
+File: scm-5f2.info, Node: Continuations, Next: Evaluation, Prev: Type Conversions, Up: Operations
+ |
6.2.13 Continuations
--------------------
The source files `continue.h' and `continue.c' are designed to function
as an independent resource for programs wishing to use continuations,
but without all the rest of the SCM machinery. The concept of
-continuations is explained in *Note call-with-current-continuation:
+continuations is explained in *note call-with-current-continuation:
(r5rs)Control features.
The C constructs `jmp_buf', `setjmp', and `longjmp' implement escape
@@ -7758,8 +8118,8 @@ conflicts.
* `longjump(CONT->jmpbuf, val)';

-File: scm.info, Node: Evaluation, Prev: Continuations, Up: Operations
-
+File: scm-5f2.info, Node: Evaluation, Prev: Continuations, Up: Operations
+ |
6.2.14 Evaluation
-----------------
@@ -7864,8 +8224,8 @@ then be replaced with an `ILOC' or `GLOC'.
not modify `expression'.

-File: scm.info, Node: Program Self-Knowledge, Next: Improvements To Make, Prev: Operations, Up: The Implementation
-
+File: scm-5f2.info, Node: Program Self-Knowledge, Next: Improvements To Make, Prev: Operations, Up: The Implementation
+ |
6.3 Program Self-Knowledge
==========================
@@ -7876,8 +8236,8 @@ File: scm.info, Node: Program Self-Knowledge, Next: Improvements To Make, Pre
* Script Support::

-File: scm.info, Node: File-System Habitat, Next: Executable Pathname, Prev: Program Self-Knowledge, Up: Program Self-Knowledge
-
+File: scm-5f2.info, Node: File-System Habitat, Next: Executable Pathname, Prev: Program Self-Knowledge, Up: Program Self-Knowledge
+ |
6.3.1 File-System Habitat
-------------------------
@@ -7949,12 +8309,12 @@ needed.
`C:\foo\bar.exe' and the initialization file in `C:\foo\bar\'.

-File: scm.info, Node: Executable Pathname, Next: Script Support, Prev: File-System Habitat, Up: Program Self-Knowledge
-
+File: scm-5f2.info, Node: Executable Pathname, Next: Script Support, Prev: File-System Habitat, Up: Program Self-Knowledge
+ |
6.3.2 Executable Pathname
-------------------------
-For purposes of finding `Init5e5.scm', dumping an executable, and |
+For purposes of finding `Init5f1.scm', dumping an executable, and |
dynamic linking, a SCM session needs the pathname of its executable
image.
@@ -7991,12 +8351,12 @@ the full pathname for the associated executable file.
any of the directories listed in `PATH'.

-File: scm.info, Node: Script Support, Prev: Executable Pathname, Up: Program Self-Knowledge
-
+File: scm-5f2.info, Node: Script Support, Prev: Executable Pathname, Up: Program Self-Knowledge
+ |
6.3.3 Script Support
--------------------
-Source code for these C functions is in the file `script.c'. *Note
+Source code for these C functions is in the file `script.c'. *note
Scripting:: for a description of script argument processing.
`script_find_executable' is only defined on unix systems.
@@ -8024,8 +8384,8 @@ Scripting:: for a description of script argument processing.
Returns the number of argument strings in ARGV.

-File: scm.info, Node: Improvements To Make, Prev: Program Self-Knowledge, Up: The Implementation
-
+File: scm-5f2.info, Node: Improvements To Make, Prev: Program Self-Knowledge, Up: The Implementation
+ |
6.4 Improvements To Make
========================
@@ -8077,8 +8437,8 @@ File: scm.info, Node: Improvements To Make, Prev: Program Self-Knowledge, Up:
* VMS Dynamic Linking:: Finishing the job.

-File: scm.info, Node: VMS Dynamic Linking, Prev: Improvements To Make, Up: Improvements To Make
-
+File: scm-5f2.info, Node: VMS Dynamic Linking, Prev: Improvements To Make, Up: Improvements To Make
+ |
6.4.1 VMS Dynamic Linking
-------------------------
@@ -8197,8 +8557,8 @@ with a VMS system needs to finish and debug it.
that have been linked against it.

-File: scm.info, Node: Index, Prev: The Implementation, Up: Top
-
+File: scm-5f2.info, Node: Index, Prev: The Implementation, Up: Top
+ |
Index
*****
@@ -8226,7 +8586,7 @@ Procedure and Macro Index
(line 7)
* #|: Common-Lisp Read Syntax.
(line 28)
-* $atan2: Numeric. (line 59)
+* $atan2: Numeric. (line 70)
* -: SCM Options. (line 111)
* ---: SCM Options. (line 112)
* ---c-source-files=: Build Options. (line 134)
@@ -8286,10 +8646,10 @@ Procedure and Macro Index
* _ionbf: Opening and Closing. (line 28)
* _tracked: Opening and Closing. (line 35)
* abort: Internal State. (line 15)
-* access: I/O-Extensions. (line 170)
+* access: I/O-Extensions. (line 184)
* acct: Unix Extensions. (line 34)
* acons: Storage. (line 21)
-* acosh: Numeric. (line 33)
+* acosh: Numeric. (line 43)
* add-alias: Configure Module Catalog.
(line 33)
* add-finalizer: Storage. (line 36)
@@ -8303,18 +8663,19 @@ Procedure and Macro Index
* alrm_signal: Signals. (line 14)
* ARGC: Cells. (line 57)
* arithmetic-error: Interrupts. (line 69)
-* array->list: Conventional Arrays. (line 60)
-* array-contents: Conventional Arrays. (line 64)
+* array->list: Conventional Arrays. (line 62)
+* array-contents: Conventional Arrays. (line 66)
* array-equal?: Array Mapping. (line 18)
* array-fill!: Array Mapping. (line 11)
* array-map: Array Mapping. (line 43)
* array-map!: Array Mapping. (line 25)
* array-prototype: Uniform Array. (line 50)
* array?: Uniform Array. (line 46)
-* asinh: Numeric. (line 32)
+* asinh: Numeric. (line 42)
* ASRTER: C Macros. (line 7)
* ASRTGO: C Macros. (line 52)
-* atanh: Numeric. (line 34)
+* atan: Numeric. (line 56)
+* atanh: Numeric. (line 44)
* bit-count: Bit Vectors. (line 15)
* bit-count*: Bit Vectors. (line 37)
* bit-invert!: Bit Vectors. (line 23)
@@ -8337,9 +8698,9 @@ Procedure and Macro Index
* char:sharp: Modifying Read Syntax.
(line 23)
* CHARS: Header Cells. (line 35)
-* chdir: I/O-Extensions. (line 134)
+* chdir: I/O-Extensions. (line 143)
* CHEAP_CONTINUATIONS: Continuations. (line 37)
-* chmod: I/O-Extensions. (line 149)
+* chmod: I/O-Extensions. (line 163)
* chown: Posix Extensions. (line 255)
* clearok: Output Options Setting.
(line 11)
@@ -8353,20 +8714,22 @@ Procedure and Macro Index
* comment: Documentation and Comments.
(line 23)
* CONSP: Cells. (line 35)
+* copy-file: I/O-Extensions. (line 158)
* copy-tree: Storage. (line 15)
-* cosh: Numeric. (line 28)
+* cosh: Numeric. (line 38)
* could-not-open: Interrupts. (line 66)
* current-error-port: Port Redirection. (line 7)
* current-input-port: Port Properties. (line 54)
* current-time: Time. (line 24)
-* default-input-port: Line Editing. (line 21)
-* default-output-port: Line Editing. (line 25)
+* default-input-port: Line Editing. (line 23)
+* default-output-port: Line Editing. (line 27)
* defconst: Define and Set. (line 22)
* DEFER_INTS: Signals. (line 26)
* defined?: Define and Set. (line 7)
* defmacro: Defmacro. (line 6)
* defsyntax: Macro Primitives. (line 36)
* defvar: Define and Set. (line 13)
+* directory*-for-each: I/O-Extensions. (line 120)
* directory-for-each: I/O-Extensions. (line 94)
* display: Output. (line 9)
* dld_find_executable: Executable Pathname. (line 18)
@@ -8389,19 +8752,24 @@ Procedure and Macro Index
* EVAL: Evaluation. (line 91)
* eval: Eval and Load. (line 21)
* eval-string: Eval and Load. (line 24)
+* exact-ceiling: Numeric. (line 23)
+* exact-floor: Numeric. (line 22)
+* exact-round: Numeric. (line 21)
+* exact-truncate: Numeric. (line 24)
* exec-self: Internal State. (line 27)
-* execl: I/O-Extensions. (line 196)
-* execlp: I/O-Extensions. (line 197)
-* execpath: Internal State. (line 79)
-* execv: I/O-Extensions. (line 207)
-* execvp: I/O-Extensions. (line 208)
+* execl: I/O-Extensions. (line 210)
+* execlp: I/O-Extensions. (line 211)
+* execpath: Internal State. (line 82)
+* execv: I/O-Extensions. (line 221)
+* execvp: I/O-Extensions. (line 222)
* exit: SCM Session. (line 19)
* extended-environment: Syntactic Hooks for Hygienic Macros.
(line 113)
* file-position: Port Properties. (line 18)
-* fileno: I/O-Extensions. (line 166)
-* final_scm: Embedding SCM. (line 117)
+* fileno: I/O-Extensions. (line 180)
+* final_scm: Embedding SCM. (line 116)
* find_impl_file: File-System Habitat. (line 35)
+* finite?: Numeric. (line 79)
* force-output: Window Manipulation. (line 30)
* fork: Posix Extensions. (line 44)
* FPORTP: Ptob Cells. (line 53)
@@ -8421,8 +8789,9 @@ Procedure and Macro Index
* gentemp: Defmacro. (line 6)
* get-internal-real-time: Time. (line 17)
* get-internal-run-time: Time. (line 10)
-* getcwd: I/O-Extensions. (line 139)
+* getcwd: I/O-Extensions. (line 148)
* getegid: Posix Extensions. (line 63)
+* getenv: SCM Session. (line 43)
* geteuid: Posix Extensions. (line 66)
* getgid: Posix Extensions. (line 60)
* getgr: Posix Extensions. (line 224)
@@ -8468,9 +8837,10 @@ Procedure and Macro Index
(line 15)
* inet:string->address: Internet Addresses and Socket Names.
(line 7)
+* infinite?: Numeric. (line 78)
* init_buf0: Embedding SCM. (line 63)
* init_sbrk: Embedding SCM. (line 31)
-* init_signals <1>: Embedding SCM. (line 85)
+* init_signals <1>: Embedding SCM. (line 84)
* init_signals: Signals. (line 7)
* initscr: Curses. (line 11)
* INPORTP: Ptob Cells. (line 37)
@@ -8486,7 +8856,7 @@ Procedure and Macro Index
* leaveok: Output Options Setting.
(line 32)
* LENGTH: Header Cells. (line 22)
-* line-editing: Line Editing. (line 33)
+* line-editing: Line Editing. (line 35)
* line-number: Eval and Load. (line 34)
* line-number->integer: Line Numbers. (line 41)
* line-number?: Line Numbers. (line 44)
@@ -8508,7 +8878,7 @@ Procedure and Macro Index
* makcclo: Header Cells. (line 105)
* make-arbiter: Process Synchronization.
(line 35)
-* make-edited-line-port: Line Editing. (line 29)
+* make-edited-line-port: Line Editing. (line 31)
* make-exchanger: Process Synchronization.
(line 12)
* make-soft-port: Soft Ports. (line 10)
@@ -8527,7 +8897,7 @@ Procedure and Macro Index
* MAKSPCSYM: Immediates. (line 97)
* mark_locations: Marking Cells. (line 33)
* milli-alarm: Interrupts. (line 30)
-* mkdir: I/O-Extensions. (line 120)
+* mkdir: I/O-Extensions. (line 129)
* mknod: Unix Extensions. (line 43)
* must_free: Allocating memory. (line 43)
* must_free_argv: Type Conversions. (line 84)
@@ -8577,8 +8947,8 @@ Procedure and Macro Index
* overlay: Window Manipulation. (line 46)
* overwrite: Window Manipulation. (line 47)
* perror: Errors. (line 101)
-* pi*: Numeric. (line 21)
-* pi/: Numeric. (line 24)
+* pi*: Numeric. (line 31)
+* pi/: Numeric. (line 34)
* pipe: Posix Extensions. (line 40)
* port-closed?: Port Properties. (line 7)
* port-column: Port Properties. (line 30)
@@ -8603,7 +8973,7 @@ Procedure and Macro Index
* profile-alarm: Interrupts. (line 32)
* profile-alarm-interrupt: Interrupts. (line 52)
* program-arguments: SCM Session. (line 30)
-* putenv: I/O-Extensions. (line 212)
+* putenv: I/O-Extensions. (line 226)
* qase: Define and Set. (line 45)
* quit: SCM Session. (line 17)
* raw: Terminal Mode Setting.
@@ -8616,23 +8986,23 @@ Procedure and Macro Index
(line 7)
* readdir: I/O-Extensions. (line 81)
* readlink: Unix Extensions. (line 19)
-* real-acos: Numeric. (line 44)
-* real-acosh: Numeric. (line 50)
-* real-asin: Numeric. (line 43)
-* real-asinh: Numeric. (line 49)
-* real-atan: Numeric. (line 45)
-* real-atanh: Numeric. (line 51)
-* real-cos: Numeric. (line 41)
-* real-cosh: Numeric. (line 47)
-* real-exp: Numeric. (line 38)
-* real-expt: Numeric. (line 62)
-* real-ln: Numeric. (line 39)
-* real-log10: Numeric. (line 56)
-* real-sin: Numeric. (line 40)
-* real-sinh: Numeric. (line 46)
-* real-sqrt: Numeric. (line 37)
-* real-tan: Numeric. (line 42)
-* real-tanh: Numeric. (line 48)
+* real-acos: Numeric. (line 54)
+* real-acosh: Numeric. (line 61)
+* real-asin: Numeric. (line 53)
+* real-asinh: Numeric. (line 60)
+* real-atan: Numeric. (line 55)
+* real-atanh: Numeric. (line 62)
+* real-cos: Numeric. (line 51)
+* real-cosh: Numeric. (line 58)
+* real-exp: Numeric. (line 48)
+* real-expt: Numeric. (line 73)
+* real-ln: Numeric. (line 49)
+* real-log10: Numeric. (line 67)
+* real-sin: Numeric. (line 50)
+* real-sinh: Numeric. (line 57)
+* real-sqrt: Numeric. (line 47)
+* real-tan: Numeric. (line 52)
+* real-tanh: Numeric. (line 59)
* record-printer-set!: Records. (line 10)
* redirect-port!: I/O-Extensions. (line 72)
* refresh: Window Manipulation. (line 29)
@@ -8654,7 +9024,7 @@ Procedure and Macro Index
(line 52)
* release-arbiter: Process Synchronization.
(line 43)
-* rename-file: I/O-Extensions. (line 144)
+* rename-file: I/O-Extensions. (line 153)
* renamed-identifier: Syntactic Hooks for Hygienic Macros.
(line 26)
* renaming-transformer: Syntactic Hooks for Hygienic Macros.
@@ -8664,10 +9034,10 @@ Procedure and Macro Index
* resetty: Terminal Mode Setting.
(line 58)
* restart: Internal State. (line 18)
-* restore_signals: Embedding SCM. (line 90)
+* restore_signals: Embedding SCM. (line 89)
* rewinddir: I/O-Extensions. (line 86)
-* rmdir: I/O-Extensions. (line 129)
-* room: Internal State. (line 62)
+* rmdir: I/O-Extensions. (line 138)
+* room: Internal State. (line 65)
* savetty: Terminal Mode Setting.
(line 59)
* scalar->array: Array Mapping. (line 51)
@@ -8675,12 +9045,12 @@ Procedure and Macro Index
* scm_find_execpath: Embedding SCM. (line 36)
* scm_find_implpath: Embedding SCM. (line 50)
* scm_gc_protect: Changing Scm. (line 35)
-* scm_init_from_argv: Embedding SCM. (line 74)
+* scm_init_from_argv: Embedding SCM. (line 73)
* scm_ldfile: Callbacks. (line 10)
* scm_ldprog: Callbacks. (line 15)
* scm_ldstr: Callbacks. (line 28)
* scm_protect_temp: Changing Scm. (line 26)
-* scm_top_level: Embedding SCM. (line 93)
+* scm_top_level: Embedding SCM. (line 92)
* scope-trace: Debugging Continuations.
(line 23)
* script_count_argv: Script Support. (line 31)
@@ -8709,7 +9079,7 @@ Procedure and Macro Index
* short: Type Conversions. (line 25)
* SHORT_ALIGN: Continuations. (line 28)
* SIDEVAL: Evaluation. (line 92)
-* sinh: Numeric. (line 27)
+* sinh: Numeric. (line 37)
* socket-name:address: Internet Addresses and Socket Names.
(line 43)
* socket-name:family: Internet Addresses and Socket Names.
@@ -8740,7 +9110,7 @@ Procedure and Macro Index
* syntax-quote: Syntactic Hooks for Hygienic Macros.
(line 123)
* syntax-rules: Syntax-Rules. (line 6)
-* tanh: Numeric. (line 29)
+* tanh: Numeric. (line 39)
* the-macro: Syntactic Hooks for Hygienic Macros.
(line 129)
* throw_to_continuation: Continuations. (line 84)
@@ -8763,7 +9133,7 @@ Procedure and Macro Index
* TYP7: Cells. (line 28)
* UCHARS: Header Cells. (line 36)
* ulong2num: Type Conversions. (line 11)
-* umask: I/O-Extensions. (line 161)
+* umask: I/O-Extensions. (line 175)
* uname: Posix Extensions. (line 172)
* unctrl: Curses Miscellany. (line 30)
* uniform-array-read!: Uniform Array. (line 67)
@@ -8772,14 +9142,14 @@ Procedure and Macro Index
(line 45)
* user-interrupt: Interrupts. (line 49)
* usr:lib: Dynamic Linking. (line 18)
-* utime: I/O-Extensions. (line 156)
+* utime: I/O-Extensions. (line 170)
* vector-set-length!: Storage. (line 7)
* VECTORP: Header Cells. (line 16)
* VELTS: Header Cells. (line 21)
* verbose: Internal State. (line 33)
* virtual-alarm: Interrupts. (line 31)
* virtual-alarm-interrupt: Interrupts. (line 51)
-* vms-debug: SCM Session. (line 41)
+* vms-debug: SCM Session. (line 56)
* void: Sweeping the Heap. (line 15)
* wadd: Output. (line 11)
* wait-for-input: Port Properties. (line 66)
@@ -8816,7 +9186,7 @@ Variable Index
* *interactive*: SCM Variables. (line 36)
* *load-pathname*: Eval and Load. (line 15)
* *load-reader*: Line Numbers. (line 50)
-* *scm-version*: Internal State. (line 67)
+* *scm-version*: Internal State. (line 70)
* *slib-load-reader*: Line Numbers. (line 51)
* *syntax-rules*: SCM Variables. (line 30)
* af_inet: Host and Other Inquiries.
@@ -9032,145 +9402,151 @@ Concept Index
* Unix: Unix Extensions. (line 6)
* unix: Build Options. (line 351)
* wb: Build Options. (line 355)
-* windows: Build Options. (line 358)
+* wb-no-threads: Build Options. (line 358)
+* windows: Build Options. (line 361)
* X: Packages. (line 23)
* x <1>: Packages. (line 23)
-* x: Build Options. (line 361)
+* x: Build Options. (line 364)
* xlib: Packages. (line 23)
* Xlib: Packages. (line 23)
-* xlib: Build Options. (line 364)
+* xlib: Build Options. (line 367)
* xlibscm: Packages. (line 23)
* Xlibscm: Packages. (line 23)

Tag Table:
-Node: Top853
-Node: Overview1826
-Node: SCM Features2311
-Node: SCM Authors4321
-Node: Copying5222
-Node: The SCM License5607
-Node: SIOD copyright6539
-Node: GNU Free Documentation License8010
-Node: Bibliography42502
-Node: Installing SCM44457
-Node: Making SCM44976
-Node: SLIB45924
-Node: Building SCM47772
-Node: Invoking Build48354
-Node: Build Options50691
-Node: Compiling and Linking Custom Files64059
-Node: Installing Dynamic Linking66055
-Node: Configure Module Catalog67845
-Node: Saving Images69853
-Node: Automatic C Preprocessor Definitions71595
-Node: Problems Compiling75438
-Node: Problems Linking77099
-Node: Problems Running77372
-Node: Testing79490
-Node: Reporting Problems82759
-Node: Operational Features83611
-Node: Invoking SCM84007
-Node: SCM Options85727
-Node: Invocation Examples90197
-Node: SCM Variables91157
-Node: SCM Session92637
-Node: Editing Scheme Code94168
-Node: Debugging Scheme Code96186
-Node: Debugging Continuations100451
-Node: Errors103011
-Node: Memoized Expressions107329
-Node: Internal State109693
-Node: Scripting112919
-Node: Unix Scheme Scripts113223
-Node: MS-DOS Compatible Scripts116255
-Node: Unix Shell Scripts118110
-Node: The Language120251
-Node: Standards Compliance120873
-Node: Storage123296
-Node: Time125776
-Node: Interrupts126792
-Node: Process Synchronization130425
-Node: Files and Ports131954
-Node: Opening and Closing132295
-Node: Port Properties134795
-Node: Port Redirection137932
-Node: Soft Ports139424
-Node: Eval and Load141206
-Node: Line Numbers142622
-Node: Lexical Conventions145045
-Node: Common-Lisp Read Syntax145307
-Node: Load Syntax147294
-Node: Documentation and Comments147914
-Node: Modifying Read Syntax149138
-Node: Syntax150861
-Node: Define and Set151765
-Node: Defmacro155299
-Node: Syntax-Rules156379
-Node: Macro Primitives158185
-Node: Environment Frames159824
-Node: Syntactic Hooks for Hygienic Macros162244
-Node: Packages169218
-Node: Dynamic Linking170098
-Node: Dump174777
-Node: Numeric178798
-Node: Arrays180614
-Node: Conventional Arrays180832
-Node: Uniform Array184371
-Node: Bit Vectors189183
-Node: Array Mapping190491
-Node: Records193184
-Node: I/O-Extensions194056
-Node: Posix Extensions202223
-Node: Unix Extensions211775
-Node: Sequence Comparison213676
-Node: Regular Expression Pattern Matching214006
-Node: Line Editing217984
-Node: Curses219345
-Node: Output Options Setting220280
-Node: Terminal Mode Setting222947
-Node: Window Manipulation226048
-Node: Output229533
-Node: Input233185
-Node: Curses Miscellany234229
-Node: Sockets235670
-Node: Host and Other Inquiries236033
-Node: Internet Addresses and Socket Names239174
-Node: Socket240747
-Node: SCMDB247964
-Node: The Implementation248202
-Node: Data Types248465
-Node: Immediates249294
-Node: Cells253676
-Node: Header Cells255794
-Node: Subr Cells259090
-Node: Ptob Cells261387
-Node: Smob Cells262956
-Node: Data Type Representations266179
-Node: Operations271058
-Node: Garbage Collection271652
-Node: Marking Cells272285
-Node: Sweeping the Heap274406
-Node: Memory Management for Environments275368
-Node: Signals279937
-Node: C Macros281498
-Node: Changing Scm282635
-Node: Defining Subrs287099
-Node: Defining Smobs288959
-Node: Defining Ptobs292016
-Node: Allocating memory293205
-Node: Embedding SCM295535
-Node: Callbacks303249
-Node: Type Conversions305070
-Node: Continuations309119
-Node: Evaluation313357
-Node: Program Self-Knowledge318540
-Node: File-System Habitat318794
-Node: Executable Pathname322407
-Node: Script Support324045
-Node: Improvements To Make325380
-Node: VMS Dynamic Linking327598
-Node: Index332311
+Node: Top787
+Node: Overview1763
+Node: SCM Features2252
+Node: SCM Authors4331
+Node: Copying5313
+Node: The SCM License5781
+Node: SIOD copyright6638
+Node: GNU Free Documentation License8113
+Node: Bibliography33332
+Node: Installing SCM35291
+Node: Distributions36220
+Node: GNU configure and make37940
+Node: Making scmlit41863
+Node: Makefile targets45340
+Node: Building SCM50878
+Node: Invoking Build51664
+Node: Build Options59463
+Node: Compiling and Linking Custom Files73167
+Node: Saving Executable Images75246
+Node: Installation78349
+Node: Troubleshooting and Testing79366
+Node: Problems Compiling80075
+Node: Problems Linking81937
+Node: Testing82415
+Node: Problems Starting85737
+Node: Problems Running88308
+Node: Reporting Problems90206
+Node: Operational Features91356
+Node: Invoking SCM91835
+Node: SCM Options93638
+Node: Invocation Examples98191
+Node: SCM Variables99234
+Node: SCM Session100797
+Node: Editing Scheme Code102888
+Node: Debugging Scheme Code104989
+Node: Debugging Continuations109289
+Node: Errors111932
+Node: Memoized Expressions116333
+Node: Internal State118780
+Node: Scripting122329
+Node: Unix Scheme Scripts122716
+Node: MS-DOS Compatible Scripts125831
+Node: Unix Shell Scripts127774
+Node: The Language129998
+Node: Standards Compliance130703
+Node: Storage133209
+Node: Time135772
+Node: Interrupts136883
+Node: Process Synchronization140599
+Node: Files and Ports142211
+Node: Opening and Closing142635
+Node: Port Properties145218
+Node: Port Redirection148438
+Node: Soft Ports150013
+Node: Eval and Load151878
+Node: Line Numbers153377
+Node: Lexical Conventions155883
+Node: Common-Lisp Read Syntax156228
+Node: Load Syntax158298
+Node: Documentation and Comments159001
+Node: Modifying Read Syntax160308
+Node: Syntax162114
+Node: Define and Set163101
+Node: Defmacro166718
+Node: Syntax-Rules167881
+Node: Macro Primitives169770
+Node: Environment Frames171492
+Node: Syntactic Hooks for Hygienic Macros173995
+Node: Packages181052
+Node: Dynamic Linking182015
+Node: Dump186777
+Node: Numeric190881
+Node: Arrays194082
+Node: Conventional Arrays194383
+Node: Uniform Array197961
+Node: Bit Vectors202856
+Node: Array Mapping204367
+Node: Records207143
+Node: I/O-Extensions208098
+Node: Posix Extensions217468
+Node: Unix Extensions227103
+Node: Sequence Comparison229087
+Node: Regular Expression Pattern Matching229500
+Node: Line Editing233561
+Node: Curses235040
+Node: Output Options Setting236058
+Node: Terminal Mode Setting238808
+Node: Window Manipulation241992
+Node: Output245560
+Node: Input249295
+Node: Curses Miscellany250422
+Node: Sockets251946
+Node: Host and Other Inquiries252392
+Node: Internet Addresses and Socket Names255616
+Node: Socket257272
+Node: SCMDB264572
+Node: The Implementation264893
+Node: Data Types265239
+Node: Immediates266208
+Node: Cells270673
+Node: Header Cells272874
+Node: Subr Cells276253
+Node: Defining Subrs278637
+Node: Ptob Cells282896
+Node: Defining Ptobs284619
+Node: Smob Cells287023
+Node: Defining Smobs290385
+Node: Data Type Representations296259
+Node: Operations301434
+Node: Garbage Collection302152
+Node: Marking Cells302868
+Node: Sweeping the Heap305072
+Node: Memory Management for Environments306117
+Node: Dynamic Linking Support310785
+Node: Configure Module Catalog313971
+Node: Automatic C Preprocessor Definitions317959
+Node: Signals325611
+Node: C Macros327323
+Node: Changing Scm328608
+Node: Allocating memory333219
+Node: Embedding SCM335630
+Node: Callbacks343422
+Node: Type Conversions345326
+Node: Continuations349458
+Node: Evaluation353779
+Node: Program Self-Knowledge359045
+Node: File-System Habitat359382
+Node: Executable Pathname363078
+Node: Script Support364799
+Node: Improvements To Make366217
+Node: VMS Dynamic Linking368518
+Node: Index373314

End Tag Table