Skip to content

Latest commit

 

History

History
20 lines (18 loc) · 1.14 KB

README.md

File metadata and controls

20 lines (18 loc) · 1.14 KB

Under development POC to support deterministic Go runtime. Options:

  • TinyGo
  • Code rewriting/transpiling
    • Feasible (can even do it via toolexec option on go build with import paths changes)
    • A bit difficult because we have to make sure to avoid Go stdlib or Temporal lib itself. Therefore we'd have to replace a lot of public runtime.
    • Lots to replace (e.g. panicking on crypto rand), but again technically doable
  • WASM
    • Hard to replace runtime.newproc and map iterations to make deterministic
    • Using Go WASM is targeted for JS and therefore you have to have a harness like this just to work
  • Yaegi
    • Seemingly limited ability to change runtime interpretation of
  • golang.org/x/tools/go/ssa/interp
    • Most code unexported, so no injection points, but code is small that hopefully hijacking small pieces is safe
    • Currently evaluating in this repository