Stream: git-wasmtime

Topic: wasmtime / issue #12251 [Question] Is Pulley the right so...


view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 10:24):

crowforkotlin opened issue #12251:

Hi team,

I'm currently working on a project called wasmline. Right now, I'm using a forked version of Wasmtime where I've stripped out the JIT compilation components to minimize binary size and memory overhead, relying fully on AOT for most platforms.

However, I'm facing a dilemma with iOS support, and I was wondering if the Pulley interpreter is the answer.

Here is my current situation:

  1. JIT/AOT Limitations: I need to load Wasm modules dynamically (plugin system). On iOS, I can't use JIT (Cranelift) due to code-signing restrictions, and static AOT doesn't solve the dynamic loading requirement.
  2. Kotlin/Wasm Requirements: My project relies on Kotlin/Wasm (WASI), which mandates support for Wasm GC and Exception Handling.
  3. Issues with other Interpreters:

    * I looked at WasmKit: It runs on iOS, but it doesn't support GC or Exception Handling yet, so I can't run Kotlin binaries.
    * I looked at Chasm: It supports the required features, but after discussing with the author, the performance seems to be around 1 or 2 orders of magnitude slower than native, which is a bit too slow for my use case.

My Questions about Pulley:

I noticed the documentation mentions Pulley as a portable interpreter.

  1. iOS Compatibility: Can Pulley be used on iOS to load and execute Wasm binaries dynamically? (i.e., does it strictly function as an interpreter without needing executable memory pages?)
  2. Feature Parity: Does Pulley currently support Wasm GC and Exception Handling? Since Kotlin relies heavily on these, I need to confirm if Pulley covers these specific proposals.

Why this matters:

To be honest, if Pulley fully supports these features, it would be a game-changer for me. It would allow me to implement the Wasm loading logic on iOS using Kotlin/Native. This would finally enable the iOS target for wasmline, filling the major gap in my cross-platform architecture.

Thanks for your help!

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 10:24):

crowforkotlin edited issue #12251:

Hi wasmtime team,

I'm currently working on a project called wasmline. Right now, I'm using a forked version of Wasmtime where I've stripped out the JIT compilation components to minimize binary size and memory overhead, relying fully on AOT for most platforms.

However, I'm facing a dilemma with iOS support, and I was wondering if the Pulley interpreter is the answer.

Here is my current situation:

  1. JIT/AOT Limitations: I need to load Wasm modules dynamically (plugin system). On iOS, I can't use JIT (Cranelift) due to code-signing restrictions, and static AOT doesn't solve the dynamic loading requirement.
  2. Kotlin/Wasm Requirements: My project relies on Kotlin/Wasm (WASI), which mandates support for Wasm GC and Exception Handling.
  3. Issues with other Interpreters:

    * I looked at WasmKit: It runs on iOS, but it doesn't support GC or Exception Handling yet, so I can't run Kotlin binaries.
    * I looked at Chasm: It supports the required features, but after discussing with the author, the performance seems to be around 1 or 2 orders of magnitude slower than native, which is a bit too slow for my use case.

My Questions about Pulley:

I noticed the documentation mentions Pulley as a portable interpreter.

  1. iOS Compatibility: Can Pulley be used on iOS to load and execute Wasm binaries dynamically? (i.e., does it strictly function as an interpreter without needing executable memory pages?)
  2. Feature Parity: Does Pulley currently support Wasm GC and Exception Handling? Since Kotlin relies heavily on these, I need to confirm if Pulley covers these specific proposals.

Why this matters:

To be honest, if Pulley fully supports these features, it would be a game-changer for me. It would allow me to implement the Wasm loading logic on iOS using Kotlin/Native. This would finally enable the iOS target for wasmline, filling the major gap in my cross-platform architecture.

Thanks for your help!

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 10:26):

crowforkotlin edited issue #12251:

Hi wasmtime team,

I'm currently working on a project called wasmline. Right now, I'm using a forked version of Wasmtime where I've stripped out the JIT compilation components to minimize binary size and memory overhead, relying fully on AOT for most platforms.

However, I'm facing a dilemma with iOS support, and I was wondering if the Pulley interpreter is the answer.

Here is my current situation:

  1. JIT/AOT Limitations: I need to load Wasm modules dynamically (plugin system). On iOS, I can't use JIT (Cranelift) due to code-signing restrictions, and static AOT doesn't solve the dynamic loading requirement.
  2. Kotlin/Wasm Requirements: My project relies on Kotlin/Wasm (WASI), which mandates support for Wasm GC and Exception Handling.
  3. Issues with other Interpreters:

    * I looked at WasmKit: It runs on iOS, but it doesn't support GC or Exception Handling yet, so I can't run Kotlin binaries.
    * I looked at Chasm: It supports the required features, but after discussing with the author, the performance seems to be around 1 or 2 orders of magnitude slower than native, which is a bit too slow for my use case.

My Questions about Pulley:

I noticed the documentation mentions Pulley as a portable interpreter.

  1. iOS Compatibility: Can Pulley be used on iOS to load and execute Wasm binaries dynamically? (i.e., does it strictly function as an interpreter without needing executable memory pages?)
  2. Feature Parity: Does Pulley currently support Wasm GC and Exception Handling? Since Kotlin relies heavily on these, I need to confirm if Pulley covers these specific proposals.

Why this matters:

To be honest, if Pulley fully supports these features, it would be a game-changer for me. It would allow me to implement the Wasm loading logic on iOS using Kotlin/Native. This would finally enable the iOS target for wasmline, filling the major gap in my cross-platform architecture.

Thanks for your help!

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 10:27):

crowforkotlin edited issue #12251:

Hi wasmtime team,

I'm currently working on a project called wasmline. Right now, I'm using a forked version of Wasmtime where I've stripped out the JIT compilation components to minimize binary size and memory overhead, relying fully on AOT for most platforms.

However, I'm facing a dilemma with iOS support, and I was wondering if the Pulley interpreter is the answer.

Here is my current situation:

  1. JIT/AOT Limitations: I need to load Wasm modules dynamically (plugin system). On iOS, I can't use JIT (Cranelift) due to code-signing restrictions, and static AOT doesn't solve the dynamic loading requirement.
  2. Kotlin/Wasm Requirements: My project relies on Kotlin/Wasm (WASI), which mandates support for Wasm GC and Exception Handling.
  3. Issues with other Interpreters:

    * I looked at WasmKit: It runs on iOS, but it doesn't support GC or Exception Handling yet, so I can't run Kotlin binaries.
    * I looked at Chasm: It supports the required features, but after discussing with the author, the performance seems to be around 1 or 2 orders of magnitude slower than native, which is a bit too slow for my use case.

My Questions about Pulley:

I noticed the documentation mentions Pulley as a portable interpreter.

  1. iOS Compatibility: Can Pulley be used on iOS to load and execute Wasm binaries dynamically? (i.e., does it strictly function as an interpreter without needing executable memory pages?)
  2. Feature Parity: Does Pulley currently support Wasm GC and Exception Handling? Since Kotlin relies heavily on these, I need to confirm if Pulley covers these specific proposals.

Why this matters:

To be honest, if Pulley fully supports these features, It would allow me to implement the Wasm loading logic on iOS using Kotlin/Native. This would finally enable the iOS target for wasmline, filling the major gap in my cross-platform architecture.

Thanks for your help!

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 10:33):

cfallin commented on issue #12251:

Yes, Pulley supports GC and exception handling! And, as far as I know, it should work on iOS: execution with Pulley doesn't generate or jump to any native code.

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 14:29):

crowforkotlin commented on issue #12251:

That's great to hear. I'll attempt to build Wasmtime with Pulley enabled and see if I can get it running properly on iOS. Thanks for the info!

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 16:09):

crowforkotlin commented on issue #12251:

https://github.com/user-attachments/assets/bed51fb5-1e04-4507-81c1-4813d565a5d3

<img width="552" height="378" alt="Image" src="https://github.com/user-attachments/assets/5d28b95e-458d-4106-8667-ef2c9b0f0bf2" />

pulley success on mac, so i can write a code test on ios

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 16:11):

crowforkotlin edited a comment on issue #12251:

https://github.com/user-attachments/assets/bed51fb5-1e04-4507-81c1-4813d565a5d3

<img width="552" height="378" alt="Image" src="https://github.com/user-attachments/assets/5d28b95e-458d-4106-8667-ef2c9b0f0bf2" />

<img width="798" height="344" alt="Image" src="https://github.com/user-attachments/assets/3e259f8e-2a08-45c4-affc-bced4f7a67f9" />

pulley success on mac, so i can write a code test on ios

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 16:43):

alexcrichton closed issue #12251:

Hi wasmtime team,

I'm currently working on a project called wasmline. Right now, I'm using a forked version of Wasmtime where I've stripped out the JIT compilation components to minimize binary size and memory overhead, relying fully on AOT for most platforms.

However, I'm facing a dilemma with iOS support, and I was wondering if the Pulley interpreter is the answer.

Here is my current situation:

  1. JIT/AOT Limitations: I need to load Wasm modules dynamically (plugin system). On iOS, I can't use JIT (Cranelift) due to code-signing restrictions, and static AOT doesn't solve the dynamic loading requirement.
  2. Kotlin/Wasm Requirements: My project relies on Kotlin/Wasm (WASI), which mandates support for Wasm GC and Exception Handling.
  3. Issues with other Interpreters:

    * I looked at WasmKit: It runs on iOS, but it doesn't support GC or Exception Handling yet, so I can't run Kotlin binaries.
    * I looked at Chasm: It supports the required features, but after discussing with the author, the performance seems to be around 1 or 2 orders of magnitude slower than native, which is a bit too slow for my use case.

My Questions about Pulley:

I noticed the documentation mentions Pulley as a portable interpreter.

  1. iOS Compatibility: Can Pulley be used on iOS to load and execute Wasm binaries dynamically? (i.e., does it strictly function as an interpreter without needing executable memory pages?)
  2. Feature Parity: Does Pulley currently support Wasm GC and Exception Handling? Since Kotlin relies heavily on these, I need to confirm if Pulley covers these specific proposals.

Why this matters:

To be honest, if Pulley fully supports these features, It would allow me to implement the Wasm loading logic on iOS using Kotlin/Native. This would finally enable the iOS target for wasmline, filling the major gap in my cross-platform architecture.

Thanks for your help!

view this post on Zulip Wasmtime GitHub notifications bot (Jan 07 2026 at 16:43):

alexcrichton commented on issue #12251:

Sounds like things are working well, so closing.


Last updated: Jan 09 2026 at 13:15 UTC