Get Started Docs Learn Cloud Blog Use Cases Temporal Github Repository Sign Up for Cloud
Ensuring Deterministic Execution in Modern Language Runtimes

Ensuring deterministic execution usually requires solving two separate problems: shared state mutation and inherent non-deterministic constructs within the system (e.g., time, random, I/O, concurrency, etc). Temporal's unique programming environment requires that workflow code executes deterministically. This means that the language runtimes must perform accurately and consistently. Despite this need for precision, it is still important to allow users to choose the language they prefer.

During this conversation, we explore the various challenges we have encountered while using different language runtimes to execute workflow code deterministically. We will discuss the techniques that have proven effective, as well as those that have not, and provide insight into what the Temporal team has planned for the future. In addition to discussing our current approaches, we also discuss other promising approaches, such as WASM and system-level deterministic execution, as well as their potential drawbacks.

Our discussion encompasses a range of language runtimes, including Go, Node.js, Python, .NET, and Java Virtual Machine.

Key takeaways:

  • Learn about the challenges of achieving deterministic execution and how Temporal's unique programming environment requires workflow code to be deterministic
  • Gain insight into Temporal's planned approach to designing language runtimes and overall architecture for deterministic execution
  • Hear about innovative approaches that Temporal is considering to address these challenges in the future
YouTube Twitter LinkedIn Slack