On Wed, Mar 23, 2016 at 03:05:08PM +0100, Ludovic Courtès wrote: > Efraim Flashner skribis: > > > On Mon, 21 Mar 2016 23:27:25 +0100 > > ludo@gnu.org (Ludovic Courtès) wrote: > > > >> Hi Efraim, > >> > >> Thanks for your proposal! > >> > >> This project can be pretty fun, I think, and quite rewarding if it > >> indeed allows us to get rid of a bunch of bootstrap binaries. > >> > >> As I see it, the project covers mostly two areas: > >> > >> 1. Lexing & parsing. This compiler front-end will need a real parser > >> for the Bourne shell syntax, notably semicolon-separated command > >> sequences, pipes, brace-delimited blocks, functions, variables, and > >> ‘test’ and ‘[’. > >> > >> The available tools could be SILex + (system base lalr) (the latter > >> is part of Guile, the former is maintained separately; a copy can > >> be found in Guile-RPC for instance.) > >> > >> 2. Run-time support: redirections, pipes, background execution, C-c > >> (SIGINT) and C-z (SIGTSTP), globbing, and so on. > >> > >> Guile provides just the basic here, and a little more with (ice-9 > >> popen). Scsh and its Guile port(s) provide a lot of that, so it > >> might be a good idea to see what can be stolen from these. > >> > >> It may be that some of your CS classes cover some of this ground (a > >> fairly common programming project here at university is to implement a > >> small shell precisely because it covers several areas.) > >> > >> How does that sound? > >> > >> Perhaps one way to get started would be by looking at the available > >> tools for #1, and experimenting with hacks for #2, possibly borrowing > >> code from Scsh. > >> > >> Thoughts? > > > > Sounds like lots of fun, I'm really looking forward to it. And it sounds like > > I'll need to dive deeper into bash to see what I get to implement > > I guess a related question is how confident/familiar you feel with the > two areas above. The agenda could be adjusted as a function of that. > > Thanks, > Ludo’. I feel pretty confident about the lexing and parsing; not too sure what would go into implementing the run-time support. To summarize a bit, there are two mostly overlapping parts here, one more busybox-esque where we can drop bootstrap binaries, and a second with a shell implemented in guile. At this stage I have more in the confidence/excitement side and less on the familiarity side. -- Efraim Flashner אפרים פלשנר GPG key = A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351 Confidentiality cannot be guaranteed on emails sent or received unencrypted