Lukas Marek, Faculty of Mathematics and Physics, Charles University in Prague, lukas.marek (at) d3s.mff.cuni.cz
DiSL is a new Java instrumentation language and framework specificallydesigned to meet the requirements of dynamic program analysis.
DiSL is a language inspired by the AOP principles, hosted in Java usingannotations. DiSL offers an open join-point model where any bytecoderegion can be a shadow, synthetic local variables for efficient datapassing, efficient access to comprehensive static and dynamic contextinformation, and weave-time execution of user-defined static analysis code. DiSL offers much better code coverage, incurs significantly less overhead,and eases the integration of new analysis features in comparison to otherAOP based languages (frameworks) like AspectJ.
The target audience are developers of dynamic program analysis toolsrequiring easy-to-use and efficient instrumentation language.
The target audience will likely be familiar with AspectJ(http://www.eclipse.org/aspectj) or ASM (http://asm.ow2.org)as examples of tools also suitable for writing instrumentation.AspectJ incurs a significant overhead compared to instrumentationproduced by DiSL. ASM is able to produce efficient instrumentation,but the developer needs to operate on byte code level. DiSL triesto provide the same efficiency as ASM (DiSL is based on ASM), butexposes a higher level API (language) to the developer.
For thorough information see http://dl.acm.org/citation.cfm?doid=2162049.2162077.
Lukas MarekCharles University in Praguelukas.marek (at) d3s.mff.cuni.cz
Walter BinderUniversity of Luganobinwalt (at) gmail.com
Danilo AnsaloniUniversity of Luganodanilo.ansaloni (at) gmail.com
Aibek SarimbekovUniversity of Luganoaibek.sarimbekov (at) gmail.com
Yudi ZhengShanghai Jiao Tong Universityjhengyudi (at) gmail.com
At this time, the project is non profit, the goal is to provide and maintainan already developed tool that can be useful to people working with dynamicprogram analysis. By open sourcing our framework, we believe to get fasteradoption by the target audience.
Our framework is currently used by researchers that implement dynamicprogram analysis tools, in particular other research teams at University of Lugano, CharlesUniversity, Technische Universitat Darmstadt, Shanghai Jiao Tong University.
The framework aims at developers, user level internalization is thereforenot applicable.
The framework is close to stable, final testing and minor adjustments,together with documentation writing, are underway. Additional featuresplanned for later development:
- Offloading of analysis computations.
- More abstract language constructs.
- Supporting plugins.
The project was hosted at http://disl.origo.ethz.ch, but that site went down.
Our framework builds on top of ASM, which is a well known OW2 project. Wetherefore believe DiSL is a good fit to OW2, where it can extend the rangeof tools provided to current ASM users. We note that DiSL does not competewith ASM, but lifts the abstraction level to ASM users instead.
Our framework uses ASM, see above.
Our framework uses ASM, see above. Some of the other projects that use ASMmight want to simplify development by using DiSL in addition to ASM, butprecise solution depends on particular technical details.
We target the developers who develop instrumentation tools for Java. We havealready attracted some interest in the research community, see above.
Our framework is using ASM, JNI, JVMTI and the Java instrumentation interface (seehttp://docs.oracle.com/javase/6/docs/api/java/lang/instrument/package-summary.html).
The main contribution is the framework itself, which is useful for developers.
We believe that coexistence of ASM and DiSL in one place will benefit theuser community. We were forced to consider alternative hosting for DiSL whenour current hosting system (http://disl.origo.ethz.ch) ceased operation, andwe believe that, out of the various options available, OW2 is best becauseit already hosts ASM.
Apache Software License 2.0
This wiki is licensed under a Creative Commons 2.0 licenseXWiki Enterprise 6.4.4 - Documentation