Monday 22 February 2010

Byteman 1.2.2 released

The 1.2.2 Byteman release is now available for download. It includes a small number of bug fixes as well as a few interesting additional features, most notably:

the problem which was causing rule injection into superclasses to fail intermittently (BYTEMAN-80) has been resolved. more importantly, the fix has avoided adding significant costs to class loading. So it is still possible to inject rule code through interfaces and down class hierarchies without seriously perturbing execution of the original application.

expressions in rule scripts may now employ the new operator(BYTEMAN-85) and the assignment (=) operator (BYTEMAN-81), with the usual Java syntax and semantics. assignment can be used to modify the value of all rule bindings
  • variables introduced in the BINDS clause
  • trigger method local variables: $i, $myString etc
  • trigger method parameters: $1, $myParam (but not $this/$0 which is implicitly final)
  • the stacked trigger method return value: $! (only available in AT EXIT rules)

note also that in the latter three cases assignment does not just reset the value used to resolve references in subsequent rule expressions. it also updates the local state of the trigger method. the assigned values will be employed on resumption of the method to resolve references to local or parameter variables or to supply the result returned to its caller.