Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Looks like Flawless goal is to persist the intermediate state of some workflow and restart it from midpoint in case of a failure. That's quite different from Erlang, which was mostly aimed at developing software while having access only to prototype versions of hardware with multiple hardware issues. To me this approaches are opposite: Flawless will be stuck in a loop trying to finish a workflow that crashes in the middle, while Erlang will happily discard 50% of the traffic that somehow hits the hardware bug.


I like to see this on a spectrum on 'reliable computation' and 'high availability' (and interruptible computing) with continuations/CallCC, checkpoint/restore (CRIU, DMTCP), VM snapshots or (live-)migration, to double/triple hardware, and even dual implementation, but also Kafka.

I find it a bit disheartening that these features are not more pervasive on language, runtimes, libraries and OSes, so very often the actual solutions are either very kludgy or very high maintenance, whereas the primitives are really interesting for many other endeavours.


Functional programmers think this way though. Everything is data, or a manipulation/transform of data, and we can wrap functions with higher level things to track inputs and outputs and persist that.

Erlang won’t do this out of the box but it’s a menial addition to your system.

I guess I just don’t understand how this is such a novel idea.


It’s not a novel idea. At minimum, prior art is:

- Temporal / Cadence

- Amazon SWF

- Azure Durable Functions

Not even the web assembly part is novel - Temporal does that for several languages.

This seems to be a new implementation of an existing idea, and may end up being cleaner - that part is to be seen since there’s no actual product or code visible yet.


Another relevant language might be Vale (https://vale.dev), which is aiming for "perfect replayability": https://verdagon.dev/blog/perfect-replayability-prototyped




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: