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:
readbuiltin also respects
$IFS, as well as
set -o xtraceand related environment variables.
errexitbehavior to match bash and busybox ash. Add
set -o strict-errexitfor 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.
dirsbuiltin is essentially complete.
trapbuiltin. It supports the
EXITtrap and signals handlers like
SIGTERM. A full implementation may have to wait until OSH no longer uses Python.
timetoplatypusfinished implementing the
cclaussadded support for Travis continuous builds, and fixed bugs caught by flake8.
Bug Reports that led to changes:
declare -f -x -r
puppeh: C-style for loops.
shell-script-libraryproject 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.