I see... yeah, mixing and matching object files from different toolchains is not guaranteed to work. They need C ABI compatibility, I'm afraid.
It is a little sad to need separate runtimes, though, so I hope we can find a way to avoid that for you. What is the specific code that would be different between the two runtimes? On Thu, Feb 10, 2022 at 5:23 AM yowl yowlxx <scottw...@gmail.com> wrote: > " (Of course, header constants *can* be an issue if you link wasm object > files together that were built using different SDKs or even different > versions of the same SDK.)" > > Yes, that is what I naively tried to do. The CoreCLR runtime is compiled > using emscripten's SDK, but I wanted to link it with the WASI SDK libc++ to > get file open support. What I'll probably have to do in the long run is > have two CoreCLR runtimes, one for Emscripten and one for WASI SDK. > > On Mon, 7 Feb 2022 at 14:39, Alon Zakai <alonza...@gmail.com> wrote: > >> Header constants like O_CREAT should not be a problem between wasm and >> the host. WASI defines a very clear API between wasm and the runtime, and >> those constants are not part of it. That is, "wasi-sdk host" is a confusing >> way to put it: there are VMs with WASI support, but they are not tied to >> the wasi-sdk toolchain, which is just one toolchain that emits WASI. >> >> (Of course, header constants *can* be an issue if you link wasm object >> files together that were built using different SDKs or even different >> versions of the same SDK.) >> >> Emscripten could add more complete WASI support, if that were useful - >> it's just a matter of implementing the APIs. PRs would be welcome! >> >> >> >> On Sat, Feb 5, 2022 at 9:59 AM scot...@gmail.com <scottw...@gmail.com> >> wrote: >> >>> My own observations mixing Emscripten and WASI-SDK are that some >>> constants, e.g. `O_CREAT` are different in Emscripten (0x64) to Wasi-SDK >>> (0x10000000). Allowing emscripten to build something that would run under >>> a wasi-sdk host, like wasmtime, is tricky - I think. >>> >>> On Friday, December 17, 2021 at 8:01:14 AM UTC-5 Floh wrote: >>> >>>> Ah alright, that toolchain file looks a lot simpler (it's under >>>> "share/cmake" in the SDK download). I'll use that as base for my own cmake >>>> toolchain file instead. Thanks! >>>> >>>> On Thursday, 16 December 2021 at 21:18:46 UTC+1 s...@google.com wrote: >>>> >>>>> On Thu, Dec 16, 2021 at 5:53 AM Floh <flo...@gmail.com> wrote: >>>>> >>>>>> > Unless you plan to run those tools on the web then I think wasi-sdk >>>>>> is most likely the way to go. How do you plan to run the binaries BTW? >>>>>> >>>>>> Currently I'm using wasmtime. >>>>>> >>>>>> I was actually successful to build my shader compiler through >>>>>> wasi-sdk, and run it through wasmtime, the file system access worked as >>>>>> expected. >>>>>> >>>>>> Installing the wasi-sdk is just downloading and unpacking somewhere >>>>>> (e.g. no env-variables or search path updating needed), and then I >>>>>> created >>>>>> a cmake toolchain file which looks a lot like my Emscripten toolchain >>>>>> file, >>>>>> but with all the Emscripten-specific parts removed: >>>>>> >>>>>> >>>>>> https://github.com/floooh/fips/blob/master/cmake-toolchains/wasisdk.toolchain.cmake >>>>>> >>>>> >>>>> FYI wasi-sdk includes a cmake toolchain fail upstream: >>>>> https://github.com/WebAssembly/wasi-sdk/blob/main/wasi-sdk.cmake >>>>> >>>>> Maybe we forgot to include it in the download? But it should be >>>>> usable I think. >>>>> >>>>> >>>>>> The only problem (vs the Emscripten SDK) was that the wasi-sdk >>>>>> doesn't come with pthread headers/stubs, so I had to tinker a bit with >>>>>> the >>>>>> glslangValidator source code (which for some reason needs thread-local >>>>>> data >>>>>> and mutexes, but then doesn't actually spawn any threads). >>>>>> >>>>>> The popen() calls (to run native Metal or D3D shader compiler >>>>>> executables) simply seem to fail at runtime (which I'm already handling >>>>>> in >>>>>> my code). >>>>>> >>>>>> All in all pretty smooth sailing, at the moment it's just an >>>>>> experiment though, but a promising one :) >>>>>> >>>>>> >>>>>> On Tuesday, 14 December 2021 at 23:41:10 UTC+1 s...@google.com wrote: >>>>>> >>>>>>> On Tue, Dec 14, 2021 at 9:28 AM Floh <flo...@gmail.com> wrote: >>>>>>> >>>>>>>> Oki doki, thanks for the clarification. I just wanted to check if >>>>>>>> I'm missing something, using the wasi-sdk makes sense in that case. >>>>>>>> >>>>>>>> Maybe my use case helps a bit to prioritize "proper" WASI support a >>>>>>>> bit :) >>>>>>>> >>>>>>>> I basically want to replace native command line tools (in my case: >>>>>>>> a shader compiler built out of the the Khronos GLSL compiler, >>>>>>>> SPIRVTools >>>>>>>> and SPIRVCross) with a WASI version, because right now I need to build >>>>>>>> this >>>>>>>> tool in 4 variants (Windows x86_64, Linux x86_64, macOS x86_64 and >>>>>>>> macOS >>>>>>>> arm64) and then "distribute" the binaries through a git repository. My >>>>>>>> plan >>>>>>>> is to replace this with a single WASI binary (building on the target >>>>>>>> machine is also not an option because these are complex C++ >>>>>>>> dependencies >>>>>>>> which can take up to 15 minutes to build). >>>>>>>> >>>>>>> >>>>>>> Unless you plan to run those tools on the web then I think wasi-sdk >>>>>>> is most likely the way to go. How do you plan to run the binaries BTW? >>>>>>> >>>>>>> >>>>>>>> >>>>>>>> One missing piece in the WASI API is popen() support though. The >>>>>>>> shader compiler optionally needs to run the proprietaty D3D and Metal >>>>>>>> shader compilers to generate shader binary blobs. Not sure yet how I'll >>>>>>>> tackle that eventually, but a WASI executable which just generates >>>>>>>> shader >>>>>>>> source code (not binary blobs) would be a good start nonetheless. >>>>>>>> >>>>>>>> Cheers! >>>>>>>> -Floh. >>>>>>>> >>>>>>>> On Tuesday, 14 December 2021 at 17:43:10 UTC+1 s...@google.com >>>>>>>> wrote: >>>>>>>> >>>>>>>>> The standalone/wasi support in emscripten is very basic and >>>>>>>>> doesn't have full fileystem support yet. I would certainly >>>>>>>>> recommend using wasi-sdk if you want to run something on wasmtime. >>>>>>>>> >>>>>>>>> If I ever get around to landing this PR then a lot more of the FS >>>>>>>>> stuff might start working: >>>>>>>>> https://github.com/emscripten-core/emscripten/pull/12704. But >>>>>>>>> this has not been a priority recently. The interesting part for me >>>>>>>>> would >>>>>>>>> be that it might allow existing WASI applications to be run in the JS >>>>>>>>> glue >>>>>>>>> code. i.e. take a pre-built wasi module and run `emcc --post-link` >>>>>>>>> to run >>>>>>>>> on the web. >>>>>>>>> >>>>>>>>> On Tue, Dec 14, 2021 at 6:45 AM Floh <flo...@gmail.com> wrote: >>>>>>>>> >>>>>>>>>> I'm currently tinkering with Emscripten's WASI output and can't >>>>>>>>>> get filesystem access to work. In short, everything compiles, but >>>>>>>>>> then when >>>>>>>>>> running via: >>>>>>>>>> >>>>>>>>>> wasmtime --dir . bla.wasm >>>>>>>>>> >>>>>>>>>> ...all filesystem operations fail. >>>>>>>>>> >>>>>>>>>> When compiling with the clang included in the wasi-sdk it works >>>>>>>>>> as expected. Is this something that can be easily fixed or worked >>>>>>>>>> around on >>>>>>>>>> my side, or should I switch to the wasi-sdk instead? >>>>>>>>>> >>>>>>>>>> Thanks! >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> -- >>>>>>>>>> You received this message because you are subscribed to the >>>>>>>>>> Google Groups "emscripten-discuss" group. >>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>>>> send an email to emscripten-disc...@googlegroups.com. >>>>>>>>>> To view this discussion on the web visit >>>>>>>>>> https://groups.google.com/d/msgid/emscripten-discuss/527adec2-ee4d-44f3-a783-ce901632c30cn%40googlegroups.com >>>>>>>>>> <https://groups.google.com/d/msgid/emscripten-discuss/527adec2-ee4d-44f3-a783-ce901632c30cn%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>>>> . >>>>>>>>>> >>>>>>>>> -- >>>>>>>> You received this message because you are subscribed to the Google >>>>>>>> Groups "emscripten-discuss" group. >>>>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>>>> send an email to emscripten-disc...@googlegroups.com. >>>>>>>> >>>>>>> To view this discussion on the web visit >>>>>>>> https://groups.google.com/d/msgid/emscripten-discuss/17b87056-ad33-404a-850b-141028b20f43n%40googlegroups.com >>>>>>>> <https://groups.google.com/d/msgid/emscripten-discuss/17b87056-ad33-404a-850b-141028b20f43n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>>>> . >>>>>>>> >>>>>>> -- >>>>>> You received this message because you are subscribed to the Google >>>>>> Groups "emscripten-discuss" group. >>>>>> To unsubscribe from this group and stop receiving emails from it, >>>>>> send an email to emscripten-disc...@googlegroups.com. >>>>>> >>>>> To view this discussion on the web visit >>>>>> https://groups.google.com/d/msgid/emscripten-discuss/484d2d4a-fd79-42a5-b9f7-90cc39b5cce8n%40googlegroups.com >>>>>> <https://groups.google.com/d/msgid/emscripten-discuss/484d2d4a-fd79-42a5-b9f7-90cc39b5cce8n%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>>> . >>>>>> >>>>> -- >>> You received this message because you are subscribed to the Google >>> Groups "emscripten-discuss" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to emscripten-discuss+unsubscr...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/emscripten-discuss/67a4ca70-36e3-47a5-879c-f4ca6df0d282n%40googlegroups.com >>> <https://groups.google.com/d/msgid/emscripten-discuss/67a4ca70-36e3-47a5-879c-f4ca6df0d282n%40googlegroups.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "emscripten-discuss" group. >> To unsubscribe from this topic, visit >> https://groups.google.com/d/topic/emscripten-discuss/a97HaictQLo/unsubscribe >> . >> To unsubscribe from this group and all its topics, send an email to >> emscripten-discuss+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpQ7uW5SZhsrqfi0HFptrsv87QnTzaOixr3L0J26kxJ0GA%40mail.gmail.com >> <https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpQ7uW5SZhsrqfi0HFptrsv87QnTzaOixr3L0J26kxJ0GA%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- > You received this message because you are subscribed to the Google Groups > "emscripten-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to emscripten-discuss+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/emscripten-discuss/CADJ3TLdKqmSEsWZ6_TY4Ef9semHv11ousfda_FbX9Jmiow5XJg%40mail.gmail.com > <https://groups.google.com/d/msgid/emscripten-discuss/CADJ3TLdKqmSEsWZ6_TY4Ef9semHv11ousfda_FbX9Jmiow5XJg%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to emscripten-discuss+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/CAEX4NpTr6sz-b4u1DUg%2BCkD9bZ1jX_cFfRXk9xFAvLGGdHJ98Q%40mail.gmail.com.