Skip to content
andychu edited this page Jan 19, 2017 · 39 revisions

Here are the goals of the oil project, roughly in chronological order.

High level Goals

Design a modern shell for these applications:

  • System Administration -- Building Linux distributions. Startup scripts, configure and build scripts.
  • Distributed Computing -- Building containers, specifying remote jobs. Feedback and Monitoring.
  • Scientific Computing -- heterogeneous "big data" and small data pipelines. The language should scale down as well as scale up, i.e. low startup latency for small jobs.
  • Interactive Computing -- a general purpose REPL.

Oil Language Design Goals

  • Has a upgrade path from bash, the most popular shell in the world. To do this, I've written a very compatible bash parser, which will allow automatic conversion of bash (osh) to oil.

Thus the language has a different syntax, but a superset of bash semantics.

  • Treat the shell as a real programming language. Example: Completion functions in bash are fairly difficult have a bad API involving globals. It should feel more like writing completion in Python or JavaScript.

    • selected influences: Python, R, Ruby, Perl 6, Lua (API), ML, C and C++. Power Shell.
  • Reduce language cacophony in shell programming. Example: combine shell, awk, and make.

  • Quality implementation: proper error messages like Clang/Swift. Static Parsing.

Longer Term Goals

  • A toolkit for little languages -- lexing, parsing, AST representation, etc.
  • Metaprogramming
Clone this wiki locally