NeoSH is looking for contributors!

44 points NTBBloodbath

NeoSH - is a crossplatform shell written in Rust and Lua, where Rust is used as a core, and Lua is used for configuration.

Right now we can't even say that the project is in it's pre-alpha study, because it is 1 month old. We would like to implement many beautiful features, but right now 3 people is not enough because we can't give enough time for the project.

Our goals

Right now we want to write a "next-gen" shell and as I've said before, we are using Lua for configuration but we also plan to make a transpiler to Lua. That means, we parse user input and send it to Lua by using an AST and the result of the user input will be rendered using a table beautifier (something similar to what nushell does IIRC).

We want to make a highly extensible shell with a robust functionality and a good interface language and that's why we chose Lua as our scripting language. We also want to make a robust Lua API so people can easily make plugins to extend what NeoSH can do.

Additionally to this, we plan to make a "cross-shell" (don't know how to define this lol), that means, we will have two core modes. The normal mode, being the shell that everybody knows and a Lua REPL to directly interact with our Lua API (this one will be capable of execute system commands!). Some more features are planned but we cannot make a bible here haha.

What we have done so far

  • Right now we have implemented the most basic built-in shell commands (cd, pwd and of course, exit).
  • Our extended Lua stdlib
  • Core logging system (exported to our Lua API too).
  • Started our parser (in a very early stage!)
  • Shell history and shell directories creation (like ~/.config/neosh)
  • Some CIs on GitHub to help us with some tasks.

Where help is needed

  • readme
  • refactoring
  • logging
  • implementing parser for user input (cargo fmt -- --check into ast (ast is almost done))
  • shell commands
  • feature suggestion
  • core concepts suggestion
  • testing
  • community guidelines

Links