Why a version change?
> This minor version change should not introduce breaking changes, but older code doing non standard things with process environments, `require` and the package library, shebang redirections, or direct calls to /bin/lua, may see some breakages. Also, `shell.resolve` has been fully reworked. This is a crucial and heavily used api. Thus, in case of any mistakes or bugs a version change will help pinpoint regressions. I've heavily tested the resolve code, but it is new code and deserves some bake time in the wild.
Changelog:
/bin/lua removes shebang line and calls load directly. Improves workflows that define custom environments, and loadfile no longer removes shebang lines
load: loaded code chunks now inherit the parent _ENV naturally, having a real-lua behavior
require: heavily optimized and made errors more natural and helpful, exposing more information about failure to require a library
/lib/pipes: commented out pipes.create which is a future feature to create event-boxed threads
process: more process crash text is dumped to the shell to help identify "out of memory" issues
shell.resolve: reworked and optimized! possibly breaking change: specifying an extension (ext) to `shell.resolve(name, ext)` will no longer return results to directories, but only files (if they exist). However, it was never the intent of this method to return results to directories when specifying an extension
various memory optimizations throughout. openos now allocates ~153k to boot to shell.
hostname in PS1 cannot be set by the init signal as that occurs before /etc/profile, which overrides PS1
Also, clean up some code to not try to change PS1, but just change HOSTNAME
Added `hostname --update` to update $HOSTNAME by reading /etc/hostname again
notable changes
### TTY
New /lib/tty library that provides the core readKeyboard and drawText functionality. /lib/term should still be used by user code and the tty api should be considered alpha. The intent in this separation of the code is to allow term api to remain unchanged and allow tty to adapt as improvements are made.
### delayloaded and now splitting
The delayloaded packaging system has been removed. The delayload system allowed for library object to appear loaded when in fact they were not. But this significantly increased boot time. The code now imploys "library splitting", saves tremendous memory, shortens boot time, and all libraries are fully usable even when partially loaded. In other words, it is all transparent to the user.
### boot memory cost
Numerous micro optimizations have been made. "boot to shell prompt" now idles at 156k allocated, or 40k free, up from ~26k free before this change. Yes, that's 14k less in this update.
.shrc -p: show dir slash by default
event registration was incorrectly calling timers and unregistering
term handler for enter key fixed to use code instead of sym
ls fixed to respect -p for all dirs
The function object can be called to read from the stream, same usage as before
But the object also exposes the request handle userdata, to allow calling close for example:
```
local request = require("internet").request("http://www.google.com")
print(request()) -- same as before
request:close() -- clean up resources now, as opposed to waiting for gc
```
closes#2255