Introduce a new built-in "io" module exposing a File class with a static size(path) method that performs asynchronous filesystem stat via libuv. The method uses a foreign function startSize_ to initiate the stat request and resumes the calling fiber through the scheduler upon completion. Extend the scheduler with schedulerResumeDouble and schedulerResumeString to support resuming fibers with numeric or string results. Include the generated io.wren.inc source, update the Xcode project to compile io.c and io.wren.inc, register the module in modules.c, and add a test file verifying synchronous-style async size calls and error handling.
This contains the Wren source code. It is organized like so:
-
cli: the source code for the command line interface. This is a custom exectuable that embeds the VM in itself. Code here handles reading command-line, running the REPL, loading modules from disc, etc. -
include: the public header directory for the VM. If you are embedding the VM in your own application, you will add this to your include path. -
module: the source code for the built-in modules that come with the CLI. These modules are written in a mixture of C and Wren and generally use libuv to implement their underlying functionality. -
vm: the source code for the Wren VM itself. Unlike code incliandmodule, this has no dependencies on libuv. If you are embedding the VM in your own application from source, you will compile the files here into your app.