18 research outputs found
Improving dynamic code analysis by code abstraction
In this paper, our aim is to propose a model for code abstraction, based on abstract interpretation, allowing us to improve the precision of a recently proposed static analysis by abstract interpretation of dynamic languages. The problem we tackle here is that the analysis may add some spurious code to the string-to-execute abstract value and this code may need some abstract representations in order to make it analyzable. This is precisely what we propose here, where we drive the code abstraction by the analysis we have to perform
Twinning Automata and Regular Expressions for String Static Analysis
In this paper we formalize Tarsis, a new abstract domain based on the abstract interpretation theory that approximates string values through finite state automata. The main novelty of Tarsis is that it works over an alphabet of strings instead of single characters. On the one hand, such an approach requires a more complex and refined definition of the widening operator, and the abstract semantics of string operators. On the other hand, it is in position to obtain strictly more precise results than state-of-the-art approaches. We implemented a prototype of Tarsis, and we applied it to some case studies taken from some of the most popular Java libraries manipulating string values. The experimental results confirm that Tarsis is in position to obtain strictly more precise results than existing analyses
Intersection Types for the Computational lambda-Calculus
We study polymorphic type assignment systems for untyped lambda-calculi with
effects, based on Moggi's monadic approach. Moving from the abstract definition
of monads, we introduce a version of the call-by-value computational
lambda-calculus based on Wadler's variant with unit and bind combinators, and
without let. We define a notion of reduction for the calculus and prove it
confluent, and also we relate our calculus to the original work by Moggi
showing that his untyped metalanguage can be interpreted and simulated in our
calculus. We then introduce an intersection type system inspired to Barendregt,
Coppo and Dezani system for ordinary untyped lambda-calculus, establishing type
invariance under conversion, and provide models of the calculus via inverse
limit and filter model constructions and relate them. We prove soundness and
completeness of the type system, together with subject reduction and expansion
properties. Finally, we introduce a notion of convergence, which is precisely
related to reduction, and characterize convergent terms via their types
Twinning Automata and Regular Expressions for String Static Analysis
In this paper we formalize TARSIS, a new abstract domain based on the abstract interpretation theory that approximates string values through finite state automata. The main novelty of TARSIS is that it works over an alphabet of strings instead of single characters. On the one hand, such an approach requires a more complex and refined definition of the widening operator, and the abstract semantics of string operators. On the other hand, it is in position to obtain strictly more precise results than state-of-the-art approaches. We implemented a prototype of TARSIS, and we applied it to some case studies taken from some of the most popular Java libraries manipulating string values. The experimental results confirm that TARSIS is in position to obtain strictly more precise results than existing analyses
Twinning automata and regular expressions for string static analysis
In this paper we formalize and prove the soundness of Tarsis, a new abstract
domain based on the abstract interpretation theory that approximates string
values through finite state automata. The main novelty of Tarsis is that it
works over an alphabet of strings instead of single characters. On the one
hand, such approach requires a more complex and refined definition of the
widening operator, and the abstract semantics of string operators. On the other
hand, it is in position to obtain strictly more precise results than than
state-of-the-art approaches. We implemented a prototype of Tarsis, and we
applied it on some case studies taken from some of the most popular Java
libraries manipulating string values. The experimental results confirm that
Tarsis is in position to obtain strictly more precise results than existing
analyses
Scala Macros: Let Our Powers Combine!
Compile-time metaprogramming has been proven immensely useful enabling programming techniques such as language virtualization, embedding of external DSLs, self-optimization, and boilerplate generation amongst many others. In the recent production release of Scala 2.10 we have introduced macros, an experimental facility which gives its users compile-time metaprogramming powers. Alongside of the mainline release of Scala Macros, we have also introduced other macro flavors, which provide their users with different interfaces and capabilities for interacting with the Scala compiler. In this paper, we show how the rich syntax and static types of Scala synergize with macros, through a number of real case studies using our macros (some of which are production systems) such as language virtualization, type providers, materialization of type class instances, type-level programming, and embedding of external DSLs. We explore how macros enable new and unique ways to use pre-existing language features such as implicits, dynamics, annotations, string interpolation and others, showing along the way how these synergies open up new ways of dealing with software development challenges