Although parallel collections are the preferred way of expressing data-parallel applications in Scala, they can be suboptimal when collections contain primitive values. Since parallel collections are generic in the type of values they contain, they are susceptible to autoboxing: the process in which primitive values get automatically converted to objects. This can be harmful to applications such as linear algebra, various numeric computations, or text processing.
Parallel collections were introduced to the Scala standard library in the Scala 2.9 release. Ever since, there have been many developments in the language, with Scala Macros being one of the prominent new language features. The Scala macro system allows you to define language libraries that manipulate abstract syntax trees of parts of the Scala program. Macros are a very expressive feature of Scala, and they allow some new optimization opportunities that were not available when parallel collections...