Skip to content

Releases: cosmos72/schemesh

Version 0.8.0

04 Mar 20:00
Compare
Choose a tag to compare

New features:

  • add function (sh-expr) to create shell jobs that execute arbitrary Scheme code, and the corresponding macro (shell-expr)
  • implement job control also on arbitrary Scheme code running inside a (shell-expr)
  • update both shell parser and Scheme parser to expand $( ) to (shell-expr ( ))

Improvements:

  • ignore newlines at the beginning of shell syntax: allows writing Scheme code in a new line under the REPL prompt
  • ignore newlines after shell syntax tokens { [ ! ; & && || | |& < <> > >> <& >& - in most cases, this removes the need to end a line with \ for continuing a shell command in the next line
  • always queue job status change notifications for later displaying them, instead of sometimes displaying them immediately

Removed features:

  • remove function (sh-resume) and subsume it into (sh-wait)
  • rename shell builtin expr -> value
  • remove function (sh-bool)

Version 0.7.7

01 Mar 15:16
Compare
Choose a tag to compare

Fixes:

  • fix (charhistory-save-to-path) not to raise exceptions: it was preventing schemesh
    from exiting if ~/.cache/schemesh/ directory does not exist or is not writable

Version 0.7.6

01 Mar 08:22
Compare
Choose a tag to compare

New features:

  • add new syntax for shell command substitution $[ ] and deprecate the old syntax $( )
  • add shell builtin cd- changes current directory of parent job to its previous value
  • add shell builtin parent executes another builtin in parent's environment and current directory
    If used multiple times, as parent parent command ls, effects are cumulative
  • add string-related functions (string-any) (string-contains) (string-count) (string-every) (string-index) (string-index-right) (string-join) (string-map) (string-replace-all) (string-replace-prefix) (string-replace-suffix) (string-prefix?) (string-suffix?)
  • export existing string-related functions (in-string) (string-fill-range!) (string-is-unsigned-base10-integer?) (string-is-signed-base10-integer?) (string-iterate) (string-list?) (string-list-split-after-nuls) (string-prefix/char?) (string-range-count=) (string-range=?) (string-range<?) (string-replace/char!) (string-rtrim-newlines!) (string-split) (string-split-after-nuls) (string-suffix/char?) (string-trim-split-at-blanks)
  • add functions (delete-directory) (delete-file) (file-directory?) (file-exists?) (file-regular?) (file-symbolic-link?)
    they intentionally replace Chez Scheme functions with the same names, adding support for file and directory names that are not valid UTF-8
  • add functions (in-exact-range) (ok?)

Fixes:

  • fix parsing character \ followed by newline inside Scheme strings
  • fix parsing character \ followed by newline in shell syntax
  • fix bugs in (on-list) and (in-fixnum-range)
  • propagate tty configuration from each command execution to the following ones

Improvements:

  • automatically (import (schemesh)) at REPL
  • rename existing functions to better follow r7rs naming conventions
  • rename shell builtin test -> expr and rename macro (shell-test) -> (shell-expr)
  • improve function (in-range) to dispatch to one of the optimized implementations (in-fixnum-range) (in-exact-range) (in-flonum-range)

Version 0.7.5

14 Feb 22:53
Compare
Choose a tag to compare

Fixes:

  • fix utils/find_chez_scheme_dir.sh for Alpine linux
  • fix a pair of bugged assertions that were triggered by valid code {echo $A=}
  • fix support for Chez Scheme down to 9.5.8

Improvements:

  • rename shell builtin "error" -> "test"
  • add command line option --load-file FILE and support for loading compiled Scheme libraries *.so
  • add functions (alist->eq-hashtable) (alist->eqv-hashtable) (alist->hashtable) (file-rename)
    (in-bytevector) (in-bytespan) (in-chargbuffer) (in-charline) (in-charlines) (in-charspan)
    (in-gbuffer) (in-hashtable) (in-list) (in-span) (in-string) (in-vector)
    (in-fixnum-range) (in-flonum-range) (in-range) (on-list)
    (sh-bool) (sh-run/string-split-after-nuls) (sh-version) (string-replace)
  • add macros (for) (for*) (library-reexport) (shell-test)
  • add Fedora Linux build instructions to README.md
  • add "Troubleshooting" section to README.md
  • add more examples to README.md

Version 0.7.4

10 Feb 17:21
Compare
Choose a tag to compare

Minor improvements:

  • update Makefile to follow GNU Makefile conventions - fixes issue #1
  • add builtins "help copyright" and "help warranty"
  • add more examples to README.md and mention more job-related Scheme functions
  • sort the queued notifications about job status changes before displaying them

Version 0.7.3

09 Feb 14:10
Compare
Choose a tag to compare

Schemesh version 0.7.3

First stable release