blog | oilshell.org

Release of OSH 0.5.alpha3

This is the latest version of OSH, a bash-compatible shell:

Please try it on your shell scripts and report bugs! To build and run it, follow the instructions in INSTALL.txt.

If you're new to the project, see Why Create a New Shell?. OSH can run unmodified shell scripts that are thousands of lines long, as described in the announcement for OSH 0.4.

Why an 'alpha' Release?

I'm calling it 0.5.alpha3 because most changes are under the hood, rather than user-facing.

I return from the Recurse Center in August, and I expect to release version 0.5 a few weeks thereafter. If you want to keep up with the project over the summer, please join oilshell.zulipchat.com, which I described in the last post.

It's more of a "pre-release" than an "alpha", but I didn't want to disrupt the naming scheme (note 1). In other words, it's still a high-quality release that passes a large suite of tests. The results are on the /release/$VERSION/ page.

It's also now live on the home page, so new users will download and test it.

Summary of Changes

This section summarizes the raw changelog.

Metrics

Compared to the previous release, the benchmarks and metrics haven't changed much. This is good, because it means that replacing the bytecode compiler and then refactoring it didn't break anything.

For example, the bytecode isn't noticeably bigger:

The one anomaly I noticed is that the native code size is significantly different:

ovm-build for 0.5.alpha2: native code size is 1,596,576 bytes

ovm-build for 0.5.alpha2: native code size is 1,762,384 bytes

I still need to look into it, but it's probably caused by one of:

-fomit-no-frame-pointer , which I added to make profiling with flame graphs work.

, which I added to make profiling with flame graphs work. I used the strip command rather than generating a stripped binary with gcc -s . Again, this was to support profiling on the optimized binary.

Lesson: It's surprising how many times simple metrics reveal problems. I don't know what the cause of this problem is yet, but I'm sure I'll learn something when I figure it out.

What's Next?

Fix a few issues that timetoplatypus brought up on #oil-dev .

brought up on . I hope to summarize the blog backlog before I leave for the east coast. I've done this in previous posts tagged #blog-topics.

before I leave for the east coast. I've done this in previous posts tagged #blog-topics. OSH needs a "carrot" — something that makes it better than bash. I'm still working on a shell trace tool, which I also hope to release before I leave. It will be a rough first cut.

tool, which I also hope to release before I leave. It will be a rough first cut. As mentioned, the 0.5 release likely won't come until August or September.

Feel free to send me feedback in the comments!

Footnotes