| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
|
Nice @jlongster What do you think @lovasoa? I'm excited about this PR on principle. |
Sorry, something went wrong.
|
Hello everyone! |
Sorry, something went wrong.
|
@lovasoa Any luck getting a new maintainer or a chance to review this? Would be a great to get these changes in so absurd sql could be used without using a forked version of sql.js |
Sorry, something went wrong.
|
@lovasoa could you please review it? This change will make a big move in using of sql.js for the web 🙏 |
Sorry, something went wrong.
|
Hey @lovasoa - is there any way I can help here? I can do a cursory review but I'm not deeply familiar with the internals of sql.js yet -- I hope to be there eventually. I'm interested in the future of sql.js as the developer and maintainer of https://aphrodite.sh/ (multi-platform / local-first ORM) |
Sorry, something went wrong.
|
considering that we now have https://github.com/whatwg/fs then i think indexeddb is rather 👎 |
Sorry, something went wrong.
|
@jimmywarting any idea on when StorageManager.getDirectory() will become available on Chrome for Android? This sounds extremely promising but I need mobile support. I couldn't find any mention of this in Chrome Platform Status or Issues - chromium. StorageManager API: getDirectory | Can I use... Support tables for HTML5, CSS3, etc |
Sorry, something went wrong.
Sorry, something went wrong.
|
i don't know. safari is actively working on whatwg fs behind a expe flag, but it sucks pretty much right now. You can only create folders and empty files. you can't read or write data to/from files atm. i haven't heard anything from FF yet. Anyway. i just learned that navigator.storage.getDirectory() is just an alternative new api for webkitRequestFileSystem(TEMPORARY, 0, success, fail) the benefit of using navigator.storage.getDirectory in web worker are that you can have both a async and sync variant |
Sorry, something went wrong.
you probably want to close this as dupl of https://crbug.com/1011535 |
Sorry, something went wrong.
|
also have a look at https://github.com/WICG/file-system-access/issues |
Sorry, something went wrong.
|
I considered closing it as a duplicate but then I realized that as the Origin Private File System requires no user interactions nor permission granting that it might be best to track it separately. I had not found that other crbug though. Thank you for all the links! |
Sorry, something went wrong.
|
I've built SQLite filesystems with both Origin Private File System access handles and IndexedDB. In my benchmarks OPFS was somewhat slower. This may in part be because I used non-synchronous access handles for reading database files (and synchronous handles for writing) to allow concurrent read access from multiple database connections, but is also because atomic commit and optional durability settings provide some implementation advantages for IndexedDB. That said, unless performance or browser support is the overriding priority, I would much rather write code for OPFS than IndexedDB. |
Sorry, something went wrong.
|
The file system standard looks like, but as far as I can tell from reading around the web, Firefox has no plans to implement support. For the moment, anyway, IDB seems to be the most compatible backend for SQL.js. Is this PR held up on review because of the file system access standard? |
Sorry, something went wrong.
|
Firefox has objections to the full File System Access API proposal, but has been more encouraging on the parts used for Origin Private File System, including the AccessHandle API (which is what Safari has implemented). Their implementation activity has stepped up in the last few weeks so it looks like they are actively working on at least trial support. |
Sorry, something went wrong.
|
Well that's very encouraging! |
Sorry, something went wrong.
|
Any news on this? https://caniuse.com/?search=opfs Apparently OPFS is avaliable on most browsers now and one intended use case is actually as storage for sqlite-wasm databases in web workers |
Sorry, something went wrong.
|
Both IndexedDB and OPFS access handles can be used for persistent SQLite storage in the browser. At the moment it appears that neither is clearly better than the other for this purpose; it depends on your application requirements.
|
Sorry, something went wrong.
Oh, that reminds me. I just recently wanted to port something NodeJS-ish that used sync node:crypto stuff to handle things to make it more cross env. friendly for Deno and web. so i wanted to switch it out to web crypto instead now that NodeJS has it too. But it was to annoying to switch the entire codebase to be async-ified and breaking all the existing tests so i built await-sync to make the process a bit easier to use. i think you @rhashimoto would maybe find this interesting and perhaps useful to transform async code to sync more easily. (a bit off topic, but i wanted to share it...) |
Sorry, something went wrong.
|
Following this one |
Sorry, something went wrong.
|
is it currently possible to save a sql.js db to opfs? |
Sorry, something went wrong.
| Back | FazBrowse Home | New Git URL |
This is (finally) a follow-up to my absurd-sql project I talked about here: #447 (comment)
These are the changes so far required to make it work. It's not a lot of changes, but there are several small things:
Normally, we could handle the fcntl system call at the FS layer. Unfortunately, right now emscripten doesn't provide a way to do that. If it did, we wouldn't need the last point. We might still want to override blockDeviceCharacteristics, but that could be an optional stop to improve performance. Right now it's critical so we get locking.
I've filed an issue with emscripten: emscripten-core/emscripten#15070. This PR could be simplified once we have that. Not sure if you want to wait on that to land this PR or now.
Anyway, I'm open to how you want to proceed. While absurd-sql is robust and ready for production (I'm using it in prod), the API and implementation here is somewhat proof of concept. Let me know what you think.