Commit Graph

700 Commits

Author SHA1 Message Date
Timothy Sample 23280d6f11 wip! compat: Remove upstreamed shims. 2023-08-13 00:38:05 -06:00
Timothy Sample c433382563 compat: Improve 'string-any' and 'string-every'.
* gash/compat.scm [mes] (string-every): Add optional 'start' and
'end' arguments.
[mes] (string-any): Likewise.
2023-08-13 00:38:05 -06:00
Timothy Sample ca36e71447 compat: Allow binary 'open-file' on Mes.
* gash/compat.scm [mes] (open-file): Allow "rb" and "wb" modes.
2023-08-13 00:38:05 -06:00
Timothy Sample 334aa0c0ff compat: Remove stuff that is now in Mes.
* gash/compat.scm [mes] (string-concatenate-reverse): Remove
procedure.
[mes] (call-with-input-file): Remove procedure.
[mes] (call-with-input-string): Remove procedure.
2023-08-13 00:38:05 -06:00
Timothy Sample 674ded5766 wip! tests: Port to Mes. 2023-08-13 00:38:05 -06:00
Timothy Sample f514554aee xxx! Ignore signal stuff on Mes.
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'.
2023-02-08 14:29:54 -06:00
Timothy Sample 06dad4deba xxx! shell: Work around Mes' broken 'port?'.
XXX: The Guile version should not be changed.

* gash/shell.scm (process-redir): Wrap ports in a list so that they
can be distinguished from numbers.
2023-02-08 14:29:54 -06:00
Timothy Sample 9c5af49c81 gash: Catch shell errors on Mes.
* gash/gash.scm (main) [mes]: Catch shell errors.
2023-02-08 14:29:54 -06:00
Timothy Sample a1794de9f6 gash: Use a simple prompt on Mes.
* gash/gash.scm [mes] (prompt): Use plain ol' "$".
2023-02-08 14:29:54 -06:00
Timothy Sample b741e2a3e7 gash: Do not try readline on Mes.
* gash/gash.scm [mes]: Do not try to import '(ice-9 readline)'.
2023-02-08 14:29:54 -06:00
Timothy Sample ac4a84df54 gash: Remove unused imports.
* gash/gash.scm: Remove unused imports.
2023-02-08 14:29:54 -06:00
Timothy Sample eda8c1e4b4 word: Import 'compat' module.
* gash/word.scm: Import '(gash compat)'.
2023-02-08 14:29:54 -06:00
Timothy Sample 3b14c5cb2d eval: Use 'identity' instead of 'values'.
* gash/eval.scm (exps->thunk): Use 'identity' instead of 'values'.
2023-02-08 14:29:54 -06:00
Timothy Sample 864e51250b lexer: Avoid 'fold-right'.
* gash/lexer.scm (join-contiguous-strings): Use 'fold' and 'reverse'
instead of 'fold-right'.
2023-02-08 14:29:54 -06:00
Timothy Sample cfb4da73d0 lexer: Do not overflow the Mes character buffer.
* 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.
2023-02-08 14:29:54 -06:00
Timothy Sample ddb5c7ef36 compat: Fix parameter setting.
* gash/compat.scm [mes] (make-parameter): Add missing argument to
'fluid-set!' invocation.
2023-02-08 14:29:54 -06:00
Timothy Sample 00c794c9a6 compat: Add a 'usleep' shim for Mes.
* gash/compat.scm [mes] (usleep): New procedure.
2023-02-08 14:29:54 -06:00
Timothy Sample 88dfac30c3 built-ins: read: Port to Mes.
* gash/built-ins/read.scm (define-module): Import SRFI 14.
(right-pad): New procedure.
(main): Use it in place of a 'circular-list' trick.
2023-02-08 14:29:54 -06:00
Timothy Sample 7d713e0435 built-ins: eval: Import '(gash compat)'.
* gash/built-ins/eval.scm (define-module): Import '(gash compat)'.
2023-02-08 14:29:54 -06:00
Timothy Sample 13e60e1952 environment: Simplify a 'match' clause for Mes.
* gash/environment.scm (get-environ): Simplify the 'match' clause
for finding exported variables.
2023-02-08 14:29:54 -06:00
Timothy Sample 9b53a6b25b Workaround Mes' non-parameter standard ports.
* 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.
2023-02-08 14:29:44 -06:00
Timothy Sample 4b1aa935de word: Use sort with 'scandir' on Mes.
* gash/word.scm [mes]: Monkey patch 'scandir' to add sorting.
2023-02-08 14:29:13 -06:00
Timothy Sample 6c67d7b23d compat: More shims for Mes.
* 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.
2023-02-08 14:29:13 -06:00
Timothy Sample 4c04f1faa3 compat: Add 'sort' for Mes.
* gash/compat.scm [mes] (sort): New procedure.
2023-02-08 14:29:13 -06:00
Timothy Sample a087816b90 compat: Add 'get-string-all' for Mes.
* gash/compat/textual-ports.scm [mes] (get-string-all): New
procedure.
2023-02-08 14:29:13 -06:00
Timothy Sample c6d39caecc pattern: Adjust for Mes.
* gash/pattern.scm (substring->list): New procedure.
(character-range): Use it.
2023-02-08 14:29:13 -06:00
Timothy Sample b973b21cc7 tests: eval: Tweak a hexadecimal constant test.
* tests/unit/eval.scm: Switch the constant used in the hexadecimal
constant test to one that includes a letter digit.
2023-02-08 14:29:13 -06:00
Timothy Sample 3697ed5bf1 tests: Print errors if the status is wrong.
* 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.
2023-02-08 14:29:13 -06:00
Timothy Sample 1c398c263c tests: Check for abnormal exits.
* tests/run-test-suite.in (run-test): Check if the test exited
abnormally.
2023-02-08 14:29:13 -06:00
Timothy Sample b643ac2355 compat: New 'read-line' shim.
* gash/compat/rdelim.scm: New file.
* Makefile.am (SOURCES): Add it.
* gash/built-ins/read.scm: Use it.
* gash/lexer.scm: Likewise.
* gash/readline.scm: Likewise.
* gash/repl.scm: Likewise.
2023-02-08 14:29:13 -06:00
Timothy Sample 469cdb60fc compat: Add 'string-for-each' for Mes.
* gash/compat.scm [mes] (string-for-each): New procedure.
2023-02-08 14:29:13 -06:00
Timothy Sample 1b5ba1e9ec arithmetic: Port to Mes.
* 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.
2023-02-08 14:29:13 -06:00
Timothy Sample 2b44788598 pattern: Workaround Mes optargs difference.
* gash/pattern.scm (pattern-match?): Remove optional arguments.
2023-02-08 14:29:13 -06:00
Timothy Sample 7fb21c1549 pattern: Do not use record matching.
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.
2023-02-08 14:29:13 -06:00
Timothy Sample 10ee7d286e compat: Add prompts for Mes.
* gash/compat.scm [mes] (make-prompt-tag): Return a fluid.
[mes] (abort-to-prompt): New procedure.
[mes] (call-with-prompt): New procedure.
2023-02-08 14:29:13 -06:00
Timothy Sample 52e03d4d22 compat: Add 'exact-integer?' for Mes.
* gash/compat.scm [mes] (exact-integer?): New procedure.
2023-02-08 14:29:13 -06:00
Timothy Sample f5a4619c69 compat: Add exit codes for Mes.
* gash/compat.scm [mes] (EXIT_SUCCESS): New variable.
[mes] (EXIT_FAILURE): New variable.
2023-02-08 14:29:13 -06:00
Timothy Sample d088464510 compat: Add 'call-with-input-string' for Mes.
* gash/compat.scm [mes] (call-with-input-string): New procedure.
2023-02-08 14:29:13 -06:00
Timothy Sample efe0522d06 compat: Add 'thunk?' for Mes.
* gash/compat.scm [mes] (thunk?): New procedure.
2023-02-08 14:29:13 -06:00
Timothy Sample a584a5bd9c compat: Add Mes shims for the 'eval' module.
* 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').
2023-02-08 14:29:13 -06:00
Timothy Sample 4f3ae9e083 built-ins: echo: Import '(gash compat)'.
* gash/built-ins/echo.scm: Import '(gash compat)'.
2023-02-08 14:29:13 -06:00
Timothy Sample 309f9a8893 compat: Add shims for the 'shell' module.
* 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.
2023-02-08 14:29:13 -06:00
Timothy Sample 83f3369603 compat: srfi-43: Adjust for Mes.
* gash/compat/srfi-43.scm (shared-shims): New macro.
[if-guile-version-below (2 0 10)]: Use it.
[mes]: Likewise.
2023-02-08 14:29:13 -06:00
Timothy Sample ca3b6d354c built-ins: utils: Import SRFI 14 for Mes.
* gash/built-ins/utils.scm: Import '(srfi srfi-14)'.
2023-02-08 14:29:13 -06:00
Timothy Sample 26cf4933c9 config: Tell Mes not to complain about '%version'.
* gash/config.scm.in [mes]: Mark '%version' as a replacement.
2023-02-08 14:29:13 -06:00
Timothy Sample 386d12aa21 wip! environment: Port to Mes.
TODO: Implement 'canonicalize-path'.

* gash/compat.scm [mes] (make-prompt-tag): New procedure.
[mes] (canonicalize-path): New procedure.
* gash/compat/hash-table.scm (shared-shims): New macro.
[if-guile-version-below (2 0 10)]: Use it.
[mes]: Likewise.
* gash/environment.scm: Import '(gash compat)' and '(srfi srfi-14)'.
2023-02-08 14:29:13 -06:00
Timothy Sample 0c554b6b13 parser: Port to Mes.
* gash/compat.scm [mes] (the-eof-object): New variable.
[mes] (noop): New procedure.
* gash/parser.scm: Import '(gash compat)'; remove '(srfi srfi-14)'
import.
(eof-object): Remove procedure.
(make-parser): Replace 'eof-object' with 'the-eof-object'.
(call-with-backquoted-input-port): Likewise.
2023-02-08 14:29:13 -06:00
Timothy Sample e37ef0faba lexer: Port to Mes.
* 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)'.
2023-02-08 14:29:05 -06:00
Timothy Sample ead347128a compat: Support Mes.
* gash/compat.scm (if-guile-version-below) [mes]: Do nothing.
(when-mes): New syntax.
* .dir-locals.el: Tell Emacs how to indent it.
2022-04-28 15:47:36 -06:00
Timothy Sample a3123ab02a Update NEWS for 0.3.0.
* NEWS (release 0.3.0): New section.
2022-02-11 11:18:55 -05:00