Continuing our end-of-month release plan we released Stubbles 0.10.0 today. The release contains fixes and improvements regarding dealing with UTF-8: the string length validators now correctly work with UTF-8 strings, and console streams now deal with input-/output conversion from environment charset to internal charset.
As we are at streams, the streams package experienced an update with two new classes and a new interface: net::stubbles::streams::stubMemoryInputStream and net::stubbles::streams::stubMemoryOutputStream allows to deal with memory streams, and net::stubbles::streams::stubSeekable allows to mark streams as seekable. Both net::stubbles::streams::stubMemoryInputStream and net::stubbles::streams::stubFileInputStream implement this interface.
Another new interface is net::stubbles::peer::stubURLContainer which allows better unit testing of classes having net::stubbles::peer::stubURL or net::stubbles::peer::http::stubHTTPURL as typehints on methods.
An API breakage was made to the net::stubbles::console::stubExecutor interface and its net::stubbles::console::stubConsoleExecutor implementation. The executor now accepts a net::stubbles::streams::stubOutputStream to stream the output of the executed command to instead of returning the output of the executed script from its execute() method. This breakage allowed us to make the API more fluent and allow better method chaining.
As requested I did my homework today and tested Stubbles against PHP 5.3 alpha1. Well, actually alpha2-dev, but that should not make that much difference. I don't know whether 5.3 is PHP on drugs, but runtime of our unit tests dropped from around 45 seconds with 5.2.5 to around 15 seconds on 5.3. Down to one third! This is really impressive. We will have to see how 5.3 will perform with the applications itself, but this raises expectations.
The other good news is that we only had two forward compatibility issues, which I instantly fixed. One of them was in a unit test and not relevant to the framework itself, the other had to do with a new check on callbacks which now forbids using private methods in callbacks, even if the callback is triggered from inside the same class.
At first I thought of just another check for the callback thing, but the comments lead me to reinspect the code. I now think it might really be a bug in PHP 5.3, therefore I created a small script to reproduce the effect, see repository. I sent it it to Lars, who will make sure it gets fixed in the final release.
Today I managed to put together some informations for Stubbles developers. These informations contain informations on how to access our repository and how to get commit access, information on our mailing lists, and our coding guidelines. Please take a look at our developer pages. If you have any suggestions for improvements of the contents or about which other informations to add feel free to leave a comment on this entry or to write a mail to our developer mailing list.
Yeah, mailing list. Today we created two real mailing lists: the developer mailing list for discussions about Stubbles and its development, and a commit mailing list. For more informations on how to subscribe see our mailing list info page. A big thanks to Alex Kiesel for helping us to set up both mailing lists and the XP development team for hosting the mailing list technology.
Due to the fact that the user community of Stubbles currently is not that big we decided that any user related discussions should take place on the developer mailing list. If one day for any reason the volume of user-related questions gets bigger we may create a separate mailing list then.
One month over, time for a new version. As always we aim to release a new version at the end of a month, this time it took a couple of days more due to being busy with other things. However, today we shipped Stubbles 0.9.0 as our second version in beta status, containing a bunch of fixes and minor improvements. We made quite some steps forward to handling all string as UTF-8 internally, but we are still not finished with this yet as there are still some places where we have to put our hands on. I'm quite sure we will have this issues addressed with the next release.
Improvements with this release are the introduction of being able to overrule annotated filters, support for HTTP caching, XSL callbacks for formatting dates and timestamps (unfortunately not complete, the current implementation lacks support for dynamic values from the document tree) amongst other minor improvements. For the complete list see the changelog.