From d257dac0c6668ac1dfe3ca025abd52e597e2de15 Mon Sep 17 00:00:00 2001 From: Timothy Sample Date: Mon, 20 May 2019 14:12:16 -0400 Subject: [PATCH] Rewrite README. * README: Rewrite with more information. --- README | 73 ++++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 56 insertions(+), 17 deletions(-) diff --git a/README b/README index f2ce0f1..25bee3b 100644 --- a/README +++ b/README @@ -1,20 +1,59 @@ -This project aims to produce at least a POSIX compliant sh replacement -or even implement GNU bash. On top of that it also intends to make -scheme available for interactive and scripting application. The -approach also intends to allow capturing the intermediate scheme -representation of the "original" shell script to offer a migration -path away from [ba]sh. On top of this GNU make could similarly be -replaced, as make turns out to be fraught with limitations and -complexities. One of the features I personally desire is not be -forced to keep doing what was done in the past, i.e. once an object -file is produced, it does not have to be produced again as long as the -original is kept around. The orignal must be replaced when any of its -dependencies change (source, compiler options, linker, etc.) +Gash --- Guile As SHell +*********************** -I feel that the shell has been instrumental on my path to embracing -functional programming, however now I mostly experience that the -language itselfs folds on functional expression, pun intended. +Gash is a POSIX-compatible shell written in Guile Scheme. It provides +both the shell interface, as well as a Guile library for parsing shell +scripts. Gash is designed to bootstrap Bash as part of the Guix +bootstrap process. We are planning to develop Gash into a +general-purpose shell and tool for building interfaces between Scheme +and the shell. +It is still early days for Gash. At the moment, Gash is extremely +limited and extremely slow, so we cannot recommend using it as your +shell. It does its bootstrapping job, and the parser works well for +POSIX-compatible scripts, but that's about it. -* history flattened vs full, i.e. navigate interactively without - redundancy vs export as script +Installing +========== + +This package uses GNU Autotools for building and installing. For +details on how to configure, build, and install it, see the file named +'INSTALLING'. + +If you have GNU Guix, you can skip all that and install the package +by running: + + guix package -f guix.scm + +Gash is designed to work with Guile versions as early as 2.0.9. + +Normally, you should build Gash using 'configure' and 'make'. +However, it can be built with nothing but Guile. There is an example +of this in the file 'tests/bootstrap/bash-without-bash.scm'. + +Testing +======= + +Gash includes a number of unit and integration tests that can be run +using 'make check'. If you are using Guile 2.0.9, you will have to +make SRFI 64 available to run the unit tests. To do this, you can +copy 'module/srfi/srfi-64.scm' and the 'module/srfi/srfi-64' directory +from a newer version of Guile into a directory named 'srfi' in the +Gash source code directory. + +If you have GNU Guix, you can also run the following extra tests. + +The bootstrap test can be run using 'make check-bootstrap'. It builds +Gash using nothing but Guix's bootstrap Guile, then uses Gash to build +Bash using Guix's bootstrap toolchain. This test is designed to make +sure that Gash is suitable for bootstrapping. + +The specification tests can be run using 'make check-spec'. These +tests get copied and adapted from Oil , and +then run against Gash. + +Copying +======= + +Gash is free software released under the GNU GPLv3 (or later). See +'COPYING' for the full license. Enjoy!