./shells/guile-gash, POSIX-compatible shell written in Guile Scheme

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 0.3.0, Package name: guile-gash-0.3.0, Maintainer: nikita

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. There are plans to develop Gash into a
general-purpose shell and tool for building interfaces between Scheme
and the shell.

Features of the shell
* Sophisticated enough to be used to build Bash.
* Has a nice colorized prompt.
* Includes all of the POSIX-specified "special" built-ins except for
`times'.
* Includes about half of the POSIX-specified "regular" built-ins
(see `gash/built-ins.scm' for details).

Features of the programming interface
* Parses Shell scripts into an AST.
* Provides a rudimentary interface for writing Shell-like Scheme
scripts.


Required to run:
[lang/guile22]

Required to build:
[pkgtools/cwrappers]

Master sites:

Filesize: 326.935 KB

Version history: (Expand)


CVS history: (Expand)


   2022-03-19 10:39:10 by Nikita | Files touched by this commit (1)
Log message:
guile-gash: fix distinfo
   2022-03-14 16:33:46 by Nikita | Files touched by this commit (2)
Log message:
gash: Update to 0.3.0

Changelog:

Noteworthy changes in release 0.3.0 (2022-02-11)
================================================

New features

  - Arithmetic expansion.
  - Simple asynchronous commands.
  - A language specification is now provided, allowing you to use the
    evaluator from the Guile REPL by typing ",L sh".
  - Redirects now honor the 'noclobber' option.
  - The 'wait' built-in.
  - The 'umask' built-in can now display the current umask.

Bug fixes

  - An empty command will now reset the status.
  - The 'read-sh' procedure now reads from 'current-input-port' by
    default (before it used 'current-output-port').

Miscellaneous improvements

  - Various performance improvements.
  - Word expansion has been split into two steps, paving the way for a
    compiler.
  - Guile 3.0 is now explicitly supported.
   2021-12-17 14:26:23 by Nikita | Files touched by this commit (4)
Log message:
shells/guile-gash: Update to 0.2.0

ChangeLog

2019-12-16  Timothy Sample  <samplet@ngyro.com>

	Update the NEWS file.

	NEWS: Update for release 0.2.0.

2019-12-16  Timothy Sample  <samplet@ngyro.com>

	Make the bootstrap test work with current Guix.

	* tests/bootstrap/bash-without-bash.scm (%boot0-inputs): Call the
	upstream '%boot0-inputs' to get the list of packages.

2019-12-10  Timothy Sample  <samplet@ngyro.com>

	Generate 'version.texi' reproducibly.

	* Makefile.am ($(srcdir)/doc/version.texi): New rule (overriding one
	provided by Automake).

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Add janneke to the ChangeLog copyright notice.

2019-12-09  Jan Nieuwenhuizen  <janneke@gnu.org>
	    Timothy Sample  <samplet@ngyro.com>

	Allow 'make dist' in a Git worktree.

	* Makefile.am (dist-hook, gen-ChangeLog): Test for mere existence of
	.git instead of asserting a directory.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Generate the ChangeLog reproducibly.

	* build-aux/gitlog-to-changelog-repro.patch: New file.
	* Makefile.am (EXTRA_DIST): Add it.
	(build-aux/gitlog-to-changelog-repro): New rule.
	(gen-ChangeLog): Use 'gitlog-to-changelog-repro'.
	(DISTCLEANFILES): Add 'build-aux/gitlog-to-changelog-repro'.

2019-12-09  Jan Nieuwenhuizen  <janneke@gnu.org>
	    Timothy Sample  <samplet@ngyro.com>

	Generate reproducible source tarballs.

	* Makefile.am (dist-hook): Generate a '.tarball-timestamp' file.
	(GZIP_ENV): Override, adding '--no-name'.
	(am__tar): Override, adding flags to create reproducible source
	tarballs.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Allow running 'make dist' from extracted tarball.

	* Makefile (dist-hook): Check for '.git' before generating
	'.tarball-manifest'.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Generate ChangeLog from Git.

	* ChangeLog: Update Git log URL and add a copyright notice.
	* Makefile.am (gen-ChangeLog): Use 'gitlog-to-changelog' to generate
	the ChangeLog.

2019-12-09  Jan Nieuwenhuizen  <janneke@gnu.org>

	gash compat textual-ports: Add put-char.

	* gash/compat/textual-ports.scm: Add put-char.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Initialize the current locale on Guile 2.0.

	* gash/gash.scm: Initialize the current locale on Guile 2.0.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Allow one-armed 'if-guile-version-below'.

	* gash/compat.scm: Allow one-armed 'if-guile-version-below' syntax and
	use it to simplify the conditional definitions throughout.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Use bindings with regular built-ins.

	* gash/shell.scm (sh:exec-let): Save and set variables according to
	'bindings' before executing a regular built-in.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Reap every process in a pipeline.

	* gash/shell.scm (waitpid/any): New procedure.
	(sh:pipeline): Use it to reap every process spawned while executing a
	pipeline.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Do not leak ports into pipeline processes.

	* gash/shell.scm (swap-and-shift-pairs): Remove procedure.
	(make-pipes): Remove procedure.
	(plumb): Accept another port as an argument and close it when setting
	up the child process.
	(sh:pipeline): Do not use 'make-pipes' to create all the pipe ports
	upfront, but rather create them as needed and give them directly to
	'plumb'.

2019-12-09  Jan Nieuwenhuizen  <janneke@gnu.org>
	    Timothy Sample  <samplet@ngyro.com>

	Test executing redirect-created files immediately.

	* tests/redirects.org (Files opened for redirect can be executed
	immediately): New test.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Close ports opened for redirects.

	* gash/shell.scm (redir->parameter+port): Rename this...
	(process-redirect): ...to this, and make it return a list with the
	third element being a boolean indicating if the port was opened by us.
	(sh:with-redirects): Close ports when the new boolean is set.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Enable 'glob' specification test

	* tests/spec/Makefile.am (TESTS): Add 'glob'.
	* tests/spec/oil.scm: Patch one of its tests and filter out eleven
	others.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Respect the 'noglob' option.

	* gash/word.scm (expand-pathnames): Do not expand pathnames if the
	'noglob' option is set.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Fix pathname expansion.

	The old implementation had several bugs, prompting this complete
	rewrite.

	* gash/compat/srfi-43.scm (vector-empty?): New procedure.
	* gash/pattern.scm (pattern-null?): New procedure.
	* gash/word.scm (qword->pattern-string): New procedure.
	(qword->pattern): Rewrite using 'qword->pattern-string'.
	(find-files): New procedure.
	(expand-pathnames): Rewrite using 'find-files' and add a docstring.
	* tests/unit/word.scm: Add tests.
	(mock): New syntax.
	(make-pure-scandir): New procedure.
	(with-mocked-files): New syntax.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Simplify the 'pattern' data structure.

	* gash/pattern.scm (<pattern>): Remove the 'start-anchored?' and
	'end-anchored?' fields.
	(parse-pattern): Replace the fields with empty parts at the start or
	end of the parts list.
	(pattern-plain?): Instead of checking the fields, just check the
	number of parts.
	(pattern-match?, pattern-drop, pattern-drop-right): Do not worry about
	the fields, because the empty parts ensure the right thing happens.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Swap semantics of ':+' and '+'.

	These were mixed up, with ':+' behaving like '+' and vice versa.

	* gash/word.scm (word->qword): Swap implementations of '<sh-ref-and>'
	and '<sh-ref-and*>'.
	* tests/unit/word.scm: Swap tests.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Enable 'command-sub' specification test

	* tests/spec/Makefile.am (TESTS): Add 'command-sub'.
	* tests/spec/oil.scm: Patch four of its tests and filter out another.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Fix case statements in '$(...)' substitutions.

	* gash/parser.scm (make-parser): Fix the 'pattern!' rule so that it
	gets reduced before reading an 'RPAREN' token.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Add test for backquoted commands in heredocs.

	* tests/unit/parser.scm: Add test.

2019-12-09  Timothy Sample  <samplet@ngyro.com>

	Correctly parse double-quoted backquoted commands.

	* gash/lexer.scm (read-backquoted-command): Make the default procedure
	accept a 'quoted?' keyword.
	(get-backquoted-command): Accept a 'quoted?' keyword and pass it on to
	'read-backquoted-command'.
	(get-expansion): Accept a 'quoted?' keyword and pass it on to
	'get-backquoted-command'.
	(get-double-quotation): Set the 'quoted?' keyword when calling
	'get-expansion'.
	* tests/unit/lexer.scm: Add tests.
	* gash/parser.scm (call-with-backquoted-input-port): Accept a
	'quoted?' keyword which, if set, adds the double quote character to
	the set of escapable characters.
	(read-sh/backquoted): Accept a 'quoted?' keyword and pass it on to
	'call-with-backquoted-input-port'.
	* tests/unit/parser.scm: Add tests.

2019-12-08  Timothy Sample  <samplet@ngyro.com>

	Implement asserting references.

	* gash/word.scm (word->qword): Add an implementation for the
	'<sh-ref-assert>' and '<sh-ref-assert*>' cases.
	* tests/variable-operators.org: New file.
	* Makefile.am (FULL_TESTS): Add it.

2019-12-08  Timothy Sample  <samplet@ngyro.com>

	Reset exit status on assignment.

	* gash/eval.scm (eval-word): Add 'on-command-substitution' keyword.
	(eval-sh): On '<sh-set!>' reset the exit status unless a command
	substitution has occurred.
	* tests/assignments.org: Add tests.

2019-12-08  Timothy Sample  <samplet@ngyro.com>

	Initialize the 'IFS' variable.

	* gash/environment.scm (initial-variables): Initialize 'IFS'.

2019-12-08  Timothy Sample  <samplet@ngyro.com>

	Only throw for specific special built-in errors.

	* gash/shell.scm (sh:exec-let): Do not throw on special built-in
	errors.
	* gash/built-ins/break.scm (main),
	gash/built-ins/continue.scm (main),
	gash/built-ins/return.scm (main),
	gash/built-ins/shift.scm (main): Throw on error.

2019-12-08  Timothy Sample  <samplet@ngyro.com>

	Make 'trap' handle a numerical action.

	* gash/built-ins/utils.scm (string->nonnegative-integer): New procedure.
	* gash/built-ins/trap.scm (main): If the first argument is a number,
	treat it as if the action were '-'.

2019-12-08  Timothy Sample  <samplet@ngyro.com>

	Fix 'string->positive-integer' docstring typo.

	* gash/built-ins/utils.scm (string->positive-integer): Fix a typo in
	the docstring.

2019-12-08  Timothy Sample  <samplet@ngyro.com>

	Make 'read' handle logical lines.

	* gash/built-ins/read.scm (read-logical-line): New procedure.
	(main): Use it unless given the '-r' option.
	* tests/read.org: Add tests.

2019-12-08  Timothy Sample  <samplet@ngyro.com>

	Make 'read' handle input field splitting.

	* gash/built-ins/read.scm (split-fields): New procedure.
	(main): Use it to split the input into fields and assign each field to
	its corresponding variable.
	* tests/read.org: New file.
	* Makefile.am (FULL_TESTS): Add it.

2019-11-24  Timothy Sample  <samplet@ngyro.com>

	Handle nested lists when removing quotes.

	* gash/word.scm (remove-quotes): Handle nested lists.
	(split-fields) <wedge-apart-quote>: Likewise.
	* tests/unit/word.scm: Add test.

2019-11-24  Timothy Sample  <samplet@ngyro.com>

	Use temporary assignments when calling functions.

	* gash/environment.scm (save-variables-excursion): New procedure.
	* gash/shell.scm (sh:exec-let): Use it to set up temporary assignments
	during the extent of a function.
	* tests/temporary-assignments.org: New file.
	* Makefile.am (TESTS): Add it.

2019-11-24  Timothy Sample  <samplet@ngyro.com>

	Delay bracket expression errors in patterns.

	* gash/pattern.scm (parse-matching-bracket-expression): Do not
	report errors until a full bracket expression has been parsed.
	* tests/unit/pattern.scm: Add test.

2019-11-24  Timothy Sample  <samplet@ngyro.com>

	Use '(gash compat)' in '(gash built-ins utils)'.

	This was omitted from ffe9fc1f47306dd526a5443689c129859e72d7ae.

	* gash/built-ins/utils.scm: Use the '(gash compat)' module.

2019-11-24  Timothy Sample  <samplet@ngyro.com>

	Enable 'var-op-strip' specification test

	* tests/spec/Makefile.am (TESTS): Add 'var-op-strip'.
	* tests/spec/oil.scm: Patch two of its tests and filter out four
	others.

2019-11-24  Timothy Sample  <samplet@ngyro.com>

	Use UTF-8 when processing specification tests.

	* tests/spec/oil.scm: Set the encoding on the input and output ports
	to UTF-8.

2019-11-24  Timothy Sample  <samplet@ngyro.com>

	Implement pattern-based variable operators.

	This commit adds an implementation for the '#', '##', '%', and '%%'
	variable operators.

	* gash/word.scm (word->qword): Add an implementation for the
	'<sh-ref-except-min>', '<sh-ref-except-max>', '<sh-ref-skip-min>',
	and '<sh-ref-skip-max>' cases.

2019-11-24  Timothy Sample  <samplet@ngyro.com>

	Fix docstring for 'parameter-ref'.

	* gash/word.scm (parameter-ref): Fix docstring.

2019-11-24  Timothy Sample  <samplet@ngyro.com>

	Remove tests for the '/' variable operator.

	This is a Bash-specific feature, which means that it is out of scope
	for now.

	* tests/variable-patterns.org (slash, slash-string,
	slash-string-slash): Delete tests.

2019-11-24  Timothy Sample  <samplet@ngyro.com>

	Add pattern dropping procedures.

	* gash/pattern.scm (string-contains-part-right): New procedure.
	(pattern-drop): New procedure.
	(pattern-drop-right): New procedure.
	* tests/unit/pattern.scm: Test the dropping procedures.

2019-11-24  Timothy Sample  <samplet@ngyro.com>

	Use a record type for patterns.

	* gash/compat/srfi-43.scm: New file.
	* Makefile.am: Add it.
	* gash/pattern.scm (<pattern>): New record type.
	(parse-part): New procedure.
	(parse-pattern): Return a '<pattern>'.
	(pattern-plain?, pattern-match?): Accept a '<pattern>'.
	(string-starts-with-part, string-ends-with-part,
	string-contains-part): Treat 'part' as a vector.

2019-11-24  Timothy Sample  <samplet@ngyro.com>

	Add tests for 'pattern-plain?'.

	* tests/unit/pattern.scm: Add tests for 'pattern-plain?'.

2019-11-24  Timothy Sample  <samplet@ngyro.com>

	Do not test Bash with the specification tests.

	* tests/spec/oil.scm: Disable testing Bash in 'spec.sh'.

2019-08-20  Timothy Sample  <samplet@ngyro.com>

	Remove extra import from 'run-test-suite'.

	The '(ice-9 textual-ports)' module is not needed, and using it breaks
	the test suite on Guile 2.0.

	* tests/run-test-suite.in: Do not use '(ice-9 textual-ports)'.

2019-08-03  Timothy Sample  <samplet@ngyro.com>

	Add missing '(gash compat)' import.

	This was omitted from ffe9fc1f47306dd526a5443689c129859e72d7ae.

	* gash/shell.scm: Use the '(gash compat)' module.

2019-08-01  Timothy Sample  <samplet@ngyro.com>

	Use the 'site' Guile directories when installing.

	Thanks to Ludovic Court├Ęs <ludo@gnu.org> for patching this in the Guix
	package definition.

	* build-aux/guile.am (moddir, ccachedir): Use the 'site' directories.

2019-08-01  Timothy Sample  <samplet@ngyro.com>

	Use 'sh:exit' for 'errexit'.

	* gash/shell.scm (errexit): Exit using 'sh:exit'.
	* tests/unit/shell.scm: Make sure exit handlers are called on
	'errexit'.

2019-08-01  Timothy Sample  <samplet@ngyro.com>

	Do not use 'with-continuation-barrier'.

	It turns out that 'with-continuation-barrier' allows delimited
	continuations (i.e., prompts) to get through.

	* gash/shell.scm (%subshell): Replace 'with-continuation-barrier' with
	'dynamic-wind', making sure to preserve exit statuses that were leaked
	through before.
	* tests/unit/shell.scm (call-with-temporary-directory): Replace
	'with-continuation-barrier' with 'dynamic-wind'.
	* tests/spec/oil.scm: Enable previously failing tests.

2019-08-01  Timothy Sample  <samplet@ngyro.com>

	Fix top-level 'break', 'continue', and 'return'.

	* gash/environment.scm (sh:break, sh:continue, sh:return): Wrap
	'abort-to-prompt' with 'false-if-exception'.
	* gash/built-ins/break.scm (main): Print warning and continue if
	'sh:break' returns.
	* gash/built-ins/continue.scm (main): Likewise, but for 'sh:continue'.
	* gash/built-ins/return.scm (main): Likewise, but for 'sh:return'.
	* tests/functions.org (Top-level return): New test.
	* tests/spec/oil.scm: Enable previously failing test.

2019-06-15  Timothy Sample  <samplet@ngyro.com>

	Handle 'return' errors.

	* gash/built-ins/utils.scm (string->exit-status): New procedure.
	* gash/built-ins/return.scm (main): Use it to simplify argument
	checking; check for too many arguments; and print messages on
	errors.
	* tests/functions.org (Too many arguments to return): New test.

2019-06-15  Timothy Sample  <samplet@ngyro.com>

	Handle 'break' and 'continue' errors.

	* gash/built-ins/utils.scm (string->positive-integer): New function.
	* gash/built-ins/break.scm (main): Use it to simplify argument
	checking; check for too many arguments; and print messages on errors.
	* gash/built-ins/continue.scm (main): Ditto.
	* gash/shell.scm (sh:exec-let): Throw an error if a special built-in
	fails.
	* tests/spec/oil.scm: Enable and adjust previously failing tests.

2019-06-15  Timothy Sample  <samplet@ngyro.com>

	Aggregate tests into test suites.

	This is a big change, but it is conceptually quite simple.  In the old
	system, the tests were specified each by multiple files ('.sh', '.exit',
	'.stdout', and '.stderr'), and run with the 'test.sh' script.  In the
	new system there are multiple tests per file ('.org') and these test
	suite files are run with the 'tests/run-test-suite' script.

	* tests/00-exit-0.sh,
	tests/00-exit-1.exit,
	tests/00-exit-1.sh,
	tests/00-exit-2.exit,
	tests/00-exit-2.sh,
	tests/00-exit-error.exit,
	tests/00-exit-error.sh,
	tests/00-exit-var.exit,
	tests/00-exit-var.sh,
	tests/00-exit.sh: Delete files, moving their contents...
	* tests/exiting.org: ...here.
	* tests/01-script-arg-0.sh,
	tests/01-script-arg-length.sh,
	tests/01-script-arg-length.stdout,
	tests/01-script-arg-list.sh,
	tests/01-script-arg-list.stdout,
	tests/01-script-backslash-space.sh,
	tests/01-script-backslash-twice.exit,
	tests/01-script-backslash-twice.sh,
	tests/01-script-backslash.exit,
	tests/01-script-backslash.sh,
	tests/01-script-newline.exit,
	tests/01-script-newline.sh,
	tests/01-script-semi.exit,
	tests/01-script-semi.sh,
	tests/01-script-shift.sh,
	tests/01-script-shift.stdout: Delete files, moving their contents...
	* tests/arguments.org: ...here.
	* tests/03-echo-brace.sh,
	tests/03-echo-brace.stdout,
	tests/03-echo-doublequotes.sh,
	tests/03-echo-doublequotes.stdout,
	tests/03-echo-escaped-doublequotes.sh,
	tests/03-echo-escaped-doublequotes.stdout,
	tests/03-echo-nesting.sh,
	tests/03-echo-nesting.stdout,
	tests/03-echo-quoted-doublequotes.sh,
	tests/03-echo-quoted-doublequotes.stdout,
	tests/03-echo.sh: Delete files, moving their contents...
	* tests/words.org: ...here.
	* tests/04-echo-equal.sh,
	tests/04-echo-equal.stdout,
	tests/04-echo-var.sh,
	tests/04-echo-word-at-word.sh,
	tests/04-echo-word-at-word.stdout,
	tests/04-echo-word-at.sh,
	tests/04-echo-word-at.stdout: Delete files, moving their contents...
	* tests/variable-words.org: ...here.
	* tests/05-assignment-backtick.sh,
	tests/05-assignment-backtick.stdout,
	tests/05-assignment-double-quote.sh,
	tests/05-assignment-doublequoted-doublequotes.sh,
	tests/05-assignment-doublequoted-doublequotes.stdout,
	tests/05-assignment-echo.sh,
	tests/05-assignment-echo.stdout,
	tests/05-assignment-empty.sh,
	tests/05-assignment-empty.stdout,
	tests/05-assignment-singlequote.sh,
	tests/05-assignment-variable-word.sh,
	tests/05-assignment-variable-word.stdout,
	tests/05-assignment-word-variable.sh,
	tests/05-assignment-word-variable.stdout,
	tests/05-assignment.sh: Delete files, moving their contents...
	* tests/assignments.org: ...here.
	* tests/06-command-compound-word.sh,
	tests/06-command-compound-word.stdout,
	tests/06-compound-word.sh,
	tests/06-compound-word.stdout: Delete files, moving their contents...
	* tests/compound-words.org: ...here.
	* tests/07-variable-not-or.sh,
	tests/07-variable-not-or.stdout,
	tests/07-variable-or-doublequote.sh,
	tests/07-variable-or-doublequote.stdout,
	tests/07-variable-or-empty.sh,
	tests/07-variable-or-empty.stdout,
	tests/07-variable-or-slash.sh,
	tests/07-variable-or-variable.sh,
	tests/07-variable-or-variable.stdout,
	tests/07-variable-or.sh,
	tests/07-variable-or.stdout: Delete files, moving their contents...
	* tests/variable-or.org: ...here.
	* tests/08-variable-and.sh,
	tests/08-variable-and.stdout,
	tests/08-variable-not-and.sh,
	tests/08-variable-not-and.stdout: Delete files, moving their contents...
	* tests/variable-and.org: ...here.
	* tests/10-else-multiple.sh,
	tests/10-else.multiple.stdout,
	tests/10-if-bracket-false.sh,
	tests/10-if-bracket.sh,
	tests/10-if-elif.sh,
	tests/10-if-else.sh,
	tests/10-if-false.sh,
	tests/10-if-line.sh,
	tests/10-if-multiple.sh,
	tests/10-if-multiple.stdout,
	tests/10-if-redirect.sh,
	tests/10-if-test-false.sh,
	tests/10-if-test.sh,
	tests/10-if-word-variable.sh,
	tests/10-if.sh: Delete files, moving their contents...
	* tests/conditionals.org: ...here.
	* tests/11-for-done-subshell.sh,
	tests/11-for-done-subshell.stdout,
	tests/11-for-split-sequence.sh,
	tests/11-for-split-sequence.stdout,
	tests/11-for.sh,
	tests/11-for.stdout: Delete files, moving their contents...
	* tests/loops.org: ...here.
	* tests/20-and.exit,
	tests/20-and.sh,
	tests/20-exec.sh,
	tests/20-or.sh,
	tests/20-pipe-exit-0.sh,
	tests/20-pipe-exit-1.exit,
	tests/20-pipe-exit-1.sh,
	tests/20-pipe-sed-cat.sh,
	tests/20-pipe-sed-cat.stdout,
	tests/20-pipe-sed.sh,
	tests/20-pipe-sed.stdout,
	tests/20-semi.exit,
	tests/20-semi.sh: Delete files, moving their contents...
	* tests/pipes-and-booleans.org: ...here.
	* tests/30-for-substitution.sh,
	tests/30-for-substitution.stdout,
	tests/30-substitution-assignment-at.sh,
	tests/30-substitution-assignment-at.stdout,
	tests/30-substitution-assignment.sh,
	tests/30-substitution-assignment.stdout,
	tests/30-substitution-backtick.sh,
	tests/30-substitution-backtick.stdout,
	tests/30-substitution-redirect.sh,
	tests/30-substitution-redirect.stdout,
	tests/30-substitution-word.sh,
	tests/30-substitution-word.stdout,
	tests/30-substitution.sh,
	tests/30-substitution.stdout: Delete files, moving their contents...
	* tests/command-substitution.org: ...here.
	* tests/40-assignment-eval-echo.sh,
	tests/40-assignment-eval-echo.stdout,
	tests/40-eval-echo-variable.sh,
	tests/40-eval-echo-variable.stdout,
	tests/40-eval.sh,
	tests/40-eval.stdout: Delete files, moving their contents...
	* tests/eval.org: ...here.
	* tests/41-dot.sh,
	tests/41-dot.stdout: Delete files, moving their contents...
	* tests/dot.org: ...here.
	* tests/42-export-new.sh,
	tests/42-export-new.stdout,
	tests/42-sh-export-new.sh,
	tests/42-sh-export-new.stdout,
	tests/42-sh-export.sh,
	tests/42-sh-export.stdout,
	tests/42-sh.sh,
	tests/42-sh.stdout: Delete files, moving their contents...
	* tests/exporting.org: ...here.
	* tests/data/42-export-new.sh: New file (copied from
	'tests/42-export-new.sh').
	* tests/43-trap-subshell.sh,
	tests/43-trap-subshell.stdout: Delete files, moving their contents...
	* tests/signals.org: ...here.
	* tests/50-iohere-builtin.sh,
	tests/50-iohere.sh,
	tests/50-iohere.stdout,
	tests/50-redirect-append.sh,
	tests/50-redirect-append.stdout,
	tests/50-redirect-clobber.sh,
	tests/50-redirect-clobber.stdout,
	tests/50-redirect-in-out.sh,
	tests/50-redirect-in-out.stdout,
	tests/50-redirect-in.sh,
	tests/50-redirect-merge.sh,
	tests/50-redirect-merge.stdout,
	tests/50-redirect-pipe.sh,
	tests/50-redirect-pipe.stdout,
	tests/50-redirect-sed.sh,
	tests/50-redirect-sed.stdout,
	tests/50-redirect-space.sh,
	tests/50-redirect-space.stdout,
	tests/50-redirect.sh,
	tests/50-redirect.stdout: Delete files, moving their contents...
	* tests/redirects.org: ...here.
	* tests/60-function-at.sh,
	tests/60-function-at.stdout,
	tests/60-function.sh,
	tests/60-function.stdout,
	tests/60-subst.sh: Delete files, moving their contents...
	* tests/functions.org: ...here.
	* tests/70-hash-hash.sh,
	tests/70-hash-hash.stdout,
	tests/70-hash.sh,
	tests/70-hash.stdout,
	tests/70-percent-percent.sh,
	tests/70-percent-percent.stdout,
	tests/70-percent-space.sh,
	tests/70-percent-space.stdout,
	tests/70-percent.sh,
	tests/70-percent.stdout,
	tests/70-slash-string-slash.sh,
	tests/70-slash-string.sh,
	tests/70-slash-string.stdout,
	tests/70-slash.sh,
	tests/70-slash.stdout: Delete files, moving their contents...
	* tests/variable-patterns.org: ...here.
	* tests/100-bracket-file.sh,
	tests/100-cd-foo.exit,
	tests/100-cd-foo.sh,
	tests/100-cd.sh,
	tests/100-cd.stdout,
	tests/100-test-false.sh,
	tests/100-test-file.sh,
	tests/100-test.sh: Delete files.
	* tests/README: Move this...
	* tests/data/README: ...here and adapt to the new directory.
	* test.sh: Delete file.
	* tests/run-test-suite.in: New file.
	* configure.ac: Configure it.
	* Makefile.am (TEST_EXTENSIONS): Replace '.sh' with '.org'.
	(SH_LOG_COMPILER): Delete variable.
	(ORG_LOG_COMPILER): New variable.
	(FULL_TESTS, XFAIL_TESTS): Replace '.sh' tests with '.org' tests.
	(BROKEN_TESTS): Delete variable.
	(TEST_DATA_FILES): Remove '.exit' and '.stdout' files; add
	tests/data/42-export-new.sh.
	(EXTRA_DIST): Add tests/data/README; remove tests/README,
	BROKEN_TESTS, and test.sh.
	* .gitignore: Adjust accordingly.

2019-06-07  Timothy Sample  <samplet@ngyro.com>

	Update the specification tests.

	* tests/spec/oil.scm: Update to the latest commit and filter out some
	new failing tests.

2019-06-04  Timothy Sample  <samplet@ngyro.com>

	Fix a typo in NEWS.

	* NEWS: Fix a typo.
   2021-10-26 13:18:40 by Nia Alarie | Files touched by this commit (38)
Log message:
shells: Replace RMD160 checksums with BLAKE2s checksums

All checksums have been double-checked against existing RMD160 and
SHA512 hashes
   2021-10-07 16:56:13 by Nia Alarie | Files touched by this commit (38)
Log message:
shells: Remove SHA1 hashes for distfiles
   2020-04-28 13:46:30 by Nikita | Files touched by this commit (29)
Log message:
adjust maintainer to my new login
   2019-11-13 11:04:19 by ng0 | Files touched by this commit (4)
Log message:
Add shells/guile-gash version 0.1

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. There are plans to develop Gash into a
general-purpose shell and tool for building interfaces between Scheme
and the shell.

Features of the shell
* Sophisticated enough to be used to build Bash.
* Has a nice colorized prompt.
* Includes all of the POSIX-specified "special" built-ins except for
  `times'.
* Includes about half of the POSIX-specified "regular" built-ins
  (see `gash/built-ins.scm' for details).

Features of the programming interface
* Parses Shell scripts into an AST.
* Provides a rudimentary interface for writing Shell-like Scheme
  scripts.