Pagghiu / SaneCppLibraries

Sane C++ Libraries
https://pagghiu.github.io/SaneCppLibraries
MIT License
507 stars 11 forks source link

Web Support Timeline? #21

Open FaultyPine opened 1 month ago

FaultyPine commented 1 month ago

Hey! Really loving the direction of this library so far. I see in Platform.h that web/emscripten/wasi support is "planned" and that there are a few references to it throughout the codebase. What does the timeline look like on web support? Is that the current focus? Or is that much farther out?

Pagghiu commented 1 month ago

Hi @FaultyPine thanks for your words of appreciation for the project! 😄

In the first phases of development emscripten was an officially supported target, so I am pretty confident that all of the core non os specific stuff (Foundations / Containers / Threads / Serialization / Reflection) should not have many problems on that target. Things may have had some minor regressions due to not testing it of course, but that's easy to fix.

Later on I have been giving up on emscripten to increase the development speed and also because I wasn't sure exactly about how some libraries should behave on web targets. Some libraries make absolutely sense to port (SC::Async, SC::Socket), others are probably more difficult to port (SC::Plugin?) and for some I have no idea of the equivalent web tech they could be mapping to (SC::FileSystem, SC::FileSystemIterator, SC::FileSystemWatcher) and I need to figure out the right web APIs to use if they even exist.

Wasi is a different beast as I'm not up to date with the latest defined syscalls and maybe there are many libraries that could be compiled for wasi, but I need to figure it out as well.

I could definitively put together a small emscripten and / or wasi CI build and start keeping track at least of what works and what doesn't work. This would mean adding support for that in SC::Build but maybe the Makefile target could make it not so hard to do! 😆

I have a few questions for you (or for anybody else that may be reading this issue):