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

Reply via email to