Go to file
Timothy Sample bbcb78de14 Use built-in compress without an external file.
When the system does not provide a compress executable, we use our
own.  Before, this was done by installing an executable named
'compress' along with Gash.  This commit allows the compressed-port
functions to use our built-in compress without needing an external
executable.

* gash/config.scm.in (exec-internal-compress): New function.
(%compress): Fall back to it on systems without compress.
* gash/guix-utils.scm (filtered-port, filtered-output-port): When the
given command list begins with a procedure, apply it to its arguments
instead of using execl.
2019-01-12 11:42:26 -05:00
bin builtins: Split out into gash/commands/. 2018-11-03 08:02:49 +01:00
build-aux Merge branch 'gash' 2018-12-13 13:42:21 -05:00
doc Merge branch 'gash' 2018-12-13 13:42:21 -05:00
gash Use built-in compress without an external file. 2019-01-12 11:42:26 -05:00
geesh Add support for $$ 2018-12-05 16:23:51 -05:00
scripts Set search paths explicitly in the geesh script 2018-12-05 16:08:09 -05:00
test test: Use script file for sed basename test. 2018-12-11 13:13:46 -05:00
tests Reorganize tests 2018-12-12 14:23:09 -05:00
todo guix: resurrect package build. 2018-07-10 00:11:24 +02:00
tools Initial commit 2018-01-31 14:52:05 -05:00
.dir-locals.el Merge branch 'gash' 2018-12-13 13:42:21 -05:00
.gitignore Merge branch 'gash' 2018-12-13 13:42:21 -05:00
07-variable-or-slash.stdout test: add failing 07-variable-or-slash.sh. 2018-11-10 11:55:50 +01:00
70-slash-string-slash.stdout Support ${ / / }, ${ / }. 2018-11-10 11:30:55 +01:00
AUTHORS builtins: Split out into gash/commands/. 2018-11-03 08:02:49 +01:00
COPYING Initial commit 2018-01-31 14:52:05 -05:00
HACKING doc: Some updates. 2018-12-08 08:36:36 +01:00
INSTALL doc: Some updates. 2018-12-08 08:36:36 +01:00
Makefile.am Reorganize tests 2018-12-12 14:23:09 -05:00
README Initial commit 2018-01-31 14:52:05 -05:00
TODO WIP: marginal 2018-07-14 12:34:42 +02:00
bootstrap Initial commit 2018-01-31 14:52:05 -05:00
check.sh test: Rename sed dirname test to basename. 2018-12-11 13:13:46 -05:00
configure tr: New builtin. 2018-12-02 09:03:02 +01:00
configure.ac Reorganize tests 2018-12-12 14:23:09 -05:00
gash.guix.scm Merge branch 'gash' 2018-12-13 13:42:21 -05:00
guix.scm Remove testing leftovers in the Guix package 2018-12-12 13:11:16 -05:00
makefile check-parse: new target. 5 parse failures. 2018-11-12 10:52:39 +01:00
pre-inst-env.in Initial commit 2018-01-31 14:52:05 -05:00
sh.bnf PEG shell grammar. 2017-12-07 23:07:27 +01:00
test.sh 01-script-$0.sh, 01-script-$@.sh: add test and fix. 2018-11-24 12:25:24 +01:00

README

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.)

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.


* history flattened vs full, i.e. navigate interactively without
  redundancy vs export as script