Specification for the JavaScript shell
Author: Vladimir Livshits

### Object hierarchy for JS Shell:

System
Methods `chdir` `pipe` `script` `exit` `system` `gc` `call (executes an external script)` `use (make methods of the script you pass available. I.e. if you say use('Foo','Bar'), you can now call Foo.f() and Bar.f(). Foo.eval() will evaluate all the code)` Properties `stdout` `stdin` `stderr` `platform ('PC', 'UNIX', 'MAC')` `ARGV (arguments passed to the script)` Notes: `pipe` works like backticks in Perl; `script` works the other way around, that is, you give it an array and it feeds the array to the executable you specify (somewhat similar to the script command on `UNIX`).
Environment
Properties All environment variables become properties of `Environment`. Assigning to them actually changes the environment.
File
Properties `currentDir` `length` `parent` `path` `name` `isDirectory` `isFile` `exists` `canRead` `canWrite` `opened` `type` `mode` `creationTime` `lastModified` `size` `randomAccess` `position` | Methods `open` `close` `remove` `copyTo` `renameTo` `flush` `skip` `read` `readln` `readAll` `write` `writeln` `writeAll` `list` `mkdir`
(Henri's stuff)