3 ms·
So somehow this paper misses one of the greatest developments in this area, oil https://www.oilshell.org/ https://www.oilshell.org/ - which: 1. has a compatibi
by nextaccountic 5y ago
So somehow this paper misses one of the greatest developments in this area, oil https://www.oilshell.org/ https://www.oilshell.org/ - which:
1. has a compatibility mode with sh and bash. it's the only new shell I know with a upgrade path from bash [0]
2. otherwise fixes tons of unix shell misfeatures and in particular fixes quoting hell [2]
PS: one fun quirk of the oil implementation is that it's written in Python.. but actually in a DSL that generates statically typed C++ code, ditching the Python runtime altogether [3] [4] - when you do compile Oil, you just get a C++ tarball (somewhat like fftw, a FFT package written in OCaml but which generates C code; fftw developers write OCaml, but fftw users compile C)
[0] https://www.oilshell.org/why.html https://www.oilshell.org/why.html
[1] https://www.oilshell.org/blog/2020/01/simplest-explanation.html https://www.oilshell.org/blog/2020/01/simplest-explanation.h...
[2] https://www.oilshell.org/release/latest/doc/idioms.html https://www.oilshell.org/release/latest/doc/idioms.html
[3] https://www.oilshell.org/blog/2021/01/why-a-new-shell.html#why-is-it-written-in-python https://www.oilshell.org/blog/2021/01/why-a-new-shell.html#w...
[4] But actually I think there's still work to do to remove the CPython dependency at runtime, https://github.com/oilshell/oil/issues/636 https://github.com/oilshell/oil/issues/636
- hnlmorg 5y agoThat paper misses a lot. Including: - murex https://github.com/lmorg/murex https://github.com/lmorg/murex - Elvish https://github.com/elves/elvish https://github.com/elves/elvish - NGS https://github.com/ngs-lang/ngs https://github.com/ngs-lang/ngs - Powershell - And any language REPLs turned into shells, such as Python, LISP, Lua and others. The author did say there is more to follow though so maybe the scope of this article was a little more closed by intention.
- clavicat 5y agoGreat choice of name when there’s already an oil company called Shell.
- pasabagi 5y agoPresumably that won't matter so much in 50 years, since either Shell will be bust, or civilization will have collapsed.
- chubot 5y agoThis is a common reaction, looks like I have to make this web page :) https://news.ycombinator.com/item?id=29293539 https://news.ycombinator.com/item?id=29293539 FAQ about the name: http://www.oilshell.org/blog/2019/06/17.html#why-is-the-project-named-oil http://www.oilshell.org/blog/2019/06/17.html#why-is-the-proj...
- jedimastert 5y agoI never thought I'd see a fftw reference again. I used it almost 6 years ago for a astronomy telescope data processing library, for convolution. I had no idea!
- chubot 5y ago(author here) Thanks for nicely summarizing the project! I didn't know about fftw, but another nice analogy is TeX by Donald Knuth! TeX is actually written in WEB / a subset of Pascal (H-Pascal I think), and then translated to C. That is, it's NOT typically compiled with a Pascal compiler (I wonder if anyone even maintains those?). This came up a few times on Hacker News and I got some interesting details. I wrote yesterday that I want to hire a Compiler Engineer to help with the C++ translation: https://news.ycombinator.com/item?id=29605304 https://news.ycombinator.com/item?id=29605304 It's already half done, passing ~1100 of 1950 spec tests, so I believe it's very feasible. But it needs someone who can concentrate on it full time. I might as well post the draft of the "job listing" to get people thinking about this. I think the challenge is finding the right person rather than funding it (I'm applying for funding now) https://github.com/oilshell/oil/wiki/Compiler-Engineer-Job https://github.com/oilshell/oil/wiki/Compiler-Engineer-Job (rough draft, you may see polished versions of this later) One sentence description: write an ~10K line translator for statically typed Python, and a ~5K line C++ runtime, and get a free shell out of it! (over 5 years of painstaking work on the semantics!) The input is ~36K lines of Python the output is ~100K lines of C++. This is a very doable project for an experienced compiler engineer. :) So if anyone knows a good candidate, send them my way at andy@oilshell.org. ---- Also, I (virtually) attended the panel where this paper originated: http://www.oilshell.org/blog/2021/06/hotos-shell-panel.html http://www.oilshell.org/blog/2021/06/hotos-shell-panel.html It was basically a call for researchers, hence lesser focus on existing and new implementations. I think it's good to publish future-facing ideas (almost all of which I've read), whereas Oil is a lot of engineering work!