 Chapel supports a multithreaded parallel programming model at a high level by supporting abstractions for data parallelism, task parallelism, and nested parallelism.It enables optimizations for the locality of data and computation in the program via abstractions for data distribution and data-driven placement of subcomputations.It allows for code reuse and generality through object-oriented concepts and generic programming features.