The program for RV 2010 is now available. (clap)
RV Program is up
Eric | August 31, 2010Hosting a Program Committee meeting with Skype
Eric | August 30, 2010I recently had the pleasure to host a PC Meeting conference call with skype, with 22 people! Actually things went surprisingly well. However, it really helps if people stick to a few rules. I have written down a few tricks that I learned on the way.
Soot is now invokedynamic-ready
Eric | August 24, 2010As many of you may know, JDK 7 will bring support for a new bytecode called invokedynamic. Thanks to Matthias Perner, a bright student of ours, Soot is already ready for this new bytecode today. I have just committed appropriate changes to the SVN trunk. The new instructions are handled as follows:
- On the Jimple, Grimp and Baf level, invokedynamic instructions appear as DynamicInvokeExpr with a static SootMethodRef that has class java.dyn.InvokeDynamic as target class. This is in accordance with the internal handling in JDK 7.
- SootMethodRefs which have java.dyn.InvokeDynamic as target class may not be resolved: calling resolve() will throw an exception
- On the Jasmin level, invokedynamic instruction appear in the form “invokedynamic <methodName>(<methodParams>)<methodRetType>“. In particular, there is no target class given.
- Jasmin translates this into an invokedynamic instruction with two arguments:
- a NameAndType attribute referring to <methodName>(<methodParams>)<methodRetType> and
- the constant “0” (two zero bytes, i.e., a short); according to the VM spec this is reserved for future use.
The above is an experimental design. Comments are welcome! In the near future we plan to extend TamiFlex to handle invokedynamic as well.
Clara: a Framework for Partially Evaluating Finite-state Runtime Monitors Ahead of Time
Eric | August 19, 2010In my publications section you can now find our RV 2010 paper on the Clara Framework. This is by far the most concise introduction to Clara; therefore I hope that people will find it more accessible than my thesis. download the paper here
Abstract: Researchers have developed a number of runtime verification tools that generate runtime monitors in the form of AspectJ aspects. In this work, we present Clara, a novel framework to statically optimize such monitoring aspects with respect to a given program under test. Clara uses a sequence of increasingly precise static analyses to automatically convert a monitoring aspect into a residual runtime monitor. The residual monitor only watches events triggered by program locations that the analyses failed to prove safe at compile time. In two-thirds of the cases in our experiments, the static analysis succeeds on all locations, proving that the program fulfills the stated properties, and completely obviating the need for runtime monitoring. In the remaining cases, the residual runtime monitor is usually much more efficient than a full monitor, yet still captures all property violations at runtime.
C# implementation of Arithmetic Coder
Eric | August 13, 2010Quite a while back, Malte Clasen, Joachim Kneis and I wrote a seminar paper on Arithmetic Coding. Apparently it’s not a bad paper, as it has been heavily cited. In particular, people appear to appreciate Malte’s C++ implementation of Arithmetic Coding, which fits on a couple of pages. This week, Sina Momken emailed me a very nice re-implementation of the coder in C#. The implementation is available in source from our AC website. Thanks Sina!
Lecture on Soot, Hands-on Tutorials on Clara
Eric | August 12, 2010Dear all, for all of those of you who happened to be in Chile in November: I will be giving a lecture about the latest techniques in analyzing Java programs with Soot at the 3rd Summer School on Programming Languages, which is co-located with the Chilean Computing Week. You can find more information here. At the same even, I will moreover be giving a hands-on tutorial on Clara (“Partially evaluating finite-state runtime monitors ahead-of-time”), which is likely going to be similar to my RV tutorial.
TamiFlex 1.1 released
Eric | August 4, 2010I am happy to announce that today we released version 1.1 of TamiFlex, our tool suite for dealing with reflection and custom class loaders in static analysis. Version 1.1 not only features several minor bug fixes but a completely new component called the Booster. Previous versions of TamiFlex required static analyses that were “TamiFlex-aware”, and at the current time the only such tool is Soot. The Booster makes TamiFlex compatible with virtually every static-analysis tool for Java bytecode: it transforms the original program into a new program version that is enriched with “materialized” versions of the originally reflective method calls, now in the form of standard Java method calls. Because these calls are now materialized in the code, static-analysis tools will discover them instead of unsoundly ignoring the calls.