blog | oilshell.org

Summer Status Update

2018-07-21

I plan to release OSH 0.5 next week! This post is an update on what's happened since the last release.

Table of Contents
Recurse Center
Oil Subproject Review
Shell Trace Tool
OPy
Next
Footnote

Recurse Center

In late March, I wrote a post to relieve myself of Oil-related "duties" while attending the Recurse Center.

But a few things happened in the meantime, and I ended up working on Oil a lot:

Oil Subproject Review

In the same post on Recurse Center (abbreviated RC from now on), I wrote about these subprojects:

I've decided to focus on two of these projects. They address the main problem I see: that OSH is basically a slower and less featureful version of bash right now!

While I've built a solid foundation for the project, I'm not surprised that it doesn't have regular users. I want to change that in the coming months.

Shell Trace Tool

This is a "carrot" for OSH, or at least a candidate for one. (The Oil language is still the main carrot, but it's a longer-term design and implementation effort.)

Before leaving for New York, I prototyped a web-based shell trace tool with my friend Eric.

I conjectured that we could use bash as the client, rather than Oil. I came up with some horrible hacks involving the $PS4 variable, which controls the output of sh -x.

This led to a working demo, but I'm not sure how successful this experiment was. When I get back to San Francisco, I plan to release it and solicit feedback.

OPy

The OPy compiler is necessary to turn OSH into a "production quality" shell. It's a risky and unusual implementation strategy, but I'm optimistic based on the progress so far.

I haven't worked on it too much this summer, but I had some realizations based on conversations with Darius Bacon, who wrote one of the articles I mentioned here:

Next

My time at RC has given me many ideas for blog posts, which fall in these categories:

I'll sketch these ideas in the next post.

Footnote

[1] I e-mailed Guido about his recent blog post on pgen, the bespoke parser generator that powers Python. (Oil uses pgen2, the Python port of pgen.)

Among other things, this conversation clarified that "regular expression" with respect to pgen refers to EBNF iteration syntax like + and *, as opposed to the recursion of plain BNF.

Related: other posts on #parsing. I've written a lot about parsing shell, but parsing Python is interesting too.