Refreshment 3:20 p.m.
Abstract
In this talk, we present a Clojure library for answering program
queries (e.g., "is my code bug free?"), answering history queries
(e.g., "has test-driven development been adhered to?") as well as
transforming programs (e.g., "patch my code as follows") in a
declarative manner. We focus on its domain-specific extensions to logic
programming that facilitate specifying the characteristics of the
sought after source code idioms and source code evolutions. We conclude
with the desire to detect such declaratively specified idioms and
evolutions during the computation of program analyses. This should
enable handling programs with idiomatic uses of reflection and DSL
embeddings, at the cost of introducing a mutual dependency between
idiom detection and its enabling analyses.
Title: A Generic Abstract Interpreter for JavaScript
Abstract
JIPDA is a generic abstract interpreter for JavaScript, written in
JavaScript. Its goal is to provide a common foundation for static
analysis of JavaScript. JIPDA attempts to be generic by fixing
JavaScript semantics and as little else as possible. Still, pluggable
data and behavior needs to conform to minimal specifications, and it is
interesting to examine where and how much JavaScript semantics
influence these specifications. The abstract interpreter models the
stack and the heap, and features abstract garbage collection and strong
updating based on abstract counting for increased precision. From an
implementation point of view, it is probably closer to a standard
SICP-style evaluator with an eval-apply-cycle than a state machine. The
first experiments that use JIPDA do not rely on mapping over an entire
set of visited states, but instead use meta-programming to intercept
calls to the evaluator.
Return to
2013 Events Calendar