The goal of Flow is to find errors in JavaScript code with little
programmer effort. Flow relies heavily on type inference to find type
errors even when the program has not been annotated It precisely tracks
the types of variables as they flow through the program.

At the same time, Flow is a gradual type system. Any parts of your
program that are dynamic in nature can easily bypass the type checker
so you can mix statically typed code with dynamic code.

Flow also supports a highly expressive type language. Flow types can
express much more fine-grained distinctions than traditional type
systems.  For example, Flow helps you catch errors involving null,
unlike most type systems.

NOTE:

Flow does not support 32-bit systems, but there is a commented out
patch included here that will allow it to build. Note that although
`flow` will compile and run on a 32-bit system with this patch, it will
not pass the built-in tests. The patch is included in the hopes that
someone brave enough will investigate this and help upstream deliver
32-bit support.
