TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Flawless – Durable execution engine for Rust

304 pointsby bkolobaraover 1 year ago

33 comments

hades32over 1 year ago
How will this deal with workflow versioning? IMO the hardest problem in e.g. Temporal/Cadence
评论 #38017288 未加载
评论 #38012170 未加载
评论 #38017269 未加载
BiteCode_devover 1 year ago
Our field is getting closer and closer to architecture and medicine now. We&#x27;ve tech like this we can come out of the fiddling age and deep dive into a serious engineering culture.<p>Quick question: how do you prevent persisting the effect of a DOS attack on those systems?
评论 #38011640 未加载
评论 #38016235 未加载
评论 #38013469 未加载
10000truthsover 1 year ago
Does this determinism extend to floating point computations? This has historically been a pain point with multiplayer games where the client state has to be periodically re-synced with the server state due to slowly accumulating drift in floating point calculations.
评论 #38013313 未加载
评论 #38015682 未加载
评论 #38013265 未加载
indiv0over 1 year ago
Where is the state for the side effects stored? Say I have an AWS Lambda that I want to make idempotent. Lambdas don’t have local storage that persists across runs (unless you mount EBS volumes or something) so I presume state can be stored in a DB?
评论 #38013623 未加载
V__over 1 year ago
I love the animation showing the core principle and how it works, really well done.
评论 #38011413 未加载
评论 #38014322 未加载
royjacobsover 1 year ago
Looks interesting, I wonder if the method of marking functions as &#x27;having side effects&#x27; is going to be easy to make fool proof. For instance, I assume that in the example the random number generation is a side effect because it comes from a RNG provided by flawless itself. Would this have worked with a regular Rust function as well?<p>I assume there is going to be some kind of test harness that allows developers to check their workflows.
评论 #38011290 未加载
评论 #38011216 未加载
评论 #38011327 未加载
rubenfiszelover 1 year ago
Looks like a rust alternative to temporal using wasm as a runtime. Love it!<p>Founder of windmill.dev here which is another durability engine in Rust except it&#x27;s a lot less elegant since we split our workflows into well defined steps in python&#x2F;typescript&#x2F;go&#x2F;bash and can resume from incomplete steps only by restarting from the last step and storing the result of each step forever in our postgres db (using jsonb). The use-cases are clearly different and I can see flawless being so lightweight that you could use it to model UI flow state and scale it to millions on a small server as pointed out by the site.<p>This is fantastic, hopefully one day rust will power all distributed systems.
whalesaladover 1 year ago
“Any sufficiently complicated concurrent program in another language contains an ad hoc informally-specified bug-ridden slow implementation of half of Erlang.” – Virding’s first rule of programming
评论 #38012112 未加载
评论 #38011822 未加载
评论 #38012121 未加载
评论 #38011695 未加载
评论 #38012056 未加载
评论 #38011741 未加载
Philpaxover 1 year ago
Very cool, and the approach demonstrated might be of interest to a similar problem we have in Ambient (our WASM game runtime that has competing processes that may need to retry interactions.)<p>That being said - what’s the relation to Lunatic [0]? Are you still working on Lunatic? Is this a side project? Or is it something completely separate?<p>[0]: <a href="https:&#x2F;&#x2F;lunatic.solutions&#x2F;">https:&#x2F;&#x2F;lunatic.solutions&#x2F;</a>
评论 #38011856 未加载
tomjakubowskiover 1 year ago
&gt; Imagine if you could just start an arbitrary computation and the system guarantees that it will run until completion and all the operations will be performed exactly once.<p>How is this guaranteed? Isn&#x27;t exactly once delivery in a distributed system impossible?
评论 #38016252 未加载
评论 #38016770 未加载
评论 #38033116 未加载
评论 #38015656 未加载
daddykotexover 1 year ago
Recently, another alternative was teased out: <a href="https:&#x2F;&#x2F;www.golem.cloud&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.golem.cloud&#x2F;</a><p>From the folks at Ziverge, who&#x27;ve worked on ZIO in Scala.<p>They use a similar approach I believe. It&#x27;s discussed in this podcast: <a href="https:&#x2F;&#x2F;podcasters.spotify.com&#x2F;pod&#x2F;show&#x2F;happypathprogramming&#x2F;episodes&#x2F;85-Scala--Rust--and-Durable-Computing-with-John-De-Goes-e29ca1s" rel="nofollow noreferrer">https:&#x2F;&#x2F;podcasters.spotify.com&#x2F;pod&#x2F;show&#x2F;happypathprogramming...</a>
评论 #38014432 未加载
skaviover 1 year ago
If I understand correctly, Flawless provides the WASM runtime. If that’s the case why can’t it be entirely hidden to the user? The system provides things like entropy and networking.
评论 #38129058 未加载
评论 #38012317 未加载
sandGorgonover 1 year ago
how is something like this implemented ? does this hook into the rust compiler ? or does the rust&#x2F;wasm compiler architecture provide an intermediate step that allows for these kinds of systems to be built on top ?
评论 #38013649 未加载
whateveracctover 1 year ago
Reminds me of Dfinity without the crypto part. The killer app of Dfinity was never the crypto after all.
dodygover 1 year ago
How different is this from Temporal?
评论 #38012370 未加载
two_handfulsover 1 year ago
This looks very cool. I expect you’ll still want the services you talk to to be idempotent, but Flawless still takes a big chunk out of the work - and it seems very flexible too!
blumomoover 1 year ago
I have wanted something similar for Python: where the execution of a function will be interrupted (i.e. via a dedicated exception) and then I can rerun it to the very same point it previously halted while none of prior side effects occur and the previous state within that function gets restored.<p>While I have an idea how to implement it, now after having read the article and comments here, how is this concept called? Does an implementation for Python exist already?
评论 #38012863 未加载
评论 #38012822 未加载
评论 #38013367 未加载
mleonhardover 1 year ago
The boring way to do guaranteed execution with retries is to store the work items in Postgres and use a pool of workers. The workers store intermediate results in a cache.<p>Such systems need tooling for diagnosing and fixing problems: metrics, logging, dead-letter queue, inspecting and evicting cached items, retrying dead jobs, adjusting worker settings. Flawless and similar systems will have the same problems and need the same tools.
Thaxllover 1 year ago
Only rust and web assembly seems very restrictive, what does it brings to the table vs temporal for example which work on any language and is rock solid?
评论 #38012411 未加载
trompover 1 year ago
This approach should also work well for Haskell where &quot;main&quot; is already a pure computation producing a description of what IO actions to take.
nutateover 1 year ago
How does this handle the machine running out of memory?
stolsvikover 1 year ago
The “restart from where it failed”-aspect was a big reason for why I made Mats3. It is message-based, async, transactional, staged stateless services, or message-oriented asynchronous RPC. Due to the transactionality, and the “state lives on the wire”, if a flow fails, it can be restarted from where it left off.<p><a href="https:&#x2F;&#x2F;mats3.io" rel="nofollow noreferrer">https:&#x2F;&#x2F;mats3.io</a>
m00xover 1 year ago
This would be perfect for money transfers. A big part of money transfer reliability is properly resuming from errors.
isuckatcodingover 1 year ago
I’ve seen a couple of these now. Looks like a lot of them take the “we will take your code and compile it”-approach.<p>That’s not a problem per se but it does affect the ability to debug and see relevant stack traces. Its like how sometimes you see transpiled JS when what you really want is the typescript using source maps.
senderistaover 1 year ago
Very tenuously related, but the idea of logging all nondeterministic effects for idempotence can also be used to make locks lock-free!<p><a href="https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2201.00813" rel="nofollow noreferrer">https:&#x2F;&#x2F;arxiv.org&#x2F;abs&#x2F;2201.00813</a>
mytydevover 1 year ago
This deterministic execution pattern reminds me a lot of the approach with Azure Durable Functions and I know I&#x27;ve seen it in other places as well. Curious if anyone knows where that pattern originated.
评论 #38012197 未加载
评论 #38012162 未加载
raggiover 1 year ago
Is this an explicit feature of the wasm runtime in use here, or might this break with future optimizations in the runtime and the introduction of threads and other similar features?
emmanueloga_over 1 year ago
I was thinking of something like this for running queries for sharded data: the execution could be paused and moved to the server that is closer to the data source at a given runtime.<p>&gt; Notice how flawless takes away the burden of persisting the state.<p>Reminds me of the Wisdom of the Well: &quot;You&#x27;ll never find a programming language that frees you from the burden of clarifying your ideas.&quot; [1]<p>Although solving durability of execution for arbitrary code sounds super cool, I suspect that writing the code in a way that could be checkpointed&#x2F;resumed more naturally would probably be easier to debug and implement, in the end.<p>--<p>1: <a href="https:&#x2F;&#x2F;xkcd.com&#x2F;568&#x2F;" rel="nofollow noreferrer">https:&#x2F;&#x2F;xkcd.com&#x2F;568&#x2F;</a>
abtinfover 1 year ago
I’ve found it surprising that none of the wasm runtimes I’ve seen support dumping&#x2F;restoring memory state. Would be very valuable.
Jaladover 1 year ago
&gt; If you would like to be one of the first developers to get access to flawless as part of our private alpha. Join our waitlist.
b20000over 1 year ago
smells like java and the jvm
Dowwieover 1 year ago
check out Fermyon
评论 #38014912 未加载
itunpredictableover 1 year ago
This site is great