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

The only effective tool I have found is Rust, a correctness checker for race conditions.


The first, practical one was Concurrent Pascal (1975) used in a number of OS's:

http://brinch-hansen.net/papers/

Later, Eiffel's SCOOP model in 90's was immune to races for a long time with researchers doing mods for better speed, deadlock detection, livelock detection, etc. It was ported to Java at one point. The research page in the link below shows they're probably still the top players in this given steady stream of results.

https://en.wikipedia.org/wiki/SCOOP_(software)

Works in combination with Eiffel's Design-by-Contract which can knock out semantic errors he mentions:

https://www.eiffel.com/values/design-by-contract/introductio...

Ada's Ravenscar also did safe concurrency. Ada 2012 and SPARK have Design-by-Contract with SPARK also proving absence of common errors in code automatically. Cyclone was a C variant that used region-based memory management and analysis to show absence of dangling pointers, etc. Rust improved on that with a better language, dynamic safety, and race-free concurrency.

So, there's been stuff resistant to concurrency problems for quite a while among people using safer languages. Rust is just the latest and most open.


Much of Cyclone was an inspiration for Rust. Digging through the Hansen papers. Thank you.


Note that Rust protects you from data races, but you can still run into problems like deadlocks.




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

Search: