Hello, Interesting return of experience.
But from what I (currently) know, AOTing jars should be harmless. So maybe the problem is that there's a bug in the new branch, and this bug needs to be corrected ? 2009/12/13 dysinger <t...@dysinger.net> > So in my experiments with using clojure / contrib w/ the "new" branch, > I've noticed a pattern of binary incompatibility. Jars pushed to > clojars, maven repos and other places that are are unnecessarily > AOTed, don't work with clojure "new". I noticed the same thing going > from clojure 1.0 to clojure 1.1.0-SNAP. > > It doesn't really seem to matter if you include the src "clj" files > along with the class files in your jar. As soon as clojure hits a > classfile with an older AOTed namespace, it blows up. This isn't a > criticism of clojure. Clojure needs it's freedom to innovate. > > ...but clojure, by default, JIT compile clj files. I would just like > to start a conversation about using AOT sparingly if you publish your > clojure project as a library. Ask yourself "why am I AOTing this > namespace? Do I think JIT compiled dynamic clojure is dumb? Is this a > gen-class I need outside clojure in some fancy XML config file? Is > there some classloader issue that makes it necessary to compile AOT ?" > If the answer is NO, then please don't AOT the code. > > I went through the pain of 3 days of on/off twiddling with libraries > so our project could use clojure "new". The hair-pulling details > where in all the code that was AOT when there was no reason to do > this. 99% of time there were no gen-class or anything else to require > it. People just like compiling stuff [ I get the feeling they think it > has some sort of ricer benefit to AOT compile ]. Most clj files work > great with all versions of clojure if you just jar the clj files and > leave class generation for runtime. > > Don't get me wrong, there are places where a single namespace or two > are necessarily AOTed for interop or for classloader issues. But just > carte blanche AOT makes it harder on other people using your library - > to the point of trying to remove your library from their dependencies > (trust me - been there). > > Code that _could_ run perfectly on clojure 1.0, 1.1.0-SNAP and "new" > are restricted to one version when AOTed and 99% for no reason. > > Maybe Rich can comment on where I am missing it. But I think this is > my stance. > > -Tim > > -- > 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<clojure%2bunsubscr...@googlegroups.com> > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > -- 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