blog | oilshell.org

OSH 0.4 - A Shell Language That's Nearly Feature Complete

2018-02-03

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.

Table of Contents
Caveats
Changes
Contributors
What's Next?
Appendix: Project Metrics

Caveats

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.

Changes

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:

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:

Build platforms:

Contributors

Bug Reports that led to changes:

As usual, the full changelog has details.

What's Next?

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 thigns:

(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.

Appendix: Project Metrics

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.