Replace the socket-based communication backend with an sqlite3 database backend, removing all socket-specific platform includes and data structures. Refactor the Socket class API from instance methods to static foreign methods, introducing SocketInstance wrapper class for fiber-based async operations. Update example files to use new API and increase sqlite performance test insert count from 1000 to 100000.
Add a new Crawler class in crawler.wren that manages a URL queue, tracks visited pages, throttles concurrent requests to a maximum of 10 in-flight connections, and processes responses with error handling and status code validation. The crawler uses a fiber-based event loop that yields to the C host until all crawling is complete, then signals completion with duration and page count statistics.
Implement asynchronous HTTP request infrastructure for the Wren scripting language, including a thread pool with 4 worker threads, request/response queue management, and foreign function bindings for Wren callbacks. Add Response class with foreign methods for error status, status code, body, and JSON access. Include Requests class with static get/post methods that validate callback arity and delegate to foreign implementations. Integrate libcurl-based backend with thread-safe queue operations and platform-specific threading primitives (pthreads on Unix, Windows threads on Win32). Add Makefile targets for building the wren executable with libcurl, pthread, and math library dependencies.