diff -uNr a/gscm/README b/gscm/README --- a/gscm/README false +++ b/gscm/README 8720f7781977ed40fdd336e72f85d75bae99ee1cd913c358235d03671cf81e276ccc227904f7c601efb5e14547d122a07de7ecd26a58f85ccdc270ebac89a89b @@ -0,0 +1,55 @@ +About +----- + +This is Gales Scheme: a Scheme interpreter for Unix striving for simplicity, soundness, minimal artificial restrictions, and R5RS compliance with strict error checking. + +Written by Jacob Welsh for JWRD Computing. + +Prerequisites +------------- + +gcc, targetting an x86_64 POSIX environment. Linux and OpenBSD are known to work. Other ISAs are supportable in principle but there's presently some assembly math code lacking portable equivalent. + +Installation +------------ + +This software ignores some historical Unix conventions in favor of a simplified variant of Bernstein's /package scheme ( http://cr.yp.to/slashpackage.html ). Installation paths and command names are not configurable, which amounts to a global namespace claim, such that people and programs can count on finding components at known paths if they are to be found at all. User commands are symlinked into /usr/bin and will replace prior files in case of conflict; see "package/commands" for the list. + +You will need root privileges to install. + +1. Create the top-level /package directory if necessary and place the tree at its fully version-qualified path: + + mkdir -p /package + cp -r /YOUR/PATH/TO/gscm /package/gscm-0.40.6 + +2. Run the install script from the above directory: + + cd /package/gscm-0.40.6 + sh package/install + +3. Run the test suite if you like: + + sh package/check + +Known failures at present include, from tests/numbers.scm: + + (fail inexact-read-precision) : float formatting and parsing algorithms are imprecise. + (fail 1 1 expt13) : (expt 1 -1) returns an inexact (float) result when it could be exact. + +From tests/semantic-bad.scm: + + (fail unary-add-type bad-type) + (fail unary-mul-type bad-type) : the single-argument passthrough base case for + and * doesn't bother checking for numbers. + +To revert to this version after installing a different one, simply repeat step 2. + +Usage notes +----------- + +See "gscm -h" for CLI options. + +The main shortfalls with respect to R5RS are the macro language and advanced numeric types (rational and complex). Arbitrary precision (bignum) integer arithmetic is supported. + +A number of extensions are provided including system interface, sockets, and fixnum arithmetic; see doc/extensions.txt for (incomplete) details. + +Error recovery, debugging, and concurrency support are known weaknesses (no help from the standard here). diff -uNr a/gscm/doc/CHANGES b/gscm/doc/CHANGES --- a/gscm/doc/CHANGES a2f9ce5639f00109fef32124a595e66ae84730e12e95590829c54c84f63612eafea7cb1475185cb227477b2d86872f1e485716a9e08665c882169eb06088912e +++ b/gscm/doc/CHANGES cafdad5da765193b577cf00a3b6db06d690db1b48acad383330d2bbc6a3d4d215175083b1aa9f6230b633642527a5c4cde0f19b406390ceee355a2507c881505 @@ -766,3 +766,13 @@ Core: - Bugfix: the string-fill! and vector-fill! builtins didn't enforce immutability. (I hadn't originally implemented immutable subtypes, which are hinted at but not specified in R5RS; when adding them I put checks in the obvious "set!" family of mutators, but missed the bulk fill operations. This might allow subversion of downstream checks that depend on immutability, though the only example coming to mind is the structural checking of expression trees passed to EVAL, and the parts of those that matter are all pairs which aren't affected here.) + +November 2021: + +40.maint6. + +Packaging: +- Command symlink now installs to /usr/bin instead of /command, based on the view that the latter only complicates installation without actually solving any problem. The install script won't delete the old one if present, but it also won't create it e.g. for backward compatibility, as I figure it'll be easy enough to update any downstream references and I'd rather not perpetuate top-level filesystem clutter. At any rate I don't expect to change it again. + +Documentation: +- README moved from 'package' subdir to top level and massaged a bit. diff -uNr a/gscm/manifest b/gscm/manifest --- a/gscm/manifest b064224d5af55d27fcb85309f1b90851c79f8a0c0ca00fbbbe7d8de1c6164233da856b2cb7c5eddf596a361f19c6fb65acdc74dd9c3ad032bd4526b307468e8c +++ b/gscm/manifest c872822ff26ad91e1140762a25c317e1be2fa8331e75ec85f979a1a254e81f356f13b463c61318edba685a8c932227c997537cd2f344539db1292d81f8f7b7b0 @@ -1,3 +1,4 @@ 648626 gscm_subdir_genesis jfw The Gales Scheme interpreter. (Reground from gscm_genesis to follow the project subdir and manifest naming conventions.) 648629 gscm_fix_m_whitespace_package_install jfw The -m argument to set heap memory allocation was broken; the control characters allowed as whitespace by the lexer were inconsistent; package installation was broken in the case of an existing version. 654058 gscm_immutable_fill jfw The string-fill! and vector-fill! builtins failed to catch the errors of operating on immutable strings or vectors respectively. +711740 gscm_usrbin jfw Change command symlink from /command/gscm to /usr/bin/gscm (see CHANGES for rationale) and update README. diff -uNr a/gscm/package/README b/gscm/package/README --- a/gscm/package/README fc94f496057ee0ae318e9f1ba769f62c78878d4c5f14584c723dcdfc6f8671d4bb1a592c71b46088f0d13ba8471b8a40290d5828fc5187f8bdc058613d69c026 +++ b/gscm/package/README false @@ -1,51 +0,0 @@ -About ------ - -This is Gales Scheme: a Scheme interpreter for Unix striving for simplicity, soundness, minimal artificial restrictions, and R5RS compliance with strict error checking. - -Written by Jacob Welsh for JWRD Computing. - -Prerequisites -------------- - -gcc, targetting an x86_64 POSIX environment. Linux and OpenBSD are known to work. Other ISAs are supportable in principle but there's presently some assembly math code lacking portable equivalent. - -Installation ------------- - -This software sheds some historical Unix conventions in favor of Bernstein's /package scheme ( http://cr.yp.to/slashpackage.html ), which I find meshes fairly well with the ideas of V. If this is your first time using it, you may need to create the /package directory and add /command to your shell's PATH variable. - -1. Press or otherwise install the tree at the path: - - /package/gscm-0.40.5 - -The installation path is not configurable. This amounts to a claim on the global namespace, as command names always do. People and programs can count on finding components at known paths if they are to be found at all, as surely as with /bin/sh. This doesn't mean the files must physically exist under /package; for example, a symlink from there could ease working on the code as a non-root user. - -2. From the above directory, run (as root): - - sh package/install - -3. Run the test suite if you like: - - sh package/check - -Known failures at present include, from tests/numbers.scm: - - (fail inexact-read-precision) : float formatting and parsing algorithms are imprecise. - (fail 1 1 expt13) : (expt 1 -1) returns an inexact (float) result when it could be exact. - -From tests/semantic-bad.scm: - - (fail unary-add-type bad-type) - (fail unary-mul-type bad-type) : the single-argument passthrough base case for + and * doesn't bother checking for numbers. - -Usage notes ------------ - -See "gscm -h" for CLI options. - -The main shortfalls with respect to R5RS are the macro language and advanced numeric types (rational and complex). Arbitrary precision (bignum) integer arithmetic is supported. - -A number of extensions are provided including system interface, sockets, and fixnum arithmetic; see doc/extensions.txt for (incomplete) details. - -Error recovery, debugging, and concurrency support are known weaknesses (no help from the standard here). diff -uNr a/gscm/package/install b/gscm/package/install --- a/gscm/package/install 8e38ce417ad133b5c926b722f625c3ae8132b86512c00b5b31dcc6d55f004763047e3ec8bece2e22d563be467fa5779d2233d80734f9a0135a181d27d63192d4 +++ b/gscm/package/install 38938de1d08dcfcb833b6adf3f35af18f37ea1283eb08e02b53d19f2952155374543d326215e076e5a14a00215727e3f854b8d4f7283442f47feb94472974d48 @@ -2,24 +2,24 @@ set -e P=gscm -V=0.40.5 +V=0.40.6 cd /package/$P-$V # Versioned path duplicated in: -# package/README +# README # src/Makefile make -C src -echo "Creating symlink $P -> $P-$V" +echo "Creating symlink $P -> $P-$V..." rm -f $P ln -s $P-$V $P mv -f $P /package/ -echo 'Making command links in /command' -mkdir -p /command +echo 'Making command links in /usr/bin...' +mkdir -p /usr/bin for i in `cat package/commands` ; do - rm -f /command/$i'{new}' - ln -s /package/$P/command/$i /command/$i'{new}' - mv -f /command/$i'{new}' /command/$i + rm -f /usr/bin/$i'{new}' + ln -s /package/$P/command/$i /usr/bin/$i'{new}' + mv -f /usr/bin/$i'{new}' /usr/bin/$i done diff -uNr a/gscm/src/Makefile b/gscm/src/Makefile --- a/gscm/src/Makefile 5821c76e074f6537abcd14399660a56af8eefdc7d0041699de0603fe8697f69a19e985c6e20d5c396f520295ca792cc718c7065c7e8dcf68d1ef32cc12fa6253 +++ b/gscm/src/Makefile 34dfec1e7baa7169fa4508ccfc9f277a803e50aa1b7bcece5719c9d75cdefb33a716cb8e2c68bf169dfc1a178516183cfc25bef7941462cebe0837ea45244266 @@ -1,4 +1,4 @@ -PREFIX := /package/gscm-0.40.5 +PREFIX := /package/gscm-0.40.6 ASM_ARCH := x86_64 CFLAGS := -std=c99 -pedantic -Wall -Wextra -Winit-self -Wstrict-aliasing=1 -g -O2