Migrating from 1.5.1 to 1.6 and dependencies

74 views
Skip to first unread message

Mike Fikes

unread,
Jun 3, 2014, 6:36:01 AM6/3/14
to clo...@googlegroups.com
I'm making use of core.async, which specifies 1.6.

Does leiningen help with ensuring any libraries I'm using are also compatible with 1.6?

I'm concerned that I may have another dependency (perhaps transitive) that is incompatible, perhaps simply by being AOT compiled with 1.5.1.

Alex Miller

unread,
Jun 3, 2014, 12:21:32 PM6/3/14
to clo...@googlegroups.com
You can use "lein deps :tree" to detect what different libraries depend on. Specifying an explicit Clojure dependency in your own project should override anything used by downstream dependencies. "lein ancient" is also useful in finding out of date dependencies.

I am not aware of any binary incompatibilities from using 1.5.1 AOT compiled code in Clojure 1.6 (we did provide shims and do a bit of testing to fix issues in this area). Binary compatibility across releases is not guaranteed, but it is something we strive to maintain if possible. One area where things do differ is in the hasheq functions used in hash maps and sets (which affects the sequence order for those - that order is not defined and it will change from 1.5.1 to 1.6.0). There were some potential issues around "case", which changed in implementation in 1.6, but that was reported and fixed before the final release and I tested with 1.5.1 AOT compiled classes to verify. 

Mike Fikes

unread,
Jun 3, 2014, 12:45:13 PM6/3/14
to clo...@googlegroups.com
Thanks Alex. That's great! My fear of a “dependency yak shave” is unfounded.

I noticed the following (once) in my server log file, but have been unable to trace it down not see any ill effects and presumed it could be caused by mixing versions. I'll report if I find anything specific.

#<NoClassDefFoundError java.lang.NoClassDefFoundError: clojure/core$drop_last$fn__4284>
Reply all
Reply to author
Forward
0 new messages