Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/redox-os/ion
Mirror of https://gitlab.redox-os.org/redox-os/ion
https://github.com/redox-os/ion
Last synced: 5 days ago
JSON representation
Mirror of https://gitlab.redox-os.org/redox-os/ion
- Host: GitHub
- URL: https://github.com/redox-os/ion
- Owner: redox-os
- License: mit
- Created: 2015-10-07T12:45:04.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2024-10-19T17:04:13.000Z (15 days ago)
- Last Synced: 2024-10-19T18:30:57.404Z (15 days ago)
- Language: Rust
- Homepage:
- Size: 4.7 MB
- Stars: 1,468
- Watchers: 56
- Forks: 141
- Open Issues: 60
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-rust - redox-os/ion - generation system shell [<img src="https://api.travis-ci.org/redox-os/ion.svg?branch=master">](https://travis-ci.org/redox-os/ion) (Applications / System tools)
- awesome-shell - ion - A modern system shell that features a simple, yet powerful, syntax. It is written entirely in Rust. (Shells)
- awesome-rust - redox-os/ion - generation system shell (Applications / System tools)
- awesome-rust-cn - redox-os/ion
- awesome-alternatives-in-rust - ion - A modern shell developed for RedoxOS. But is still capable on \*nix platforms. (Applications / System tools)
- awesome-rust-zh - redox-os/ion - 下一代系统 shell [<img src="https://api.travis-ci.org/redox-os/ion.svg?branch=master">](https://travis-ci.org/redox-os/ion) (应用 / 系统工具)
- awesome-rust - redox-os/ion - Next-generation system shell (Applications / System tools)
- awesome-rust - redox-os/ion - generation system shell [<img src="https://api.travis-ci.org/redox-os/ion.svg?branch=master">](https://travis-ci.org/redox-os/ion) (应用 Applications / 系统工具 System tools)
- awesome-rust-cn - redox-os/ion - generation system shell [<img src="https://api.travis-ci.org/redox-os/ion.svg?branch=master">](https://travis-ci.org/redox-os/ion) (应用 / System tools)
- awesome-starred - redox-os/ion - Mirror of https://gitlab.redox-os.org/redox-os/ion (others)
- fucking-awesome-rust - redox-os/ion - Next-generation system shell (Applications / System tools)
- fucking-awesome-rust - redox-os/ion - Next-generation system shell (Applications / System tools)
README
# 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](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE)
[![crates.io](https://meritbadge.herokuapp.com/ion-shell)](https://crates.io/crates/ion-shell)
[![Documentation](https://img.shields.io/badge/documentation-blue)](https://doc.redox-os.org/ion-manual)> 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](https://gitlab.redox-os.org/redox-os/ion/tree/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](https://doc.redox-os.org/ion-manual)
is generated automatically on each commit via [mdBook](https://github.com/azerupi/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
```sh
make manual
```2. Then build the rest of the Ion manual via mdbook
```sh
mdbook build manual
```Or you can build and open it in the your default browser via
```sh
mdbook serve manual --open
```Or you can build and host the manual on your localhost via
```sh
mdbook serve manual
```# Ion library example
See the [examples folder](https://gitlab.redox-os.org/redox-os/ion/tree/master/examples) and the [Parallelion project](https://gitlab.redox-os.org/AdminXVII/parallelion)
# 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](https://rustup.rs/).
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
```sh
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
```sh
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
```sh
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](https://gitlab.redox-os.org/redox-os/ion-plugins).# Vim/NeoVim Syntax Highlighting Plugin
For vim/nvim users there is an [officially-supported syntax highlighting plugin](https://gitlab.redox-os.org/redox-os/ion-vim).
```vimscript
Plugin 'vmchale/ion-vim'
```![Vim Syntax Highlighting](.gitlab/vim_syntax.png)
# Emacs Syntax Highlighting Plugin
For emacs users there is a [kindly-supported syntax highlighting plugin](https://github.com/iwahbe/ion-mode).
```emacs
(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](.gitlab/emacs_syntax.png)
# 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 .