ruby / ruby.wasm

ruby.wasm is a collection of WebAssembly ports of the CRuby.
https://ruby.github.io/ruby.wasm/
MIT License
640 stars 52 forks source link

Gems with native extensions #453

Open danini-the-panini opened 2 months ago

danini-the-panini commented 2 months ago

Can we use gems with native extensions? I've read somewhere that it is possible, and it makes sense for it to be possible. However, I'm struggling to get even a basic example to compile. There doesn't seem to be any documentation as to how to set it up.

If I try statically linking, I get the error "Could not create Makefile due to some reason". Checking the mkmf log does not yield any useful information.

If I try dynamically linking with RUBY_WASM_EXPERIMENTAL_DYNAMIC_LINKING, I get the error ld: unknown option: -Xlinker

I've created a minimal repo to test: https://github.com/danini-the-panini/rbwasm-foo

If it makes a difference, I'm running on Apple silicon.

danini-the-panini commented 2 months ago

Ok I tried on linux x86_64 and I get the same errors, although the dynamic linking says ld: Error: unable to disambiguate: -Xlinker (did you mean --Xlinker ?)

kateinoigakukun commented 2 months ago

It's still experimental, and I need to do some upstreaming works. Stay tuned 😉

danini-the-panini commented 2 months ago

ok, is there any way I can help?

kateinoigakukun commented 2 months ago

Blockers

rubyFeedback commented 1 month ago

Being able to use native extensions would be pretty great. I picture being able to use libui-ng (the ruby bindings of it) as well as glimmer, for some kind of unified GUI that also extends into the world wide web (aka one code base, to use GUIs even for web-applications, writing the underlying code only once, and then having it work on ALL the platforms, including web-related use cases). This may also be great if jruby works on that, then we can also have e. g. swing-GUIs, so ... GUIs galore.

Largo commented 1 month ago

Being able to use native extensions would be pretty great. I picture being able to use libui-ng (the ruby bindings of it)

I think LibUI hooks into windows/linux/OSX code, so that doesn't seem possible? If you want to make GUIs, you can see my examples and use html and css. If you want to talk more about this, we can do it on the discussion tab.