Releases: wryun/es-shell
v0.10.0
A long-proposed new es version is released and ready to use!
Overall, this release has made es more portable, more standards-respecting, and significantly less crashy. It should build without trouble using any ANSI C compiler and run correctly on most any POSIX.1-2001 compliant OS. There are new mechanisms (strict build flags, an expanded test corpus, and continuous-integration automation to run tests on every PR) which help maintain this.
There have been two changes to the language. One is that the = character no longer requires escaping in commands like ls --color=auto. This removes a small, but incredibly obnoxious, grammar wart. The other change is a new match command, somewhat like other languages' switch; it looks like
match $e (
eof {return $result}
exit {throw $e $type $msg}
* {echo >[1=2] uncaught exception}
)
Readline integration has been improved. Tab completion works with es' quote syntax now. Variables, primitives, and usernames are completed appropriately, and there are bindable functions available to use in .inputrc. The special variable $max-history-length has been added to control the length of the in-memory history log. Readline integration can be toggled with the ./configure flags --with-readline or --without-readline.
Speaking of history, a new hook function %write-history has been added. History primitives are no longer present when readline is not compiled in, as the behavior can be performed using regular es script. History writing happens once per command, rather than once per input line.
There are now "canonical extension" scripts distributed in the shell's share/ directory, which implement some of the more common or historically relevant spoofs that people perform. These are:
- autoload.es: function autoloading, based on an original script from Paul
- cdpath.es: cdpath searching, based on the old behavior built into the shell
- interactive-init.es: an
%interactive-inithook, commonly requested by users - path-cache.es: similar to other shells' "hashing" behavior
- status.es: adds a variable $status to the interactive session
Many more small tweaks and changes are listed in the CHANGES file.
v0.9.2
- readline now reads your history file (if set) into its history on startup
(set history with history=~/.es_history or similar) - minor cleanups/fixes (@eadwardus, @mwgamera, @tmmcguire)
- @eadwardus added flatten support to command substitution (e.g. `^{echo hello world})
v0.9.1
Let's use semver, and fix a couple of bugs:
- not properly closing file handles on exceptions (thanks, mwgamera)
- not using ctrl-a/ctrl-b for internal environment processing
so they can be used by libreadline properly
Unfortunately, there are still problems around signal handling which I thought I'd fixed earlier. In practice, these have never affected me. See: #7
First release after rollup
Numerous collated patches dealing with minor bugs and compilation errors since the latest official release, 0.9beta1 (many years ago).
Most importantly fixes to signal handling (now Ctrl-C works). Some small file reorganisation, including all information in the archive, and making readline the default.
This should have comprehensive coverage of fixes posted to the mailing list or applied by package maintainers (debian, FreeBSD, pkgsrc). Left out, however, are:
- Olaf Rogalsky's job control patch (available in the jobcontrol branch); alpha-level code
- Soren Dayton's readfrom/writeto patch (only necessary without /dev/fd); see Harald Hanche-Olsen's email (15 Dec 2000)
- Gergely Nagy's signal handling patch from debian's es 0.90beta1-10 (appears unnecessary) (other parts of that debian patchset are included)
- Paul Haahr's DUMB_ASS_LINUX_BUG signal patch (again unnecessary)