thanks On Friday, 19 September 2014 23:08:35 UTC+10, Nicola Mometto wrote: > > > The :pass-info metadata needed to resolve the pass dependency order is > attached to the Vars, not to the functions. > Even though we could attach that meta to the functions rather than to > the Vars, leaving aside that it would be less pleasant, multimethods > can't have metadata attached as they are not AFunctions so that would > require wrapping each pass in a fn even when unnecessary. > > Given all this, using a set of Vars is perfectly reasonable. > > Nicola > > Dave Sann writes: > > > Hi Nicola, > > > > why do you pass a set of vars to schedule rather than a set of > functions? > > > > I'm just interested. It's unusual to see #' > > > > Dave > > > > On Friday, 19 September 2014 05:07:08 UTC+10, Nicola Mometto wrote: > >> > >> > >> Today I released version 0.6.0 of the tools.analyzer[1] and > >> tools.analyzer.jvm[2] contrib libraries. > >> > >> With this release comes a new feature I'm really excited about and that > >> I believe will help users of this library significantly: a pass > >> scheduler. > >> > >> Previous to this release, tools.analyzer passes had to be combined > >> manually, requiring deep knowledge of the implementation of those > >> passes, whose dependencies were not explicit. > >> > >> That usually resulted in users copy-pasting the tools.analyzer.jvm > >> run-passes function using that as a template. > >> > >> With the new scheduler, all of this is no longer necessary as all it > >> takes care of automatically pulling in dependencies and composing the > >> passes in the required and most efficient order, composing together > >> passes whenever possible, to minimize the overhead of a full tree > >> traversal. > >> > >> To get a sense of how that has improved, here's run-passes from 0.5.6: > >> > >> > https://github.com/clojure/tools.analyzer.jvm/blob/be55b4e32371060932ac8d4094eb5b1b77fe4349/src/main/clojure/clojure/tools/analyzer/jvm.clj#L430-L477 > > >> and here it is from 0.6.0, using the pass scheduler: > >> > >> > https://github.com/clojure/tools.analyzer.jvm/blob/1757871eb828c419f8de1cf177f125897f653829/src/main/clojure/clojure/tools/analyzer/jvm.clj#L397-L427 > > >> > >> Exposing the default-passes set, users who want to add a pass to the > >> default passes run by t.a.jvm need only to bind run-passes to > >> `(schedule (conj default-passes #'my-pass))`, or dissoc a default pass > >> if not needed. > >> > >> To get started with the pass scheduler, here's its extensive docstring: > >> > >> > https://github.com/clojure/tools.analyzer/blob/7a8cba9b26689675debdaabc83f20e485003bf5a/src/main/clojure/clojure/tools/analyzer/passes.clj#L137-L168 > > >> and here is a comprehensive example of a pass configuration via > >> :pass-info: > >> > >> > https://github.com/clojure/tools.analyzer.jvm/blob/1757871eb828c419f8de1cf177f125897f653829/src/main/clojure/clojure/tools/analyzer/passes/jvm/validate_loop_locals.clj#L150 > > >> > >> Nicola > >> > >> [1]https://github.com/clojure/tools.analyzer > >> [2]https://github.com/clojure/tools.analyzer.jvm > >> >
-- 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 --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.