The goal of blame prediction is to identify areas in code where errors can be predicted, ie. areas where any further execution will result in an error. This allows programmers to more easily identify bugs in their program and develop faster.
In dynamically typed programming languages, the sources of errors are mostly primitive functions and some operations such as array indexing. The core idea of blame prediction is therefore to separate the type tests performed by primitive operations and propagate them upwards.
Blame prediction is not a new type system or analysis; it is a hybrid technique that statically applies the judgements of a type system as much as possible, while code with uncertainties is checked at runtime. These checks are performed as early as possible in order to maximize the computational distance between the detection site and the error site.
Blame prediction can be tested interactively at http://bit.ly/blame-sandbox.
The latest version of the blame prediction transformation can be cloned from the GitHub repository. The project is implemented in Haskell, so you will need a recent version of GHC and cabal-install.