-
-
Notifications
You must be signed in to change notification settings - Fork 166
Project Goals
andychu edited this page Jan 19, 2017
·
39 revisions
Here are the goals of the oil project, roughly in chronological order.
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.
- 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