wg/jacks — pull request #23 by clhodapp (2014-07-10 22:17:38+00:00)
Title: Use Scala reflection api instead of scalap (2.10)

First, please read the commit message:

Note: Scala reflection in Scala 2.10 is NOT threadsafe. As a result,
we need to be very careful about how we do things. This means:

* Continuing to use Manifests instead of TypeTags, lest TypeTag
materialization at the client site create safety issues
* Protecting our usage of the api internally with locks (doing this
successfully requires that we use a reflective Universe that is
not shared with the outside world)

That said, there are a number of reasons to prefer the Scala reflection api
over scalap for type analysis. Here are a few:

* Not an internal api
* No transitive dependency on scala-compiler.jar
* More user-friendly (It's still pretty prickly, but, of the two, it's better)

Now some commentary:

This is a rather big change for jacks, so I'd expect there to be a bit
of discussion before it's decided whether to merge this. Please be
aware that I've also written another version of this idea that actually
updates JacksMapper to use TypeTags instead of Manifests and
doesn't use (jacks-side) locking or a separate reflective universe for
each ScalaModule. Unfortunately, that version depends on Scala
2.11 (which makes Scala reflection threadsafe through internal
locking), so I'd expect that it'd be less likely to be merged than this
(though parallel branches would obviously be possible). In any case,
look for another pull request with that version soon, though you
obviously don't want to merge both of them.