Oils 0.17.0 – YSH Is Becoming Real

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • oil

    Oils is our upgrade path from bash to a better language and runtime. It's also for Python and JavaScript users who avoid shell!

  • (author here) This is good feedback

    1) I think you mean stuff like */.py from zsh, which bash now emulates with shopt -s globstar.

    This has come up several times, and we should have it. But I'm actually not entirely sure how * behaves -- if someone can write an exhaustive shell script that shows what it does (e.g. a bunch of mkdir and touch commands and output), we can copy it in our spec tests:

    https://github.com/oilshell/oil/tree/master/spec

    https://www.oilshell.org/release/0.17.0/test/spec.wwz/osh-py...

    and then implement it. Generally once the behavior is spec'd out, it's not too hard to implement

    2) Completion has a long history in the project -- we emulate bash completion very faithfully, but yeah I've realized that's not enough

    This comment elaborates on a different plan -- I think something like "fishcomp" to emulate fish would be both useful and pretty feasible:

    https://lobste.rs/s/fdqbhk/oils_0_17_0_ysh_is_becoming_real#...

    We can definitely use help with that, and it's relatively self-contained.

    3) What exactly do you mean by "programmable input" ? We support GNU readline so everything there should work (maybe the ./configure detection didn't find it for you?)

    ---

    But there is a bigger reason for the "struggle" -- the main focus of the project now is YSH, the language with data tYpes, influenced by pYthon, JavaScript, Lisp, etc.

    That is, a shell is both a language and an interactive UI, and I've long emphasized the language part, e.g. in the FAQ - http://www.oilshell.org/blog/2021/01/why-a-new-shell.html

    So I think structured data (in the form of languages/protocols) in YSH is really the killer feature of Oils, that will hopefully bring many other people into the project, and motivate filling out the interactive features and so forth.. I wrote FIVE posts about YSH in June: https://www.oilshell.org/blog/2023/06/release-0.16.0.html#so...

    (We also have big ideas for the interactive shell in the form of a headless protocol -- https://www.oilshell.org/blog/2023/06/release-0.16.0.html#he... )

    So yes, as mentioned in this post, the biggest risk is that we don't have enough help. All the technical pieces are there now, and the risks are about project management, not the code.

    (e.g. I appreciate everyone who contributed while the codebase was undergoing this big transformation to native code -- this was kind of risky and the most unusual part of the project, but I think it paid off.)

  • bash-language-server

    A language server for Bash

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • ShellCheck

    ShellCheck, a static analysis tool for shell scripts

  • explainshell

    match command-line arguments to their help text

  • fd

    A simple, fast and user-friendly alternative to 'find'

  • > without zsh globs I have to remember find syntax

    My "solution" to this is using https://github.com/sharkdp/fd (even when in zsh and having glob support). I'm not sure if using a tool that's not present by default would be suitable for your use cases, but if you're considering alternate shells, I suspect you might be

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts