mukul-rathi / bolt

Bolt is a language with in-built data-race freedom!
MIT License
573 stars 53 forks source link

How are errors/panics/exceptions in finish-async blocks handled? #144

Open dumblob opened 3 years ago

dumblob commented 3 years ago

Structured concurrency is finding its way into popular languages and libraries. It's though not one identical concept, it's actually several variants and the world is now searching and evaluating which ones are better and which ones worse.

One of the major differences between structured concurrency implementations is how errors in spawned threads are handled and how they are (if at all) passed somewhere else.

Could you shed some light how finish-async blocks behave in case of an unrecoverable error in one spawned thread appears? Feel free to put emphasis on problems described in https://github.com/vorner/vorner.github.io/blob/master/_posts/2018-07-22-dont_panic.md .


Just for the record an example of another major difference between implementations is e.g. support for real os-level threads (i.e. leveraging the power of more than one CPU core).

mukul-rathi commented 3 years ago

Thank you for your interesting question, the truth is that I haven’t really thought too much about error-handling yet. This language was written for my undergraduate dissertation so as a result is likely still missing core language features like error handling.