Re: tree-shaking a jarred Clojure app?

2009-11-21 Thread John Harrop
On Sat, Nov 21, 2009 at 11:21 PM, David Brown wrote: > On Sat, Nov 21, 2009 at 11:14:52PM -0500, John Harrop wrote: > > >1 second instead of 1/6 of a second. Yeah, like users will notice that > >difference in startup times. :) > > I'm not actually complaining, but I do notice every single time I

Re: tree-shaking a jarred Clojure app?

2009-11-21 Thread David Brown
On Sat, Nov 21, 2009 at 11:14:52PM -0500, John Harrop wrote: >1 second instead of 1/6 of a second. Yeah, like users will notice that >difference in startup times. :) I'm not actually complaining, but I do notice every single time I fire up a REPL. The more code that you have, the longer it takes

Re: tree-shaking a jarred Clojure app?

2009-11-21 Thread John Harrop
On Sat, Nov 21, 2009 at 8:57 PM, David Brown wrote: > On Sat, Nov 21, 2009 at 08:42:26PM -0500, John Harrop wrote: > > >Are you talking about binding things like String.class to vars referenced > by > >symbols like String? > > Not just String.class, every single class referenced by a given > name

Re: tree-shaking a jarred Clojure app?

2009-11-21 Thread David Brown
On Sat, Nov 21, 2009 at 08:42:26PM -0500, John Harrop wrote: >Are you talking about binding things like String.class to vars referenced by >symbols like String? Not just String.class, every single class referenced by a given namespace will be loaded, and most of them instantiated before a single

Re: tree-shaking a jarred Clojure app?

2009-11-21 Thread John Harrop
On Sat, Nov 21, 2009 at 8:30 PM, David Brown wrote: > On Fri, Nov 20, 2009 at 06:37:18PM +, Jim Downing wrote: > > >I might have misunderstood, but isn't the problem the same as in Java; > >you can't know from a static analysis which classes are going to be > >loaded? > > Except that Clojure

Re: tree-shaking a jarred Clojure app?

2009-11-21 Thread David Brown
On Fri, Nov 20, 2009 at 06:37:18PM +, Jim Downing wrote: >I might have misunderstood, but isn't the problem the same as in Java; >you can't know from a static analysis which classes are going to be >loaded? Except that Clojure will load all of them so it can bind them to the vars in each name

Re: tree-shaking a jarred Clojure app?

2009-11-20 Thread John Harrop
On Fri, Nov 20, 2009 at 2:28 PM, Richard Newman wrote: > > But I should be able to know, through class inspection, whether my > > 'main' program depends on a class which uses, say, the clojure.zip > > namespace, and decide whether or not to include it. Or so I am > > wondering. > > There are impe

Re: tree-shaking a jarred Clojure app?

2009-11-20 Thread Graham Fawcett
On Fri, Nov 20, 2009 at 2:28 PM, Richard Newman wrote: >> I suppose a better question might be: would a tree-shaker have a >> reasonable chance of shaking a typical Clojure jar, or are there too >> many dynamic obstacles to a good analysis. > > I'm not sure it's worth solving this through low-leve

Re: tree-shaking a jarred Clojure app?

2009-11-20 Thread Richard Newman
> But I should be able to know, through class inspection, whether my > 'main' program depends on a class which uses, say, the clojure.zip > namespace, and decide whether or not to include it. Or so I am > wondering. There are impediments to that, too -- your namespace might require another, and

Re: tree-shaking a jarred Clojure app?

2009-11-20 Thread Graham Fawcett
On Fri, Nov 20, 2009 at 1:37 PM, Jim Downing wrote: > Hi Graham > > 2009/11/20 Graham Fawcett : >> Hi folks, >> >> This is somewhat a Java question, but it's in the context of Clojure, >> so here goes. Playing with Leiningen got me thinking about bundling a >> Clojure application as a JAR, which m

Re: tree-shaking a jarred Clojure app?

2009-11-20 Thread Jim Downing
Hi Graham 2009/11/20 Graham Fawcett : > Hi folks, > > This is somewhat a Java question, but it's in the context of Clojure, > so here goes. Playing with Leiningen got me thinking about bundling a > Clojure application as a JAR, which might include a host of classes > that are loaded but never used

tree-shaking a jarred Clojure app?

2009-11-20 Thread Graham Fawcett
Hi folks, This is somewhat a Java question, but it's in the context of Clojure, so here goes. Playing with Leiningen got me thinking about bundling a Clojure application as a JAR, which might include a host of classes that are loaded but never used. Is it possible to "tree-shake" such a jarfile, a