It kind of blew my mind as an engineer to see it work, and know all the layers that had to interact for that to happen.
It's fun to see it blowing up on HN 6 months later! :) Thank you to everyone for checking it out.
It kind of blew my mind as an engineer to see it work, and know all the layers that had to interact for that to happen.
It's fun to see it blowing up on HN 6 months later! :) Thank you to everyone for checking it out.
But, wondering about something -- poking around in the code a bit, and realizing I know next to nothing about present-day php, I realized this may be not using the "traditional" SQLite-over-OPFS approach to get persistence?
Actually, after a bit more reading it's not clear to me that persistent storage is available yet via Emscripten.
And after yet more poking around I found: https://github.com/WordPress/wordpress-playground/issues/19 which I guess means that persistence isn't yet possible for WP in the browser :(
> OPFS is only supported in Chrome-based browsers at the moment like Edge, Android browser. Safari and Firefox users won't be able to benefit from this feature yet
Persistent Playground: Sync between MEMFS and OPFS - https://github.com/WordPress/wordpress-playground/pull/546
There's a third option supported only in Chrome at the moment which loads a directory from your computer's filesystem, bypassing even OPFS.
> using OPFS directly from SQLite doesn't work?
not entirely following your question. any way you could reword and explain what you were hoping to accomplish?
I'm guessing this means using SQLite WASM's built-in OPFS integration as described in these articles:
- sqlite3 WebAssembly documentation - Persistent Storage Options: OPFS - https://sqlite.org/wasm/doc/trunk/persistence.md#opfs
- SQLite Wasm in the browser backed by the Origin Private File System - https://developer.chrome.com/blog/sqlite-wasm-in-the-browser...
Within the Playground, SQLite interacts with the database file in MEMFS only, and the Playground coordinates the syncing from MEMFS to OPFS.
https://github.com/WordPress/wordpress-playground/tree/trunk...
The reason for this, I believe, is that the primary use case is/was to have the entire file system in memory, including SQLite's database file. This was the original implementation, and is still the default behavior. Persistence was later added as an optional feature.
The good news is that browser support for OPFS seems to be getting better. From the SQLite docs:
As of March 2023 the following browsers are known to have the necessary APIs:
- Chromium-derived browsers released since approximately mid-2022
- Firefox v111 (March 2023) and later