XXX: This is for Mes. It might be possible to move forward with
broken signal semantics. We need to test to see if it is worth it
to fix this.
* gash/built-ins/trap.scm (main) [mes]: Do not call 'sigaction'.
* gash/shell.scm (%subshell) [mes]: Do not call 'restore-signals'.
* gash/lexer.scm (get-token->get-lexical-token): Allow arbitrary
procedure arguments that start with a 'port' argument.
(get-word-lexical-token): Accept a 'start' argument that and push it
onto the soft port character buffer.
(get-token): Use it to avoid ungetting more than one character on a
raw file port.
* gash/environment.scm (current-0-port): New procedure.
(current-1-port): New procedure.
(current-2-port): New procedure.
(fd->current-port): Use them instead of the standard parameters.
* gash/shell.scm (sh:with-redirects): Do not use 'parameterize' with
the non-parameter ports.
(plumb): Likewise.
* gash/compat.scm [mes] (call-with-input-file): New procedure.
[mes] (exact?): New procedure.
[mes] (set-program-arguments): New procedure.
[mes] (open-file): New procedure.
[mes] (false-if-exception): New syntax.
[mes] (hex-digits): New variable.
[mes] (char->hex-string): New procedure.
[mes] (make-random-file-name): New procedure.
[mes] (tmpfile): New procedure.
* tests/run-test-suite.in (run-test): If the test exits with an
unexpected status, print everything written to standard error to
make debugging easier.
* gash/arithmetic.scm (define-module): Import SRFI 14.
* gash/eval.scm (eval-arithmetic): New procedure.
(word->qword): Use it to abstract away the differences in 'eval'
between Guile and Mes.
Mes does not support it, and also the code is cleaner without it!
* gash/pattern.scm (pattern-match?, pattern-drop)
(pattern-drop-right): Avoid record matching.
* gash/compat.scm [mes] (string-concatenate-reverse): New procedure.
[mes] (char-pred): New procedure.
[mes] (string-any): New procedure.
[mes] (string-every): Allow character sets and characters as the
predicated (using 'char-pred').
* gash/compat.scm [mes] (X_OK): New variable.
[mes] (program-arguments): New procedure.
[mes] (delete-duplicates!): New procedure.
[mes] (flush-all-ports): New procedure.
[mes] (file-port?): New procedure.
[mes] (input-port?): New procedure.
[mes] (output-port?): New procedure.
[mes] (dup): Redefine to support an optional 'new' argument.
* gash/compat.scm [mes] (define-inlinable): New syntax.
[mes] (*fluid-accessor*): New variable.
[mes] (make-parameter): New procedure.
[mes] (parameterize): New syntax.
[mes] (set-port-line!): New procedure.
[mes] (string-every): New procedure.
* gash/compat/textual-ports.scm [mes] (<soft-input-port>): New
record type.
[mes] (make-soft-port): New procedure.
[mes] (push-soft-input-port-buffer!): New procedure.
[mes] (pop-soft-input-port-buffer!): New procedure.
[mes] (get-char): New procedure.
[mes] (unget-char): New procedure.
[mes] (lookahead-char): New procedure.
* gash/lexer.scm: Import '(gash compat)' and '(srfi srfi-14)'.