Add a FileReqData struct that holds both the fiber reference and the uv_buf_t buffer, storing it in the public uv_fs_t::data field instead of relying on the private libuv fs.info.bufs field. This change modifies createRequest to allocate extra memory for FileReqData alongside the uv_fs_t struct, updates freeRequest to extract the fiber from the new struct, and adjusts fileReadBytesCallback to retrieve the buffer from FileReqData rather than the deprecated internal field.
Add Visual Studio 2013 solution and project files under util/msvc2013/ for both wren CLI and wren_lib static library, including proper source file filters and include paths. Update .gitignore to allow the new project directories while still ignoring Debug/Release outputs. Fix io.c to include <fcntl.h> on _WIN32 for O_RDONLY definition, replace S_IRUSR with 0 for cross-platform uv_fs_open compatibility, and correct uv_buf_t access to use request->fs.info.bufs for libuv API changes. Remove references to wren_io.c and wren_meta.c from the library project, replacing them with wren_opt_meta.c and wren_opt_random.c from the new optional source directory.
The previous implementation used shutil.rmtree with a custom error handler to
handle read-only files on Windows, but this approach was unreliable. The new
remove_dir function uses the Windows 'rd' command for directory removal on
Windows systems, which handles read-only files correctly, while falling back
to shutil.rmtree on other platforms.
The timerGetSource function allocates a buffer and copies the source string using strncpy, which does not guarantee null termination when the source length equals the buffer size. This change explicitly sets the final character to '\0' to prevent potential buffer over-reads or undefined behavior when the returned string is used by callers.
Add libuv release library directory to LibraryPath for both Debug and Win32 configurations in wren.vcxproj. Include timer.c and timer.h source files in the project filters. Extend AdditionalIncludeDirectories with cli, module, and libuv include paths. Implement rmtree_onerror handler for permission-safe directory cleanup in libuv.py, and enable Windows libuv build via vcbuild.bat.