✨Sneak Preview✨
WebForge 1.3 will introduce, for the first time on iOS, a stepping debugger for NodeJS!
Add breakpoints to files or use the debugger keyword and step through your code. Browse active call frames, and inspect properties. All running locally.
Join the beta to try it now: https://t.co/VRaefvEDgR
I suggest changing tenses with every commit:
Past Progressive: "Was adding coverage."
Past Perfect: "Had added coverage."
Past Perfect Progressive: "Had been adding coverage."
Past Emphatic: "Did add coverage."
Present perfect: "Has added coverage"
Present progressive: "Is adding coverage"
Keeps things interesting.
The app runs a webserver, so you can use the site in iOS Safari, however iOS's process management means the server is often paused when WebForge is in the background.
That's why WebForge includes a built-in browser, so you won't be interrupted. The built-in browser uses the same rendering engine as Safari, so everything will look the same, and adds the extensive suite of browser dev tools from @inspectwebdev
Coming Soon!
We've been working hard on improving the NodeJS plugin, and we're proud to say the next update will add support for @vite_js, running entirely on-device!
This brings many upgrades to child processes, adds WebAssembly, and adds native Esbuild support. Just to name a few!
We'd also like to say, after stepping through Vite and Esbuild almost line-by-line during this process - wow - amazing work by these projects!
WebForge v1.1 is well underway - first beta submitted for review this morning. This update includes a SQLite database editor, JSHint customization, and file templates. Coming soon!
SQLite plugin coming along well! Properly shows results and allows you to run any query you like. We have a few more convenience features to add and then it's off to our wonderful beta testers.
What features would you like to see?
Working on a SQLite database plugin that will allow you to easily inspect and edit database files, right alongside other project files. Coming soon but more work to be done - tough to get right for all platforms! #buildinpublic
One the the improvements we've made to v1.0.1 is PHP thread safety. It sounds great, yes, but what is it?
A quick explanation:
WebForge features a built-in webserver to serve your projects to the built-in browser (your own little world...). Some traditional webservers are multi-process, creating a new process for each request. This keeps everything (memory, resources, etc) nicely separated.
However, iOS apps are restricted to one process, so this approach is not an option. The good news is, apps can (and very frequently do!) use multiple threads. We built the WebForge webserver therefore to be single-process, but multi-thread, creating a new thread for each request.
While this allows requests to be handled concurrently, it presents a problem when you have a library that uses global resources (like PHP), as threads don't have the same resource separation as processes. You therefore run into conflicts between requests. At best you leak information between requests, at worst you crash.
Enter PHP ZTS (Zend Thread Safety). This option allows PHP to separate it's global resources in a thread-safe way, providing the separation needed to operate in a single process, multithread environment.
With v1.0.1 we've enabled PHP ZTS and implemented it in the PHP plugin. This means scripts can execute concurrently ex. multiple PHP-powered images in a page, or a script requesting another using cURL (another thing we added!), without leaking data or crashing the app.
Just one more step to the best option for PHP development on iOS.