Yesterday I published the latest release of the 1.0 Byteman series, version 1.0.3. That's the new old release in the title. This is a maintenance release which fixes about 15 bugs/features discovered while using Byteman to fix timing issues in various of the JBossTS unit tests. This version has also been used for testing on the MicroContainer project and plans are afoot to extend its use to other JBoss projects.
New features in 1.0.3 include: the ability to reference method parameters by name in rule conditions and actions; option to omit empty BIND clauses; and new helper built-ins to enforce waits on thread exits and to provide better management of rendezvous. Bug fixes include: better parser error detection; and correct reporting of line numbers in parser/type checker errors. Binaries, sources and full release notes are included on the download site.
The new new Byteman release is 1.1.0 which I have been developing in parallel with the maintenance release. It will only run on JDK 6 upwards, allowing it to profit from the retransform capability introduced into the JDK 6 instrumentation package. This new new release will support dynamic loading/reloading of rules into a running program much as is possible using the btrace package. The byteman agent can be configured to open a listener which, currently, can be used either to list all currently applied bytecode transformations or to upload new rules or redefinitions of existing rules. The rule upload capability includes applying rule injection retrospectively to already loaded classes.
This dynamic upload capability should simplify development of rule sets. It should also make it a lot easier to use Byteman as a debugging aid. Hopefully, it will also pave the way for automation of rule injection via IDE plug-ins. Developing tool support is definitely on the agenda for the project so anyone who wants to contribute is more than welcome to respond.
I have just checked in a first draft of the dynamic upload functionality into the byteman repository trunk and I already have a community user lined up to try out the redefine capability. Feedback and suggestions for improvements will be graciously (and, quite possibly, gratefully :-) received.