After not touching the yielder project for a long time, I decided to go back and make the change I knew I needed but feared of doing: changing from the visitor model to the tree model of ASM.
It wasn’t even about performance anymore, as I was sure that the performance would be just as great. It was about needing to rethink the entire model again, and about being lazy.
Laziness is the end of all home-made projects, indeed.
Enough rants. I made the change, and now all the problems the previous version used to have – such as methods not necessarily working in a yield clause etc, are working.
Please, read all about it here, and get it from the Google Code project here. And obviously, let me know how it works for you, either in comments or on the issues page, here.
A week ago, Michael Barker wrote a use case for yielder, where he uses the yielding ability to implement “Mini-Axon”, the Kamaelia learning experience usually done in Python, where generators are a built-in feature of the language. I thought it was good to mention it here, to show how yielder can be used for more than just an easy way to implement iterators – for example, to yield results of processing requests as soon as they arrive at the processing box, in the case of Mini-Axon.
Also, if you have downloaded Yielder in the past, go and download the new version which sports two new main features, one of allowing hierarchies under the Yielder class (before, your implementation had to be a direct subclass) and the second is not using debugging information at all, making the tool work with any environment as it relies solely on the bytecode itself. (If you never downloaded yielder, what are you waiting for?)
The latest yielder bug has been fixed, and now compilations without debugging information won’t break.
The differences from the original implementation post relate to the local variable promotion only. The changes are as follows:
Continue reading »