@sebsauvage agreed. #SQLite getting incredibly popular for all kinds of use cases. And including production DB at relatively high scale too.
What popped up in my head as an extension of this thought experiment, having taken an interest for #WebAssembly (server-side Component Model + #WASI) was SQLite + #Wasm ..
The Go compiler now supports Wasm with the WASI ABI. It still produces quite heavy modules and it’s kind of slow. TinyGo remains a best option, https://tinygo.org/.
Looking for a little light travel reading on the way to #wasmcon?
Consider "Understanding WASM, part 3: You Are Here"! It's a deep dive on system interfaces: what they are, their history, and what WASI might mean for them.
Today I get to revisit an old service - my very first WASI implementation where a Go app hosts a #wasi runtime that executes WASM scripts written in Rust. It dates back to v1 of https://wasmer.io. The goal is to try and make a Swift snippet compile to #wasm in a way that can run inside the runtime.
" This roadmap reflects changes occurring in standards within the WebAssembly Community Group (CG) and the #WASI Subgroup within the #W3C. This includes WebAssembly Core, WebAssembly Component Model, WASI (WebAssembly System Interface), and a number of WASI-based interfaces. "
@palash Goroutines certainly work on #wasm, I use them a lot. They are just single threaded, but "concurrency is not parallelism", so it shouldn't affect how you write code.
Plus, if you have troubles with the #golang scheduler, you can always try #tinygo.
Goroutines use "cooperative multitasking", they release control back to the scheduler when they are blocked or a certain amount of calls (what Erlang calls "reductions") passed since the last release.
You can do system calls only with #WASI which will be available only in #golang 1.21. You cannot do system calls from the browser (GOOS=js) for safety reasons. You can, however, use WebAPI to do network calls, and then you work with JS promises:
One of the things I'm really excited for in #WASI is the ability to virtualize any API. This includes the filesystem API, which will be useful for connecting filesystem-using application code to many different host APIs.
I guess what Hixie is proposing is not in line with direction you wanna give to your browser impl? Not sure. But this intriguing. For a different project I've been looking a bit into - what I call a "#WebAssembly. Everywhere." paradigm shift based on #WASM, #WASI and Component Model.
(Very much in 'hype cycle' stage for early adopters with growing attention in corporate world. Not so much so in #FreeSoftware circles yet)
WebAssembly: An Updated Roadmap for Developers (bytecodealliance.org)
If you're interested in developments in the webassembly and related specifications, the recently updated roadmap is a great read.