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
* README.md
- Add line breaks to goal list
- Credit csh instead of bash for history manipulation functions
- Add example of proposed grammar change
- Include XXHash as an alternate hashing method
- Include the possibility of using floating point internally for
mathematical operations
* dict.c
- Use unsigned types for hashinng function
* es.h
- Add macro logic for using single debug switch
* fd.c
- Noted a section of code that needs revisiting as it currently
relies on undefined behavior as reported by ubsan
Copy file name to clipboardExpand all lines: README.md
+18-8Lines changed: 18 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -133,33 +133,43 @@ Please read through README.orig to see the original text, especially as this is
133
133
### Goals
134
134
Some goals for the future of this fork (in no particular order):
135
135
1. Modernize codebase (Drop obsolete hacks, attempt to make future maintenance easier)
136
-
2. Add primitives to facilitate use as a glue language or midway point between POSIX `sh` and "real" languages like Racket/C/Python, etc.
136
+
2. Add primitives to facilitate use as a glue language or midway point between POSIX
137
+
`sh` and "real" languages like Racket/C/Python, etc.
137
138
3. Work on making `nxes` tail recursive, this is mentioned in the original TODO (#2)
138
-
4. Add some basic history manipulation commands such as `!!` and `!-2$`in GNU `bash` to aid in productivity
139
+
4. Add some basic history manipulation commands such as `!!` and `!-2$`
140
+
in`csh` to aid in productivity
139
141
5. Allow subshells to inherit closures (#1 in original TODO)
140
142
6. Potentially expose `%parse`in such a way as to create a simple macro system
141
143
7. Simplify and streamline build process (remove ./configure, reduce needed system tests)
142
144
8. Look at moving away from Yacc/Bison for writing the lexer/parser
143
145
9. Allow fornested lists,in turn allowing for trees and other derived data structures
144
146
10. Look into creating a `printf(1)`builtinfor more complex printing needs than just `$&echo`
145
-
11. Consider changing variable/function binding syntax using more LISP-like forms, this would free up `=` from being a special character, which should make flags requiring '=' (e.g. `clang -std=c99`) more ergonomic than with the current parsing grammar. (having to do`'='` or similar)
146
-
12. Flesh out job control mechanism, support exists for creating new process groups and background execution, but no means to switch from background to foreground currently exists
147
+
11. Consider changing variable/function binding syntax using more LISP-like forms (e.g. `def x 2`),
148
+
this would free up `=` from being a special character, which should make flags requiring '='
149
+
(e.g. `clang -std=c99`) more ergonomic than with the current parsing grammar.
150
+
(having to do`'='` or similar)
151
+
12. Flesh out job control mechanism, support exists for creating new process groups
152
+
and background execution, but no means to switch from background to foreground currently exists
147
153
13. Remove the dependency on GNU readline or libedit for common features like tab completion,
148
154
making them optional for those who have a custom `.inputrc` that I have no intent to support.
149
-
14. Investigate hashing methodology, consider something like FNV-1/FNV-1a hashing
155
+
14. Investigate hashing methodology, consider something like FNV-1/FNV-1a/XXHash hashing
156
+
15. Examine how difficult adding floating-point support is for numeric computations, this
157
+
allows for significantly more potential uses, but adhering to IEEE 754 and making it user friendly
158
+
enough to be used may not be worthwhile for a shell.
150
159
151
160
Some non-goals:
152
161
1. Become a strict, functional programming language
153
162
2. Become a lazy, functional programming language
154
163
3. Rewrite in Rust or other language (maybe some day, but this is not a goal)
155
-
4. Become feature compatible with GNU `bash` (or really any other shell, some features are nice, but let's keep things small)
164
+
4. Become feature compatible with GNU `bash` (or really any other shell,
165
+
some features are nice, but let's keep things small)
156
166
157
167
## See Also
158
168
Unbeknownst to me, there are actually several forks with varying activity, including one by
159
-
the user [wyrun](https://wyrun.github.io/es-shell/) that appears to be dedicated to preserving
169
+
the user [wryun](https://wryun.github.io/es-shell/) that appears to be dedicated to preserving
160
170
the history of `es(1)` while also working on some enhancements.
161
171
162
-
According to GitHub, there are at least [18 forks](https://github.com/wyrun/es-shell/network/members) of this repo alone.
172
+
According to GitHub, there are at least [18 forks](https://github.com/wryun/es-shell/network/members) of this repo alone.
163
173
While I continue work on `nxes(1)` as time permits, those interested in command interpreters
164
174
may also want to check out these projects for some possible inspiration or even a starting
0 commit comments