-
Notifications
You must be signed in to change notification settings - Fork 11
Description
Overview
By default, deno_core only provides an embedded JavaScript runtime. This allows executing JavaScript code but provides no other utility functions besides the bare minimum. To ensure people can use this runtime to write their applications, the deno CLI also provides various interfaces like the filesystem and network, similar to what nodejs/browser runtimes provide.
To make sure our extensions can do meaningful work, we should provide some of this functionality too. Most of which can likely just be used from the deno CLI project directly, so no extra development effort is necessary.
Integration with the deno runtime can be seen in the CLI here. Most of the different extensions are provided as separate crates that can be included on demand.
Additionally the Deno standard library also provides bindings to this functionality, allowing for easy use without having to go through Deno abstractions. Providing this by default might be a nice thing to have, though loading these modules over the network is a possibility as long as the deno extensions necessary were added to the runtime.
Much of this functionality is not immediately necessary for our extensions, so the best approach is likely to incrementally add what is necessary, starting with basic functionality like filesystem/client networking.
Acceptance Criteria
- Load runtime extensions for at least file read/write, HTTP requests and console I/O
- Write examples/tests using these APIs with web/local deno STD
- Ensure binary size increase is within reasonable bounds