Why Sponsor Oils? | blog | oilshell.org
I've released version 0.4 of OSH, a bash-compatible shell. If you're new to the project, see Why Create a New Shell?.
To build and run it, follow the instructions in INSTALL.txt. Please try it on your shell scripts and report bugs!
This release contains many new features and bug fixes that allow OSH to run real shell programs. Read on for details.
This is why I say the language is nearly feature-complete, as opposed to the "shell" or "implementation". Those aspects of the project still need a lot of work, and are addressed in the Why? post.
However, since OSH 0.4 can run a diverse group of large programs, it's a big milestone!
The post Success with Aboriginal, Alpine, and Debian describes most of the changes, including:
read
builtin also respects $IFS
, as well as -r
.set -o xtrace
and related environment variables.echo -e
and $'\n'
.errexit
behavior to match bash and busybox ash. Add set -o strict-errexit
for more rational behavior.In addition to shell scripts from three Linux distros, I also fixed enough bugs
to run the shell-script-library
project by Stephen Reay.
More features:
dirs
builtin is essentially complete.trap
builtin. It supports the EXIT
trap and signals
handlers like SIGTERM
. A full implementation may have to wait until OSH no
longer uses Python.declare
respects -f
, -x
, and -r
.Build platforms:
timetoplatypus
finished implementing the dirs
builtin.cclauss
added support for Travis continuous builds, and fixed bugs caught
by flake8.Bug Reports that led to changes:
trap
builtin.declare -f -x -r
puppeh
: C-style for loops.shell-script-library
project with me. In the
future, it may show up as a runtime benchmark for OSH.As usual, the full changelog has details.
As for the blog, I plan to write part two of the FAQ, since there were many questions about Oil on Hacker News.
As for the code: Since OSH can run many shell programs, I won't be actively trying new programs in the next release cycle.
However, I still plan to implement features and fix bugs on demand. Please try OSH on your shell programs, and report bugs!
Instead, I plan to work on these things:
(a) A "carrot" for Oil, i.e. a feature that existing shells don't have. Ideas:
(b) Prototyping and documenting the Oil language.
(c) Making the Oil binary smaller.
The new features and bug fixes are reflected in spec test stats:
Despite all the new features, the core interpreter has only grown by ~1500 lines:
In addition, I took the first steps toward slimming down the app bundle:
As part of my plan to break Oil's CPython dependency without rewriting the whole program, I'm counting lines in different ways:
Although OSH is still too big and too slow, it's going in the right direction. The binary has more features than ever, and it's smaller than ever.