blog | oilshell.org
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.
I'm calling it
0.5.alpha3 because most changes are under the hood, rather
I return from the Recurse Center in August, and I expect to release
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.
This section summarizes the raw changelog.
timetoplatypus for reporting bugs that led to fixes:
exitin the interactive shell
I'm still open to more bug reports! I'll respond to them while I'm away for the summer.
Not visible to end users:
Yorwba fixed a subtle byterun bug after I
spent a couple hours trying to track it down.
In addition to
osh, there's now an
oshc command, which you can read as
osh command or osh compiler. It has subcommands for tools, like
oshc deps and
opycpair. This one is only relevant to Oil developers, not users. OPy is an implementation detail.
Most other changes were "under the hood". For context, see Building Oil with the OPy bytecode compiler.
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:
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.
stripcommand 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.
timetoplatypusbrought up on
0.5release likely won't come until August or September.
Feel free to send me feedback in the comments!
 Recall that I released
0.5.alpha2 in early March, when I built Oil with
the OPy bytecode compiler.