Anyone who uses multithreaded computer programs —the programs that power nearly all software applications including Office, Windows, MacOS, and Google Chrome Browser, and Web services like Google Search, Microsoft Bing, and iCloud — knows the frustration of computer crashes, bugs, and other problems.
Multithreaded programs can be difficult for programmers to get right and they often contain elusive bugs called races, which can cause very serious problems. Now there is a new system that will combat this problem.
Peregrine, a new software system developed by Columbia Engineering School, will improve the reliability and security of multithreaded programs, benefiting virtually every computer user across the globe. Peregrine can be used by software vendors like Microsoft and Apple, and Web service providers like Google and Facebook, to provide reliable services to computer users.
In contrast to many earlier systems that address only resultant problems, but not the root cause, Peregrine addresses nondeterminism — a system that is unpredictable as each input has multiple potential outcomes — and thus simultaneously addresses all the problems that are caused by nondeterminism.
Peregrine also deals with data races or bugs, unlike most previous efforts that do not provide such fine-grained control over the execution of a program. And it’s very fast — many earlier systems may slow down the execution of a program by up to ten times. Peregrine is also a practical system that works with current hardware and programming languages — it does not require new hardware or new languages.

