Compiling for Different Circumstances

  1. Handle NA values or assume none

  2. Pass by-reference or pass-by-value

  3. Reuse memory for similarly shaped objects with non-overlapping life-times

  4. Optional type specification or generic support

  5. Type inference

  6. Parallelism

  7. data locality

  8. GPU run-time

  • We can create different compilers for different semantics