V: Consideration: Crash Handling / Recovery similar to Erlang possible?

Created on 11 Mar 2020  路  6Comments  路  Source: vlang/v

Something to consider at some point: Is it possible to make a crash handling / recovery system similar to Erlang in V? There are various things to consider from conversations in Discord:

Feature Request

Most helpful comment

@Immortalin
We are aware of Pony, Kotlin, Go, Python, Ballerina, Chapel, see https://github.com/vlang/v/issues/1868 &
https://github.com/vlang/v/issues/3814

All 6 comments

Could you please copy the relevant parts of the discussion here? Sometimes (like now) I can't reach Discord and I think I'm not the only one.

It's also better if Discord discards (or changes :open_mouth:) the history or changes the permalinks (yeah, nothing is fully "perma" :wink:). Btw. this is also what Stackoverflow dictates, so it proved useful.

Thanks!

@dumblob
FYI
ElixirConf 2018 - Introducing Scenic A Functional UI Framework - Boyd Multerer

a compiled crash recoverable system might be the game changer for everyone looking on.

My understanding of ylluminate's proposal is that the ideal V recovery mechanism should run on auto mode, without defer / panic / recover explicit instructions.
Erlang design was done with high reliability of 99.9999... in mind, for telecom civil and military equipment (switch boards) able to run without a glitch 24/7/365 for years, similar with what mainframes are doing.

FYI
ElixirConf 2018 - Introducing Scenic A Functional UI Framework - Boyd Multerer

Thanks for the link. Scenic seems to be actually an Elixir version of concur-js with a nice API built around explicit widget graph manipulation and with efficient pub-sub backend built in (note there are many other ways to implement the "processors" - "drivers" as thery're called in Scenic - not just by yield as in the linked repo or by a separate go routine for each widget).

a compiled crash recoverable system might be the game changer for everyone looking on.

My understanding of ylluminate's proposal is that the ideal V recovery mechanism should run on auto mode, without defer / panic / recover explicit instructions.
Erlang design was done with high reliability of 99.9999... in mind, for telecom civil and military equipment (switch boards) able to run without a glitch 24/7/365 for years, similar with what mainframes are doing.

I don't think we need much more in V to achieve this kind of reliability - first, if my proposal gets implemented, then every reentrant go routine actually guarantees it'll be restarted if there is less than 1 such instance. Second, in my proposal basically everything can be achieved due to the possibility to influence/exchange the scheduler, so you'll be totally free to write your scheduler which'll react to specific crashes of go routines (here I use the term crash for go routines returning with return error( 'my error' ), but not go routines panic()king, because I still strongly hope panic() will disappear from V as it makes all this stuff very complicated and doesn't offer anything more than return error()).

Another language that V can borrow features from is Pony. It shares a lot of ideas with Erlang and Rust.

@Immortalin
We are aware of Pony, Kotlin, Go, Python, Ballerina, Chapel, see https://github.com/vlang/v/issues/1868 &
https://github.com/vlang/v/issues/3814

Neither me nor @dumblob are main developers, so we don't know which solution will be chosen for the future if any.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

XVilka picture XVilka  路  3Comments

PavelVozenilek picture PavelVozenilek  路  3Comments

aurora picture aurora  路  3Comments

taojy123 picture taojy123  路  3Comments

radare picture radare  路  3Comments