Skip to end of metadata
Go to start of metadata

Currently the version of ASM bundled in Clojure is pretty old (circa 2005).  There are some documented performance improvements in newer versions of ASM that should speed up some things in Clojure.

It may not be the desired approach, but CLJ-713 has a patch related to this.

Next Steps

  • A Move to the latest ASM (currently 3.3.1) 
  • No longer subset-ed it (Only a subset of ASM was included back when it dominated Clojure's jar size, back in those early days when Clojure fit on a floppy :))
  • Still re-rooted it under clojure.asm

Future Steps

  • Build an independent (but still re-rooted) clojure.asm jar, and a dep on it. That way delivery targets that don't use dynamic code gen (e.g. Android) can easily leave it out.
Labels:
  1. Feb 27, 2011

    One thing to keep in mind is that from a software distributor/System administrator's point of view, bundling of libraries is generally not desirable.  Primarily this is because It makes it hard to isolate and remedy security problems.

    As a matter of fact, both Fedora and Debian strip out the ASM library and use an external dependency.  In fact, I believe both of these already use version 3 of ASM within their distributions, if I understand things correctly.

    Just something to keep in mind.

    Reference: http://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries

  2. Oct 11, 2012

    What would be the point of having a re-rooted asm jar that gets distributed with clojure? Why not just use the plain asm jar?

    I have done some tests and it seems a fairly minimal change to move to the latest ASM (re-rooted or not). The only change is clojure.reflect.java there's a reify that needs to be changed to a proxy since ASM moved from interfaces to abstract classes. In the case of a non-rooted asm dep, the pom.xml and build.xml need to change to pass along the maven.compile.classpath property to the compile-tests task.