Congratulations Nicola, that looks really excellent!
On 19 September 2014 07:06, Nicola Mometto <brobro...@gmail.com> 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. > -- 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.