ion issueshttps://gitlab.redox-os.org/redox-os/ion/-/issues2019-09-04T05:38:10Zhttps://gitlab.redox-os.org/redox-os/ion/-/issues/849A new builtin to quietly run a detached process2019-09-04T05:38:10ZElahn IentileA new builtin to quietly run a detached processTraditionally, this is done by redirecting stdout and stderr to /dev/null, to prevent it cluttering up the terminal, backgrounding the process then disowning it. e.g.
```
# xed launch.sh &> /dev/null &
# disown
```
Launching a GUI appl...Traditionally, this is done by redirecting stdout and stderr to /dev/null, to prevent it cluttering up the terminal, backgrounding the process then disowning it. e.g.
```
# xed launch.sh &> /dev/null &
# disown
```
Launching a GUI application from the command-line with a file/directory argument is common, so we should make it quick and simple. Possible names for this builtin command:
- run
- start
- launchIon Shell v1.0.0https://gitlab.redox-os.org/redox-os/ion/-/issues/828Process hang with subshell2019-02-09T00:07:39ZMichael Aaron Murphymmstick@pm.meProcess hang with subshellStumbled across an issue that can cause ion to hang:
```
for src in src crates/*; echo $(echo -e "### $src\n ```\n$(tokei $src)\n```"); end
```
It doesn't always happen, but this will usually happen after the second attempt.Stumbled across an issue that can cause ion to hang:
```
for src in src crates/*; echo $(echo -e "### $src\n ```\n$(tokei $src)\n```"); end
```
It doesn't always happen, but this will usually happen after the second attempt.Ion Shell v1.0.0https://gitlab.redox-os.org/redox-os/ion/-/issues/781escaping breaks tab completion2018-06-21T18:08:52ZGhost Userescaping breaks tab completion touch 'f x'
foo <Tab>
repeatedly pressing tab will fill the prompt with `foo f\ xf\ xf\ x`. possibly a liner issue. touch 'f x'
foo <Tab>
repeatedly pressing tab will fill the prompt with `foo f\ xf\ xf\ x`. possibly a liner issue.jD91mZM2jD91mZM2https://gitlab.redox-os.org/redox-os/ion/-/issues/780Panic on ```[{]}```2018-06-19T16:48:49ZEmma TurnerPanic on ```[{]}```**Reproduction**
```echo {[}]``` or ```echo [{]}```
**Expected behaviour**
A syntax error (e.g. ```echo ({)}``` yields ```ion: syntax error: '(' at position 6 is out of place```)
**Actual behaviour**
```thread 'main' panicked at 'ion: ...**Reproduction**
```echo {[}]``` or ```echo [{]}```
**Expected behaviour**
A syntax error (e.g. ```echo ({)}``` yields ```ion: syntax error: '(' at position 6 is out of place```)
**Actual behaviour**
```thread 'main' panicked at 'ion: fatal error with syntax validation: unterminated brace'```
**System**
Arch linux;
ion commit: ```e7f5a8```Emma TurnerEmma Turnerhttps://gitlab.redox-os.org/redox-os/ion/-/issues/778Array Assignment Operators2018-07-02T20:42:57ZMichael Aaron Murphymmstick@pm.meArray Assignment OperatorsArithmetic may also be performed on arrays. These operations can be SIMD-accelerated.
- **Add**: `+=`
- **Subtract**: `-=`
- **Divide**: `/=`
- **Integer Divide**: `//=`
- **Multiply**: `*=`
- **Exponent**: `**=`
There are also some ar...Arithmetic may also be performed on arrays. These operations can be SIMD-accelerated.
- **Add**: `+=`
- **Subtract**: `-=`
- **Divide**: `/=`
- **Integer Divide**: `//=`
- **Multiply**: `*=`
- **Exponent**: `**=`
There are also some array-specific operations:
* [x] **Append** (`++`): Append values to the array
```
$ let ARRAY = [ 1 2 3 ]
$ let ARRAY ++= 4
$ let ARRAY ++= [5 6 7]
$ echo @ARRAY
1 2 3 4 5 6 7
```
* [x] **Append-Head** (`::`): Insert values at the beginning of the array
```
$ let ARRAY = [ 4 5 6 ]
$ let ARRAY ::= [ 1 2 3 ]
$ echo @ARRAY
1 2 3 4 5 6
```
* [x] **Difference** (`\\`): Retain values which are different from the array on the right
```
$ let ARRAY = [ 1 2 3 4 5 6 ]
$ let ARRAY \\= [1 3 5]
$ echo @ARRAY
2 4 6
```Ion Shell v1.0.0stratactstratact1@gmail.comstratactstratact1@gmail.comhttps://gitlab.redox-os.org/redox-os/ion/-/issues/773Quotes in Filenames2018-06-12T19:30:15ZMichael Aaron Murphymmstick@pm.meQuotes in Filenames**Reproduction**: <!--- describe how you are able to reproduce ("trigger") this bug/issue. -->
```
james:~/src/ion# touch "f\'x"
james:~/src/ion# ls
'f\'\''x'
```
**Blocking/related**: <!--- issues or PRs blocking or being related to ...**Reproduction**: <!--- describe how you are able to reproduce ("trigger") this bug/issue. -->
```
james:~/src/ion# touch "f\'x"
james:~/src/ion# ls
'f\'\''x'
```
**Blocking/related**: <!--- issues or PRs blocking or being related to this issue. -->
found in #437 by @AgustinCBhttps://gitlab.redox-os.org/redox-os/ion/-/issues/711Alias values containing logical operator only executes the first operand.2018-08-14T17:49:42ZMichael Aaron Murphymmstick@pm.meAlias values containing logical operator only executes the first operand.*Created by: ishanjain28*
**Reproduction**:
alias test=mkdir ~/iontest && rmdir ~/iontest
test
**Expected behavior**:
Create a iontest folder in home directory and then delete it.
**Actual behavior**: [describe ...*Created by: ishanjain28*
**Reproduction**:
alias test=mkdir ~/iontest && rmdir ~/iontest
test
**Expected behavior**:
Create a iontest folder in home directory and then delete it.
**Actual behavior**: [describe the actual behavior, which is presented through the repro.].
Creates the directory but doesn't deletes it.
**Build information**:
rustc -V rustc 1.25.0-nightly (3ec5a99aa 2018-02-14)
git rev-parse HEAD 96d5b5d2ef53d8d9e93a4a41019560175cc12598
qemu-i386 -version 2.11.1
uname -a: Linux y50 4.15.9-1-ARCH #1 SMP PREEMPT Sun Mar 11 17:54:33 UTC 2018 x86_64 GNU/Linux
Ion version: ion 1.0.0-alpha (x86_64-unknown-linux-gnu) rev 6d5b5d2ef53d8d9e93a4a41019560175cc12598
Ion Shell v1.0.0Roland KovácsRoland Kovácshttps://gitlab.redox-os.org/redox-os/ion/-/issues/707Unterminated brace panic on `[{ }]`2018-06-10T02:59:05ZMichael Aaron Murphymmstick@pm.meUnterminated brace panic on `[{ }]`*Created by: xTibor*
**Reproduction**:
`user:~/git/ion# [{ }]`
**Expected behavior**:
A syntax error or some other kind of error message.
**Actual behavior**:
A panic with the following message: `thread 'main' panicked at 'ion:...*Created by: xTibor*
**Reproduction**:
`user:~/git/ion# [{ }]`
**Expected behavior**:
A syntax error or some other kind of error message.
**Actual behavior**:
A panic with the following message: `thread 'main' panicked at 'ion: fatal error with syntax validation: unterminated brace', src/lib/parser/shell_expand/words/mod.rs:519:9`
[Full backtrace](https://gist.github.com/xTibor/03eaec5d81cbc52b955ddfd676e09295)
**Build information**:
`rustc -V`: `rustc 1.26.0-nightly (2789b067d 2018-03-06)`
`git rev-parse HEAD`: 96d5b5d2ef53d8d9e93a4a41019560175cc12598
System: KDE neon 5.12 (Ubuntu 16.04 LTS)
https://gitlab.redox-os.org/redox-os/ion/-/issues/695Unexpected end of script when nesting if inside match2018-08-08T21:24:02ZMichael Aaron Murphymmstick@pm.meUnexpected end of script when nesting if inside match*Created by: PigeonF*
**Reproduction**: Run the following piece of code
```
match "foo"
case "foo"
if true
echo "This is executed"
end
end
```
**Expected behavior**: "This is executed" gets pri...*Created by: PigeonF*
**Reproduction**: Run the following piece of code
```
match "foo"
case "foo"
if true
echo "This is executed"
end
end
```
**Expected behavior**: "This is executed" gets printed (it does) and ion exits successfully.
**Actual behavior**: "This is executed" gets printed and ion exits with "ion: unexpected end of script: expected end block for `Default`" and 1 as an exit code
**Build information**:
Ion built with `rustc 1.25.0-nightly (3ec5a99aa 2018-02-14)`,
`ion 1.0.0-alpha (x86_64-apple-darwin)
rev 22b3efc6eb29020b452c44ad057c394951f6b982`
**Misc**: This issue also occurs when trying to run `ion setup.ion build docs`.
Note: I just started looking into ion, so this might just be me being unable to grasp the syntaxIon Shell v1.0.0Roland KovácsRoland Kovácshttps://gitlab.redox-os.org/redox-os/ion/-/issues/664Globbing Should Occur After Brace Expansion2018-06-11T19:16:24ZMichael Aaron Murphymmstick@pm.meGlobbing Should Occur After Brace ExpansionThe following should be a valid pattern:
```ion
echo {a,b,c}*
```
Which internally would expand to:
```ion
echo [a* b* c*]
```
and then globbing would be applied at this pointThe following should be a valid pattern:
```ion
echo {a,b,c}*
```
Which internally would expand to:
```ion
echo [a* b* c*]
```
and then globbing would be applied at this pointstratactstratact1@gmail.comstratactstratact1@gmail.comhttps://gitlab.redox-os.org/redox-os/ion/-/issues/639Function Pipelining Improvements2021-06-01T12:38:29ZMichael Aaron Murphymmstick@pm.meFunction Pipelining ImprovementsThe following is an example of what we could do with function pipelines.
```ion
fn add x y
echo $((x + y))
end
add 2 3 | add 3
```
Taking some inspiration from the D programming language, `2` and `3` from the first invocation woul...The following is an example of what we could do with function pipelines.
```ion
fn add x y
echo $((x + y))
end
add 2 3 | add 3
```
Taking some inspiration from the D programming language, `2` and `3` from the first invocation would be `x` and `y` respectively; whereas in the second invocation, `x` would be read from `stdin` directly, and `y` would be assigned `3`. Parsing rules would depend on the specified type parameters. So, for example, the following could be valid:
```sh
fn add x:int y:int
echo $((x + y))
end
echo "1 4" | add
```https://gitlab.redox-os.org/redox-os/ion/-/issues/592Exit On Error Should Have Configurable Callback2019-07-22T20:50:25ZMichael Aaron Murphymmstick@pm.meExit On Error Should Have Configurable CallbackThose using Ion as a library should be able to choose the behavior that will enact when this conditition is met.Those using Ion as a library should be able to choose the behavior that will enact when this conditition is met.Ion Shell v1.0.0https://gitlab.redox-os.org/redox-os/ion/-/issues/565Implement Fuzzing2018-07-01T17:40:56ZMichael Aaron Murphymmstick@pm.meImplement FuzzingIt would be a good idea to get support for fuzzing in the Ion shell, to quickly find any faults in the various parsers within the shell.It would be a good idea to get support for fuzzing in the Ion shell, to quickly find any faults in the various parsers within the shell.Emma TurnerEmma Turnerhttps://gitlab.redox-os.org/redox-os/ion/-/issues/545Multiple Redirection Support2018-06-12T14:22:02ZMichael Aaron Murphymmstick@pm.meMultiple Redirection SupportIt's currently only possible to perform one redirection at a time. Adding support for multiple redirections would be very useful in a number of cases, and should be somewhat easy to implement. In example, redirecting standard output to /...It's currently only possible to perform one redirection at a time. Adding support for multiple redirections would be very useful in a number of cases, and should be somewhat easy to implement. In example, redirecting standard output to /dev/null, but redirecting standard error to a log.
```sh
cmd args... > /dev/null ^> log
```https://gitlab.redox-os.org/redox-os/ion/-/issues/539Syntax for completely launching and disowning a process2018-06-12T14:22:02ZMichael Aaron Murphymmstick@pm.meSyntax for completely launching and disowning a process*Created by: japm48*
### Feature request
I would like to see something similar to `&!` in zsh ([documentation](http://zsh.sourceforge.net/Doc/Release/Jobs-_0026-Signals.html#Jobs-_0026-Signals)).
This allows launching e.g. `firefo...*Created by: japm48*
### Feature request
I would like to see something similar to `&!` in zsh ([documentation](http://zsh.sourceforge.net/Doc/Release/Jobs-_0026-Signals.html#Jobs-_0026-Signals)).
This allows launching e.g. `firefox &!` and keep it running even after the shell (and the terminal window) is closed.
In addition, I would like to see something like `&!!` (not implemented in ZSH or any other shell I know of) which also detaches `stdin` and `stdout` from the spawned process, as some GUI programs can be noisy. This would be a lot cleaner than having to manually redirecting to `/dev/null`.
https://gitlab.redox-os.org/redox-os/ion/-/issues/489Git prompt2018-06-12T14:22:02ZMichael Aaron Murphymmstick@pm.meGit prompt*Created by: msehnout*
Is git plugin desired feature for Ion or should it be in a separate crate? Looking at the fish shell, it looks like they have git functions built in and used in a prompt.
If it is, is anyone working on it?*Created by: msehnout*
Is git plugin desired feature for Ion or should it be in a separate crate? Looking at the fish shell, it looks like they have git functions built in and used in a prompt.
If it is, is anyone working on it?https://gitlab.redox-os.org/redox-os/ion/-/issues/482Make distinction between value types within Ion2021-06-01T11:41:22ZMichael Aaron Murphymmstick@pm.meMake distinction between value types within Ion*Created by: huntergoldstein*
# Problem
Everything is, by default, an `Array` when expanding strings. For example, the expression
```
$(foo bar baz)
```
is supposed to expand to a string, but currently this expands to a one element arra...*Created by: huntergoldstein*
# Problem
Everything is, by default, an `Array` when expanding strings. For example, the expression
```
$(foo bar baz)
```
is supposed to expand to a string, but currently this expands to a one element array. There are plenty of other similar cases, for example `""` expanding to the empty array versus the empty string.
# Solution
Introduce a true value type, something like:
```
enum Value {
String(SmallString)
Array(SmallVec<Value>)
}
```
# Considerations
- Expressions such as `foo @bar`, where `bar = [0 1 2 ...]` currently expand to `foo 0 1 2 ...` with each element of `bar` becoming an argument to `foo` and `foo "@bar"` for passing `bar` itself as an argument.
- Perhaps we have explicit array passing here with `foo [@bar]`
- Typed function arguments: do we want to add `bool` and `int` types? Also see #480.Ion Shell v1.0.0Michael Aaron Murphymmstick@pm.meMichael Aaron Murphymmstick@pm.mehttps://gitlab.redox-os.org/redox-os/ion/-/issues/477tilde broken for implicit cd2018-06-12T14:22:02ZMichael Aaron Murphymmstick@pm.metilde broken for implicit cd*Created by: aeosynth*
```
# ~
ion: command not found: ~
```*Created by: aeosynth*
```
# ~
ion: command not found: ~
```https://gitlab.redox-os.org/redox-os/ion/-/issues/452Background Jobs That Request TTY Will Exit2021-01-06T22:41:58ZMichael Aaron Murphymmstick@pm.meBackground Jobs That Request TTY Will ExitJobs created as background jobs, which require access to a TTY, will immediately exit.Jobs created as background jobs, which require access to a TTY, will immediately exit.Ion Shell v1.0.0betahttps://gitlab.redox-os.org/redox-os/ion/-/issues/417Remove Indentation When `end` Is Detected2018-06-12T14:22:03ZMichael Aaron Murphymmstick@pm.meRemove Indentation When `end` Is DetectedMay require some work on [liner](https://github.com/MovingtoMars/liner) to implement. See https://github.com/MovingtoMars/liner/issues/39May require some work on [liner](https://github.com/MovingtoMars/liner) to implement. See https://github.com/MovingtoMars/liner/issues/39