Demo Data from SIGIR 2026 / reviewers in the wild / expert
Michael Furr
dblp:91/337
· DBLP profile ↗
5ranked-venue papers
5as first author
0since 2021 · last 2009
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 5 · 5 first-author
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
3 papers |
Programming languages and type systems · 72% Program analysis · 25% Runtime systems and virtual machines · 3% |
Topics — the 8 heaviest of 9, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems › type systems
type soundness |
0.1 | 2 | 2008 | Checking type safety of foreign function calls · ACM Trans. Program. Lang. Syst. 2008 Checking type safety of foreign function calls · PLDI 2005 |
Program analysis
static analysis |
0.1 | 2 | 2008 | Checking type safety of foreign function calls · ACM Trans. Program. Lang. Syst. 2008 Checking type safety of foreign function calls · PLDI 2005 |
Programming languages and type systems › type inference
static type inference |
0.1 | 1 | 2009 | Profile-guided static typing for dynamic scripting languages · OOPSLA 2009 |
Programming languages and type systems
type systems |
0.1 | 2 | 2008 | Checking type safety of foreign function calls · PLDI 2005 Checking type safety of foreign function calls · ACM Trans. Program. Lang. Syst. 2008 |
Programming languages and type systems › language implementation
foreign function interface |
0.1 | 1 | 2005 | Checking type safety of foreign function calls · PLDI 2005 |
Program analysis › data flow analysis
flow-sensitive analysis |
0.0 | 1 | 2008 | Checking type safety of foreign function calls · ACM Trans. Program. Lang. Syst. 2008 |
Program analysis
data flow analysis |
0.0 | 1 | 2005 | Checking type safety of foreign function calls · PLDI 2005 |
Runtime systems and virtual machines
garbage collection |
0.0 | 1 | 2005 | Checking type safety of foreign function calls · PLDI 2005 |
Methods — techniques the papers use, named apart from their topics
type inference · 0.1runtime instrumentation · 0.1dynamic analysis · 0.1unification-based analysis · 0.1singleton types · 0.1polymorphic type inference · 0.1representational types · 0.1data flow analysis · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2009 | The ruby intermediate languageabstractRuby is a popular, dynamic scripting language that aims to "feel natural to programmers" and give users the "freedom to choose" among many different ways of doing the same thing. While this arguably makes programming in Ruby easier, it makes it hard to build analysis and transformation tools that operate on Ruby source code. In this paper, we present the Ruby Intermediate Language (RIL), a Ruby front-end and intermediate representation that addresses these. RIL includes an extensible GLR parser for Ruby, and an automatic translation into an easy-to-analyze intermediate form. This translation eliminates redundant language constructs, unravels the often subtle ordering among side effecting operations, and makes implicit interpreter operations explicit. We also describe several additional useful features of RIL, such as a dynamic instrumentation library for profiling source code and a dataflow analysis engine. We demonstrate the usefulness of RIL by presenting a static and dynamic analysis to eliminate null pointer errors in Ruby programs. We hope that RIL's features will enable others to more easily build analysis tools for Ruby, and that our design will inspire the of similar frameworks for other dynamic languages. Michael Furr, Jong-hoon (David) An, Jeffrey S. Foster, Michael Hicks 0001 |
DLS | 1 |
| 2009 | Profile-guided static typing for dynamic scripting languagesabstractMany popular scripting languages such as Ruby, Python, and Perl include highly dynamic language constructs, such as an eval method that evaluates a string as program text. While these constructs allow terse and expressive code, they have traditionally obstructed static analysis. In this paper we present PRuby, an extension to Diamondback Ruby (DRuby), a static type inference system for Ruby. PRuby augments DRuby with a novel dynamic analysis and transformation that allows us to precisely type uses of highly dynamic constructs. PRuby's analysis proceeds in three steps. First, we use run-time instrumentation to gather per-application profiles of dynamic feature usage. Next, we replace dynamic features with statically analyzable alternatives based on the profile. We also add instrumentation to safely handle cases when subsequent runs do not match the profile. Finally, we run DRuby's static type inference on the transformed code to enforce type safety. Michael Furr, Jong-hoon (David) An, Jeffrey S. Foster |
OOPSLA | 1 |
| 2008 | Checking type safety of foreign function callsabstractForeign function interfaces (FFIs) allow components in different languages to communicate directly with each other. While FFIs are useful, they often require writing tricky low-level code and include little or no static safety checking, thus providing a rich source of hard-to-find programming errors. In this article, we study the problem of enforcing type safety across the OCaml-to-C FFI and the Java Native Interface (JNI). We present O-Saffire and J-Saffire, a pair of multilingual type inference systems that ensure C code that uses these FFIs accesses high-level data safely. Our inference systems userepresentational typesto model C's low-level view of OCaml and Java values, and singleton types to track integers, strings, memory offsets, and type tags through C. J-Saffire, our Java system, uses a polymorphic flow-insensitive, unification-based analysis. Polymorphism is important because it allows us to precisely model user-defined wrapper functions and the more than 200 JNI functions. O-Saffire, our OCaml system, uses a monomorphic flow-sensitive analysis because, while polymorphism is much less important for the OCaml FFI flow-sensitivity is critical to track conditional branches, which are used when pattern matching OCaml data in C. O-Saffire also tracks garbage collection information to ensure that local C pointers to the OCaml heap are registered properly, which is not necessary for the JNI. We have applied O-Saffire and J-Saffire to a set of benchmarks and found many bugs and questionable coding practices. These results suggest that static checking of FFIs can be a valuable tool in writing correct multilingual software. Michael Furr, Jeffrey S. Foster |
ACM Trans. Program. Lang. Syst. | 1 |
| 2006 | Polymorphic Type Inference for the JNI
Michael Furr, Jeffrey S. Foster |
ESOP | 1 |
| 2005 | Checking type safety of foreign function callsabstractWe present a multi-lingual type inference system for checking type safety across a foreign function interface. The goal of our system is to prevent foreign function calls from introducing type and memory safety violations into an otherwise safe language. Our system targets OCaml's FFI to C, which is relatively lightweight and illustrates some interesting challenges in multi-lingual type inference. The type language in our system embeds OCaml types in C types and vice-versa, which allows us to track type information accurately even through the foreign language, where the original types are lost. Our system uses representational types that can model multiple OCaml types, because C programs can observe that many OCaml types have the same physical representation. Furthermore, because C has a low-level view of OCaml data, our inference system includes a dataflow analysis to track memory offsets and tag information. Finally, our type system includes garbage collection information to ensure that pointers from the FFI to the OCaml heap are tracked properly. We have implemented our inference system and applied it to a small set of benchmarks. Our results show that programmers do misuse these interfaces, and our implementation has found several bugs and questionable coding practices in our benchmarks. Michael Furr, Jeffrey S. Foster |
PLDI | 1 |