GitHub – redox-os/ion: Mirror of https://gitlab.redox-os.org/redox-os/ion

Ion is a modern system shell with a simple, yet powerful, syntax. It is written entirely in Rust, which significantly increases the overall quality and security of the shell. Taking advantage of the Ion’s features, it also offers a level of performance that is superior to the Dash. Although it is developed with and primarily for RedoxOS, it is fully capable on other *nix platforms.

MIT licensed
crate.io
documentation

Ion is still a WIP, and both its syntax and rules may change over time. It’s still a long way from being stable, but we’re getting very close. Changes in syntax are likely to be minimal at this time.

Ion has an RFC process for language proposals. The formal specification of Ion is located within the RFC branch. The RFC process is still in the early stages of development, so most of the ideas for current and future implementation have yet to be written into the specification.

The ion manual is generated automatically on each commit via the online mdBook and hosted on Redox OS’s website.

Creation of manual for local context

The sources for the manual are located here manual Directory.

  1. Create documentation file for builtin
  1. Then make the remaining ion manual through MDBook

Or you can create and open it in your default browser

mdbook serve manual --open

Or you can create and host the manual on your localhost

View examples folder and parallel project

The following PPA supports releases 18.04 (Bionic) and 19.04 (Disco). Bionic builds were created using the RustC 1.39.0 package from the Pop_OS PPA.

sudo add-apt-repository ppa:mmstick76/ion-shell

Those who are developing software with Rust should install the Rustup toolchain manager. After installing rustup, run rustup override set 1.56.0 To set your Rust toolchain to the version that Ion is targeting at the moment. To build Redox OS, rustup override set nightly Redox is required to create dependencies.

Please make sure that both Cargo and RustC 1.56.0 or higher are installed for your system. Release tarballs have not been created yet due to some of the remaining areas being incomplete.

Setting up Ion Shell for a user

git clone https://gitlab.redox-os.org/redox-os/ion/
cd ion
cargo install --path=. --force 

This way ion executable will be installed in folder “~/.cargo/bin”

Alternatively you can do it like this

git clone https://gitlab.redox-os.org/redox-os/ion/
cd ion
cargo build --release 
# Install to path which is included in the $PATH enviromnent variable
DESTDIR=~/.local/bin bash/install.sh

Ion Shell system installation widely for all users

git clone https://gitlab.redox-os.org/redox-os/ion/
cd ion
cargo build --release 
sudo DESTDIR=/usr/local/bin bash/install.sh
# Optional: Do this if Ion shell shoulb be login shell on your system
sudo make update-shells prefix=/usr

There are plugins for ion. These plugins are additional aliases and function definitions written in Ion for Ion. They can be found under this repository.

There is an officially supported syntax highlighting plugin for Vim/nvim users.

vim syntax highlighting

There is a graciously-supported syntax highlighting plugin for Emacs users.

(add-to-list 'load-path  (expand-file-name "/path/to/ion-mode"))
(require 'ion-mode)
(autoload 'ion-mode (locate-library "ion-mode") "Ion majore mode" t)
(add-to-list 'auto-mode-alist '("\\.ion\\'" . ion-mode))
(add-to-list 'auto-mode-alist '("/ion/initrc" . ion-mode))

Emacs syntax highlighting

There is an LSP-server for the scripting language of this shell. To get IDE support like code editor or error messages for IDE you can install LSP-server through crates.io which understands the client side of LSP. Link to the LSP server on Crate.io: https://crate.io/crate/ion_shell_lsp_server. The source code of the LSP server can be found here: https://gitlab.redox-os.org/redox-os/ion_lsp.



Leave a Comment