<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/on-the-way-to-step-functions-dreams-of-marshalable-stacks-7znyol0zo" -->

---
title: On the way to step functions: dreams of marshalable stacks
description: Durable execution systems like Temporal and Restate attempt to enable long-running workflows that can pause and resume, but face fundamental limitations...
canonical: https://daily.dev/posts/on-the-way-to-step-functions-dreams-of-marshalable-stacks-7znyol0zo
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: On the way to step functions: dreams of marshalable stacks | daily.dev
og:description: Durable execution systems like Temporal and Restate attempt to enable long-running workflows that can pause and resume, but face fundamental limitations...
og:url: https://daily.dev/posts/on-the-way-to-step-functions-dreams-of-marshalable-stacks-7znyol0zo
og:image: https://api.daily.dev/og/posts/7zNYol0zO.png
og:image:alt: On the way to step functions: dreams of marshalable stacks
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# On the way to step functions: dreams of marshalable stacks

**[RUBYLAND](https://daily.dev/sources/rubyla)** · 16 min read · 0 upvotes · 0 comments

## Summary

Durable execution systems like Temporal and Restate attempt to enable long-running workflows that can pause and resume, but face fundamental limitations because modern runtimes lack marshalable stacks. The author explores why truly serializable call stacks with handles, code versioning, and state preservation remain impractical, forcing these systems to rely on idempotency and checkpointing instead. This creates a leaky abstraction where developers must carefully manage what goes into orchestrator versus task code, handle non-deterministic values, and ensure proper rollback mechanisms—all while pretending the stack can be frozen and revived across machines.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://blog.julik.nl/2026/01/on-the-way-to-step-functions-part-1>

## Similar posts on daily.dev

- [Hatchet](https://daily.dev/posts/hatchet-alugo3xs3) · Hacker News · 2 upvotes · 0 comments
- [Durable Execution: Build reliable software in an unreliable world](https://daily.dev/posts/durable-execution-build-reliable-software-in-an-unreliable-world-2rmzujbwi) · The New Stack · 0 upvotes · 0 comments
- [On the way to step functions: it is actually a DAG](https://daily.dev/posts/on-the-way-to-step-functions-it-is-actually-a-dag-kihhsxcsc) · RUBYLAND · 0 upvotes · 0 comments
- [“This Can’t Possibly Work”: What I Learned at a Temporal.io Workshop](https://daily.dev/posts/this-can-t-possibly-work-what-i-learned-at-a-temporal-io-workshop-dit0ioyod) · Foojay.io · 0 upvotes · 0 comments

---

Tags: [#distributed-systems](https://daily.dev/tags/distributed-systems), [#ruby](https://daily.dev/tags/ruby), [#workflow-orchestration](https://daily.dev/tags/workflow-orchestration)

[View this post on daily.dev](https://daily.dev/posts/on-the-way-to-step-functions-dreams-of-marshalable-stacks-7znyol0zo)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"On the way to step functions: dreams of marshalable stacks","url":"https://daily.dev/posts/on-the-way-to-step-functions-dreams-of-marshalable-stacks-7znyol0zo","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/on-the-way-to-step-functions-dreams-of-marshalable-stacks-7znyol0zo"},"datePublished":"2026-01-16T10:28:00.623Z","dateModified":"2026-07-16T02:12:37.786Z","description":"Durable execution systems like Temporal and Restate attempt to enable long-running workflows that can pause and resume, but face fundamental limitations...","image":"https://media.daily.dev/image/upload/s--P4t4XyoV--/f_auto/v1722860399/public/Placeholder%2001","thumbnailUrl":"https://media.daily.dev/image/upload/s--P4t4XyoV--/f_auto/v1722860399/public/Placeholder%2001","isAccessibleForFree":true,"articleSection":"RUBYLAND","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"RUBYLAND","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/rubyla","url":"https://daily.dev/sources/rubyla"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/on-the-way-to-step-functions-dreams-of-marshalable-stacks-7znyol0zo","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"distributed-systems,ruby,workflow-orchestration","timeRequired":"PT16M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"RUBYLAND","item":"https://daily.dev/sources/rubyla"},{"@type":"ListItem","position":3,"name":"On the way to step functions: dreams of marshalable stacks"}]}
```

