4 ms·
Thanks! Got it, I will add more examples for that. Currently you can do both: run dynamically untrusted code with eval, or run fully encapsulated logic (like in
by mavdol04 8mo ago
Thanks! Got it, I will add more examples for that. Currently you can do both: run dynamically untrusted code with eval, or run fully encapsulated logic (like in the existing examples).
I made a small example that might give you a better idea (it's not eval, but shows how to isolate a specific data processing task): https://github.com/mavdol/capsule/tree/main/examples/javascript/dialogue-evaluator https://github.com/mavdol/capsule/tree/main/examples/javascr...
And yes, you are spot on regarding LeetCode platforms. The resource limits are also designed for that kind of usage.
- zachrip 8mo agoWould like to see the eval version - the dialogue version just seems like normal code with extra steps?
- mavdol04 8mo agoyeah, the previous example was quite basic. I will write a complete example for that, but here is how you can run dynamic code: import { task } from "@capsule-run/sdk"; export default task({ name: "main", compute: "HIGH", }, async () => { const untrustedCode = "const x = 10; x * 2 + 5;"; const result = eval(untrustedCode); return result; }); Hope that helps!
- zachrip 8mo agoIs the code in the eval also turned into wasm first then? Does this work as a JIT for wasm?
- mavdol04 8mo agoIt actually works a bit differently. The eval is executed by the interpreter running inside the isolated wasm sandbox (StarlingMonkey). You can think of it as each sandbox having its own dedicated JavaScript engine.
- fix4fun 8mo agoyep, more examples with agents use will be helpful