Now for the original question:
http://groups.google.com/group/clojure/browse_thread/thread/6cef4fcf523f936
The problem is AOT compiled code.
Not only. If my library refer to a function that's first defined in
library-X version 1.5, and some other code uses library-X 1.4 *and* my
library, then there is a fundamental problem whenever you add a
dependency on both my library and the other library. This will happen
any time a library's API changes and you have dependencies that cross
the line.
AOT compilation might make the problem appear at compile-time in some
cases, or more often if the library is a "compiler" (i.e., leaves
shreds of its implementation in your compiled code), but you don't
eliminate the problem by avoiding AOT compilation.
Using a sophisticated dependency system -- having a library specify
its requirements, not a dumb version number -- drastically reduces
these problems by resolving the requirements to a particular release,
or spotting the error and failing fast. Using a dumb version system
screws you whenever this occurs, *and* makes it awkward for you to
manually resolve the collision.
(OSGI attempts to address this by allowing multiple library versions,
but Clojure needs its own classloader, and also enables code to 'flow'
across library boundaries through macroexpansion.)
As for the snapshots: you can find them on http://build.clojure.org/snapshots
.
So you (can but) don't have to put them into a local repository.
Of course, you still do if you have made changes to Clojure in your
local checkout.
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en