From 879f4fa041cfdefee655eb877f1a91f86a9c62b7 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Fri, 3 Mar 2017 00:56:40 -0800 Subject: New upstream version 5f2 --- scm.info | 3260 +++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 1818 insertions(+), 1442 deletions(-) mode change 100644 => 100755 scm.info (limited to 'scm.info') diff --git a/scm.info b/scm.info old mode 100644 new mode 100755 index f1a693a..ac9f9dd --- 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 ") 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 ") to build | + type (b*) to enter build command loop | + ;done loading build | + # | + > (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) | + # | + # | + # | + # | + ... | + | +Loading `pi.scm' in the distribution will enable you to compute digits | +of pi. | + | + > (load "pi.scm") | + ;loading pi.scm | + ;done loading pi.scm | + # | + > (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 | + # | + | +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 in scmfig.h and Do so and recompile files. recompile scm. add 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) - # - # - # - # - ... - -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 - # - > (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 - # - -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 .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) => #  -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) => - # - (enclose-array '#3A(((a b c) (d e f)) ((1 2 3) (4 5 6))) 1 0) => - # +(enclose-array '#3A(((a b c) (d e f)) ((1 2 3) (4 5 6))) 1) => +# + +(enclose-array '#3A(((a b c) (d e f)) ((1 2 3) (4 5 6))) 1 0) => +# + -- 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 @@ -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 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 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 -- cgit v1.2.3