3 ms·
Their github may be more informative. https://github.com/plasma-umass/browsix https://github.com/plasma-umass/browsix Seems they are using web workers to impl
by digi_owl 10y ago
Their github may be more informative.
https://github.com/plasma-umass/browsix https://github.com/plasma-umass/browsix
Seems they are using web workers to implement a POSIX environment.
And their shell demo do not even support cd(!).
- jamescostian 10y agoIt seems they only have these binaries available on their shell demo: ``` $ ls /usr/bin cat cp curl echo exec grep head ld ls mkdir nice node rm rmdir sh sha1sum sort stat tail tee touch wc xargs ```
- userbinator 10y agoAnd their shell demo do not even support cd(!). That means their claim that "Unmodified C, C++, Go, and Node.js programs run as processes on Web Workers" ...is not true, as otherwise they could've just "compiled" e.g. bash or some other shell to run on their system, along with GNU coreutils or similar.
- roblabla 10y agoMy guess is, they can, it's just horrendously slow.
- nteon 10y agoThe shell is dash, compiled from C. We run each command as dash -c "$COMMAND" Processes can change their current directory (We support the chdir(2) system call), but the way the shell demo is currently implemented no state is retained between command invocations. We plan to address this shortcoming soon as part of a bigger TTY refactoring.
- chei0iaV 10y agoIt doesn't support a lot of very basic things, like variables $ TEST=1 $ echo $TEST $TEST Interestingly, in the example they show: $ cat README | while read L; do echo "README: $L"; done ...and yet: $ read L /usr/bin/read: command not found $ while true; do break; done /usr/bin/while: command not found $ echo "quotes" "quotes" Seems like a horribly backwards approach to implementing a posix shell...
- userbinator 10y agoThis is apparently the source code for it: https://github.com/plasma-umass/browsix/blob/master/src/bin/sh.ts https://github.com/plasma-umass/browsix/blob/master/src/bin/... It doesn't do much, and certainly does not qualify as being unmodified existing code (which is what this whole system is supposed to be able to run as one of its benefits.)
- nteon 10y agoThat was our first shell we used for debugging before we had emscripten working. The shell currently used in the demo is dash, compiled with emscripten: https://github.com/plasma-umass/browsix/blob/master/src/dash.js https://github.com/plasma-umass/browsix/blob/master/src/dash... Which ends up in the build through our gulpfile: https://github.com/plasma-umass/browsix/blob/master/gulpfile.js#L205 https://github.com/plasma-umass/browsix/blob/master/gulpfile...
- ris 10y agoSurely one can just compile bash for browsix though?
- ori_b 10y agoProbably not. If you read the source, This thing has no real idea of processes.
- deleted 10y ago[deleted]
- nteon 10y agoThat example is actually running dash - the Debian Almquist shell. The weirdness (and reason that cd + setting variables doesn't work) is because whenever you type a command in, it executes: $ dash -c '$COMMAND' Rather than having a long-running shell process listing to standard in. We plan to fix this and implement a full TTY subsystem in the next month or so.