You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardexpand all lines: README.md
+10-11
Original file line number
Diff line number
Diff line change
@@ -14,17 +14,17 @@ implemented in Rust. It's built and tested on Linux and macOS, with experimental
14
14

15
15
16
16
`brush` is functional for interactive use as a daily driver! It can execute most `sh` and `bash` scripts we've
17
-
encountered, but has known limitations we're iteratively working to address. Out of an abundance of caution,
18
-
we do not yet recommend using it in production scenarios due to the risk that it may not behave identically
17
+
encountered. Known limitations are tracked with filed issues. Out of an abundance of caution,
18
+
we wouldn't recommend using it yet in _production_ scenarios in case it doesn't behave identically
19
19
to your existing stable shell. (If you do find any behavioral differences, though, please report them with an
20
20
issue!)
21
21
22
22
Contributions and feedback of all kinds are welcome! For more guidance, please consult our
23
23
[contribution guidelines](CONTRIBUTING.md). For more technical details, please consult the
24
24
[documentation](docs/README.md) in this repo.
25
25
26
-
This project was originally borne out of curiosity and a desire to learn. If it proves over time to be useful, then
27
-
that's a bonus :).
26
+
This project was originally borne out of curiosity and a desire to learn. We're doing our best to keep that
27
+
attitude :).
28
28
29
29
### License
30
30
@@ -43,26 +43,25 @@ greatest bits, you can clone this repo and execute `cargo run`.
43
43
44
44
If you don't have `rust` installed, we recommend installing it via [`rustup`](https://rustup.rs/).
45
45
46
+
(If you *are* interested in having a binary release, then please let us know in the 'Discussions' area of this
47
+
project or by filing a feature request in 'Issues'.)
48
+
46
49
When you run `brush`, it should look exactly as `bash` would on your system since it processes `.bashrc` and
47
50
other usual configuration. If you'd like to customize the look of `brush` to distinguish it from the other shells
48
51
installed on your system, then you can also author a `~/.brushrc` file.
49
52
50
-
### <strike>Known limitations</strike> Where you can help!
53
+
### Known limitations
51
54
52
55
There are some known gaps in compatibility. Most notably:
53
56
54
57
***Honoring `set` and `shopt` options (e.g., `set -e`).**
55
58
The `set` builtin is implemented, as is `set -x` and a few other options, but most of the options aren't fully implemented. `set -e`, for example, will execute but its semantics aren't applied across execution.
56
59
***Curly brace expansion.**
57
60
Almost all forms of expansion are implemented; for some reason, we never got around to implementing an expansion that turns `{a,b}` into `a b`. There's even a test for this, but it's marked as a known failing test.
58
-
***Tokenizer and parser edge cases.**
59
-
For simplicity, the tokenizer for `brush` was hand-implemented and the parsers were implemented using [`rust-peg`](https://github.com/kevinmehall/rust-peg). (Huge shout out to that project!) There are some edge cases that got tricky and may not be implemented with 100% fidelity (e.g., complex nested parenthetical expressions in arithmetic expressions, further nested inside command substitutions). All of our tests are passing in these areas, but coverage is limited. Augmenting test coverage would be a great starting point for contributing in this area.
60
61
***Anything tagged with a `TODO` comment or where `error::unimp()` is used to return a "not implemented" error**.
61
-
These aren't all tracked with GitHub issues right now, but there's a number of these scattered throughout the code base. Some are indicative of missing functionality that may be straightforward to implement; others may be more complicated. These include some shell built-ins. Some are completely and fully implemented (e.g. echo), a number of them support only their most commonly used options, and a decreasingly small minority of them aren't implemented at all.
62
-
63
-
There's certainly more gaps; with time we'll find a way to represent the gaps in some understandable way. Ideally, we'd like to evolve the test suites to add tests for all known missing pieces. That will let us focus on just "fixing the tests".
62
+
These aren't all tracked with GitHub issues right now, but there's a number of these scattered throughout the code base. Some are indicative of missing functionality that may be straightforward to implement; others may be more complicated.
64
63
65
-
We'd absolutely love your help with any of the above, with broadening test coverage, deeper compatibility evaluation, or really any other opportunities you can find to help make this project better.
64
+
If you feel so inclined, we'd love contributions toward any of the above, with broadening test coverage, deeper compatibility evaluation, or really any other opportunities you can find to help make this project better.
0 commit comments