Code Monkey home page Code Monkey logo

ion's Introduction

Introduction

Ion is a modern system shell that features a simple, yet powerful, syntax. It is written entirely in Rust, which greatly increases the overall quality and security of the shell. It also offers a level of performance that exceeds that of Dash, when taking advantage of Ion's features. While it is developed alongside, and primarily for, RedoxOS, it is a fully capable on other *nix platforms.

Ion Shell

MIT licensed crates.io Documentation

Ion is still a WIP, and both its syntax and rules are subject to change over time. It is still quite a ways from becoming stabilized, but we are getting very close. Changes to the syntax at this time are likely to be minimal.

Ion Specification

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

Ion Manual

The Ion manual online is generated automatically on each commit via mdBook and hosted on Redox OS's website.

Building the manual for local reference

Sources for the manual are located in the manual directory.

  1. Build the documentation file for the builtins
make manual
  1. Then build the rest of the Ion manual via mdbook
mdbook build manual

Or you can build and open it in the your default browser via

mdbook serve manual --open

Or you can build and host the manual on your localhost via

mdbook serve manual 

Ion library example

See the examples folder and the Parallelion project

Packages

Pop!_OS / Ubuntu

The following PPA supports the 18.04 (bionic) and 19.04 (disco) releases. Bionic builds were made using the Pop_OS PPA's rustc 1.39.0 package.

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

Developer set up

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 for Redox OS, rustup override set nightly is required to build the Redox dependencies.

Build dependencies

Please ensure that both cargo and rustc 1.56.0 or higher is installed for your system. Release tarballs have not been made yet due to Ion being incomplete in a few remaining areas.

Installation

Installation of Ion shell for one user

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

This way the ion executable will be installed into the folder "~/.cargo/bin"

As an alternative 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

Installation of Ion shell system wide, 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

Ion plugins

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.

Vim/NeoVim Syntax Highlighting Plugin

For vim/nvim users there is an officially-supported syntax highlighting plugin.

Plugin 'vmchale/ion-vim'

Vim Syntax Highlighting

Emacs Syntax Highlighting Plugin

For emacs users there is a kindly-supported syntax highlighting plugin.

(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

Lsp /IDE support

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

ion's People

Contributors

adminxvii avatar aleksator avatar aureliencc avatar bafdyce avatar bb010g avatar boolpurist avatar covercash2 avatar dcampbell24 avatar dlrobertson avatar emturner avatar hgoldstein avatar ids1024 avatar jackpot51 avatar jakobhellermann avatar jd91mzm2 avatar matu3ba avatar mgattozzi avatar mgmoens avatar mmstick avatar movingtomars avatar ngirard avatar nihathrael avatar nivkner avatar panaman67 avatar phddoom avatar polymetric avatar skylerberg avatar sstanfield avatar tommoa avatar wbrbr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.