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

Reply via email to