Heyang Zhou
Heyang Zhou
These Rust code is not natively compiled; It targets WebAssembly and runs in Life in a "bootstrapping" way.
The final form will be Life IR embedded in Go.
Implemented with wasm stack info; maybe we still want a real register allocator with liveness analysis.
Unfortunately the Life VM is not re-entrant yet, although making it re-entrant shouldn't be too difficult. Contributions are welcome if you have implemented the feature yourself :)
1. It is the gas limit - there's no example just yet but it's as simple as setting the `GasLimit` field in your `VMConfig` struct. 2. Yes, they can. 3....
Yes, it's definitely possible. At any point when `Execute()` returns under a good condition (non-termination and non-error) like when a call to an external function happens, it's safe to snapshot...
Only fields related to the runtime state (including `CallStack`, `CurrentFrame`, `Globals`, `Memory`, `Yielded`, `NumValueSlots`, `Gas`) need to be serialized. Other fields can be reconstructed from the same WebAssembly file and...
Thanks for reporting the bug! Could you try with Polymerase engine enabled? There's a known bug in the register allocator for interpreter mode.
👍 赞成使用「运行栈」与「中断栈」
@wfly1998 [未定义的行为](https://en.wikipedia.org/wiki/Undefined_behavior)并不总会导致可见的问题。 考虑以下代码(未测试): ```rust let x: i32 = 42; let x_ref = &x; if clone_thread() == 0 { assert!(&x as *const _ == x_ref as *const _, "path 1"); }...