# Requirements for running non-rust wasm?

**URL:** <https://forum.dfinity.org/t/requirements-for-running-non-rust-wasm/71681>\
**Category:** Community Tutorials & Video\
**Created:** [June 14, 2026, 4:35pm UTC](https://forum.dfinity.org/t/requirements-for-running-non-rust-wasm/71681 "2026-06-14T16:35:18Z")\
**Posts on this page:** 1\
**Showing post:** 3

<div class="post-metadata">

**Author:** ![graial](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/graial/32/39419_2.png) [@graial](https://forum.dfinity.org/u/graial)\
**Post date:** [June 15, 2026, 2:35am UTC](https://forum.dfinity.org/t/requirements-for-running-non-rust-wasm/71681/3 "2026-06-15T02:35:37Z")

</div>

Greeting @mitnick2012 ! Thanks for the engagement and feedback!

Oof ya even the current releases of the wasmified ruby interpreter sit at 22Mb. so rails ain’t gonna fly. Even getting the ruby interpreter to run will be a challenge.

Here are the unsupported imports of ruby 3.3 (the version I was able to build with rails build): [https://github.com/ruby/ruby.wasm/releases/download/2.9.4/ruby-3.3-wasm32-unknown-wasip1-minimal.tar.gz](https://github.com/ruby/ruby.wasm/releases/download/2.9.4/ruby-3.3-wasm32-unknown-wasip1-minimal.tar.gz)

Does this list indicate **all imports**? Or only the **unsupported ones**?

> Module imports:  
> import “wasi\_snapshot\_preview1” “args\_get”  
> import “wasi\_snapshot\_preview1” “args\_sizes\_get”  
> import “wasi\_snapshot\_preview1” “environ\_get”  
> import “wasi\_snapshot\_preview1” “environ\_sizes\_get”  
> import “wasi\_snapshot\_preview1” “clock\_res\_get”  
> import “wasi\_snapshot\_preview1” “clock\_time\_get”  
> import “wasi\_snapshot\_preview1” “fd\_advise”  
> import “wasi\_snapshot\_preview1” “fd\_close”  
> import “wasi\_snapshot\_preview1” “fd\_datasync”  
> import “wasi\_snapshot\_preview1” “fd\_fdstat\_get”  
> import “wasi\_snapshot\_preview1” “fd\_fdstat\_set\_flags”  
> import “wasi\_snapshot\_preview1” “fd\_filestat\_get”  
> import “wasi\_snapshot\_preview1” “fd\_filestat\_set\_size”  
> import “wasi\_snapshot\_preview1” “fd\_pread”  
> import “wasi\_snapshot\_preview1” “fd\_prestat\_get”  
> import “wasi\_snapshot\_preview1” “fd\_prestat\_dir\_name”  
> import “wasi\_snapshot\_preview1” “fd\_pwrite”  
> import “wasi\_snapshot\_preview1” “fd\_read”  
> import “wasi\_snapshot\_preview1” “fd\_readdir”  
> import “wasi\_snapshot\_preview1” “fd\_renumber”  
> import “wasi\_snapshot\_preview1” “fd\_seek”  
> import “wasi\_snapshot\_preview1” “fd\_sync”  
> import “wasi\_snapshot\_preview1” “fd\_tell”  
> import “wasi\_snapshot\_preview1” “fd\_write”  
> import “wasi\_snapshot\_preview1” “path\_create\_directory”  
> import “wasi\_snapshot\_preview1” “path\_filestat\_get”  
> import “wasi\_snapshot\_preview1” “path\_filestat\_set\_times”  
> import “wasi\_snapshot\_preview1” “path\_link”  
> import “wasi\_snapshot\_preview1” “path\_open”  
> import “wasi\_snapshot\_preview1” “path\_readlink”  
> import “wasi\_snapshot\_preview1” “path\_remove\_directory”  
> import “wasi\_snapshot\_preview1” “path\_rename”  
> import “wasi\_snapshot\_preview1” “path\_symlink”  
> import “wasi\_snapshot\_preview1” “path\_unlink\_file”  
> import “wasi\_snapshot\_preview1” “poll\_oneoff”  
> import “wasi\_snapshot\_preview1” “proc\_exit”  
> import “wasi\_snapshot\_preview1” “random\_get”  
> Error: There are imports remaining that are not compatible with the Internet Computer.

* * *

Happily, no new (unsupported?) imports are introduced from ‘minimal’ to ‘full’

* * *

These are the additional imports introduced by my rails build:

`Module imports:`  
`import "rb-js-abi-host" "rb_wasm_throw_prohibit_rewind_exception"`  
`import "canonical_abi" "resource_drop_js-abi-value"`  
`import "rb-js-abi-host" "eval-js: func(code: string) -> variant { success(handle), failure(handle) }"`  
`import "rb-js-abi-host" "is-js: func(value: handle) -> bool"`  
`import "rb-js-abi-host" "instance-of: func(value: handle, klass: handle) -> bool"`  
`import "rb-js-abi-host" "global-this: func() -> handle"`  
`import "rb-js-abi-host" "int-to-js-number: func(value: s32) -> handle"`  
`import "rb-js-abi-host" "float-to-js-number: func(value: float64) -> handle"`  
`import "rb-js-abi-host" "string-to-js-string: func(value: string) -> handle"`  
`import "rb-js-abi-host" "bool-to-js-bool: func(value: bool) -> handle"`  
`import "rb-js-abi-host" "proc-to-js-function: func(value: u32) -> handle"`  
`import "rb-js-abi-host" "rb-object-to-js-rb-value: func(raw-rb-abi-value: u32) -> handle"`  
`import "rb-js-abi-host" "js-value-to-string: func(value: handle) -> string"`  
`import "rb-js-abi-host" "js-value-to-integer: func(value: handle) -> variant { as-float(float64), bignum(string) }"`  
`import "rb-js-abi-host" "export-js-value-to-host: func(value: handle) -> ()"`  
`import "rb-js-abi-host" "import-js-value-from-host: func() -> handle"`  
`import "rb-js-abi-host" "js-value-typeof: func(value: handle) -> string"`  
`import "rb-js-abi-host" "js-value-equal: func(lhs: handle, rhs: handle) -> bool"`  
`import "rb-js-abi-host" "js-value-strictly-equal: func(lhs: handle, rhs: handle) -> bool"`  
`import "rb-js-abi-host" "reflect-apply: func(target: handle, this-argument: handle, arguments: list<handle>) -> variant { success(handle), failure(handle) }"`  
`import "rb-js-abi-host" "reflect-get: func(target: handle, property-key: string) -> variant { success(handle), failure(handle) }"`  
`import "rb-js-abi-host" "reflect-set: func(target: handle, property-key: string, value: handle) -> variant { success(handle), failure(handle) }"`  
`import "canonical_abi" "resource_new_rb-abi-value"`  
`import "canonical_abi" "resource_get_rb-abi-value"`

* * *

When you say ‘_the runtime doesn’t provide the import_’ that sounds like an issue lower down the stack than the _Canister Development Kits_ that I saw a category about in this forum, correct?

This is the reference runtime that ruby-wasm refers to

> **[GitHub - bytecodealliance/wasmtime: A lightweight WebAssembly runtime that is fast,...](https://github.com/bytecodealliance/wasmtime)**
>
> A lightweight WebAssembly runtime that is fast, secure, and standards-compliant

Where there is divergence in supported imports, is this because IC hasn’t caught up to the standard? or are the ‘_rb\_js\ __’ & ‘_wasi\_snapshot\__ ’ imports a customization that IC would have to decide to support?

Aside from your suggestions about trimming down imports in my build, what options do I have on the ICP side for trying to customize the canister/runtime?

Cheers

---

_[View the full topic](https://forum.dfinity.org/t/requirements-for-running-non-rust-wasm/71681)._
