The integration work with Clojure and Terracotta has been progressing. After I brought up a couple of the issues I had encountered on the tc-dev mailing list, it turned out that I had discovered a couple of bugs in Terracotta.
These three issues were the source of some of the major changes that were required to integrate Clojure and Terracotta, and they should all be fixed in Terracotta 3.0.1:
- CDV-1171: Support java.util.concurrent.atomic.AtomicReference
- CDV-1233: identity comparsion (reference equality) of DSO literals does not work
- CDV-1234: clone() on shared array types might fail to resolve values before native cloning
In particular, CDV-1233 required some ugly changes in the compiler, which should now be (thankfully!) unnecessary.
I believe I also have a solution to the problem that comes about when a root Var binding is a non-portable object. Stay tuned for that!