Why Sponsor Oils? | blog | oilshell.org
In the last post, I reviewed November's Roadmap #3. Even though I'm the only one working on Oil, I'm happy with the progress so far.
But I think the project has reached a point where contributions will accelerate it. To orient contributors, this post describes what I hope to happen in the next month or two.
Software projects move faster when they have automated tests. Tests should help contributors write code for Oil, and they'll help me review code.
As mentioned on the Github page, there are three kinds of tests:
I've published the spec test results as HTML. You can see
the results of running the *.test.sh
files, details about failures, and
annotated source code.
The next task will be to publish the unit tests and wild tests a similar way.
The test coverage is fairly high, and I expect to keep it that way. We want the ability to make aggressive code changes and rely on tests to catch breakages.
It's conceivable that the current shell runtime in Python will work for many applications. The speed of most shell scripts should depend on the speed of the external programs they use, not the speed of the shell itself.
But I want to write the runtime in C++ for a few reasons:
sed
and tr
. I want Oil to be at least
as good as Python in this respect, and that will require a fast interpreter.So I'll be working on a vertical slice of the C++ software architecture. The first step is to run something like this:
$ test -d / && echo 'hello world' hello world
This will require the following:
osh.asdl
and oil.asdl
will compile
to a simpler language specified in ovm.asdl
.core/id_kind.py
, mentioned in The Backbone of the
Interpreter. Both of these code generators are already written.So three pieces of relevant C++ code already exist, and I hope I can glue them together quickly. The main design issue will be the OVM code representation.
I'll save the details of these tasks for a future post. I'm not sure in what order I'll tackle them, and there is more than one possible approach for each one.
There's also the ongoing work and other unfinished tasks mentioned in the last post. Also, the OSH to Oil translator isn't done, although it's been proven.
There's a lot of work to do, and I think some of it can be parallelized. I hope that the automated test enhancements I've described here makes it pleasant to work on the project. Please leave a comment if you want to work on it.
Although I think the HTML page I linked above is fairly easy to understand, I'll explain it in detail in an upcoming post. I also plan to add docs on contributing and testing in the Git repository.