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:
- 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.
- Kotlin/Wasm Requirements: My project relies on Kotlin/Wasm (WASI), which mandates support for Wasm GC and Exception Handling.
- 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.
- 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?)
- 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!
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:
- 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.
- Kotlin/Wasm Requirements: My project relies on Kotlin/Wasm (WASI), which mandates support for Wasm GC and Exception Handling.
- 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.
- 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?)
- 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!
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:
- 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.
- Kotlin/Wasm Requirements: My project relies on Kotlin/Wasm (WASI), which mandates support for Wasm GC and Exception Handling.
- 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.
- 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?)
- 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!
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:
- 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.
- Kotlin/Wasm Requirements: My project relies on Kotlin/Wasm (WASI), which mandates support for Wasm GC and Exception Handling.
- 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.
- 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?)
- 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!
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.
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!
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
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
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:
- 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.
- Kotlin/Wasm Requirements: My project relies on Kotlin/Wasm (WASI), which mandates support for Wasm GC and Exception Handling.
- 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.
- 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?)
- 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!
alexcrichton commented on issue #12251:
Sounds like things are working well, so closing.
Last updated: Jan 09 2026 at 13:15 UTC