scispace - formally typeset
Search or ask a question

Showing papers by "Martin Rinard published in 2017"


Proceedings ArticleDOI
21 Aug 2017
TL;DR: Results that characterize the effectiveness of the Genesis inference algorithms and the complete Genesis patch generation system working with real-world patches and defects collected from 372 Java projects are presented.
Abstract: We present a new system, Genesis, that processes human patches to automatically infer code transforms for automatic patch generation. We present results that characterize the effectiveness of the Genesis inference algorithms and the complete Genesis patch generation system working with real-world patches and defects collected from 372 Java projects. To the best of our knowledge, Genesis is the first system to automatically infer patch generation transforms or candidate patch search spaces from previous successful patches.

165 citations


Book
18 Dec 2017
TL;DR: This survey is for anyone interested in an end-to-end view of one set of techniques that address the theory and practice of making computing systems more efficient by trading errors for improved efficiency.
Abstract: © 2017 Now Publishers Inc. All rights reserved. This survey explores the theory and practice of techniques to make computing systems faster or more energy-efficient by allowing them to make controlled errors. In the same way that systems which only use as much energy as necessary are referred to as being energy-efficient, you can think of the class of systems addressed by this survey as being error-efficient: They only prevent as many errors as they need to. The definition of what constitutes an error varies across the parts of a system. And the errors which are acceptable depend on the application at hand. In computing systems, making errors, when behaving correctly would be too expensive, can conserve resources. The resources conserved may be time: By making some errors, systems may be faster. The resource may also be energy: A system may use less power from its batteries or from the electrical grid by only avoiding certain errors while tolerating benign errors that are associated with reduced power consumption. The resource in question may be an even more abstract quantity such as consistency of ordering of the outputs of a system. This survey is for anyone interested in an end-to-end view of one set of techniques that address the theory and practice of making computing systems more efficient by trading errors for improved efficiency.

7 citations


Proceedings ArticleDOI
23 Oct 2017
TL;DR: Filtered Iterators as discussed by the authors decompose inputs into input units and atomically and automatically discard units that trigger errors, which is inspired by observed common input processing errors and successful strategies implemented by human developers.
Abstract: We present a new language construct, filtered iterators, for robust input processing. Filtered iterators are designed to eliminate many common input processing errors while enabling robust continued execution. The design is inspired by (1) observed common input processing errors and (2) successful strategies implemented by human developers fixing input processing errors. Filtered iterators decompose inputs into input units and atomically and automatically discard units that trigger errors. Statistically significant results from a developer study demonstrate the effectiveness of filtered iterators in enabling developers to produce robust input processing code without common input processing defects.

3 citations


24 Apr 2017
TL;DR: This work presents a new approach for obtaining secure, robust so-called "ware that executes on modern computing platforms with complex programming interfaces" by providing a productive new mechanism for capturing and encapsulating knowledge about how to use modern complex interfaces.
Abstract: As modern computation platforms become increasingly complex, their programming interfaces are increasingly dicult to use. Œis complexity is especially inappropriate given the relatively simple core functionality that many of the computations implement. We present a new approach for obtaining so‰ware that executes on modern computing platforms with complex programming interfaces. Our approach starts with a simple seed program, wriŠen in the language of the developer’s choice, that implements the desired core functionality. It then systematically generates inputs and observes the resulting outputs to learn the core functionality. It €nally automatically regenerates new code that implements the learned core functionality on the target computing platform. Œis regenerated code contains both (a) boilerplate code for the complex programming interfaces that the target computing platform presents and (b) systematic error and vulnerability checking code that makes the new implementations robust and secure. By providing a productive new mechanism for capturing and encapsulating knowledge about how to use modern complex interfaces, this new approach promises to greatly reduce the developer e‚ort required to obtain secure, robust so‰ware that executes on modern computing platforms.

3 citations


29 Aug 2017
TL;DR: A new technique that infers models of programs that manipulate relational databases and generates test databases and input commands, runs the program, then observes the resulting outputs and updated databases to infer the model.
Abstract: We present a new technique that infers models of programs that manipulate relational databases. This technique generates test databases and input commands, runs the program, then observes the resulting outputs and updated databases to infer the model. Because the technique works only with the externally observable inputs, outputs, and databases, it can infer the behavior of programs written in arbitrary languages using arbitrary coding styles and patterns. We also present a technique for automatically regenerating an implementation of the program based on the inferred model. The regenerator can produce a translated implementation in a different language and systematically include relevant security and error checks. We present results that illustrate the use of the technique to eliminate SQL injection vulnerabilities and the translation of applications from Java and Ruby on Rails to Python.

2 citations



Patent
16 May 2017
TL;DR: In this article, the authors present a sensor profile of the sensor indicating a relationship between a sensor parameter operating range and a deviation of sensor data as a result of scaling one or more sensor parameters.
Abstract: A sensor produces the sensor data for a sensor data consumer. A facility receives a sensor profile of the sensor indicating a relationship between a sensor parameter operating range and a deviation of the sensor data as a result of scaling one or more sensor parameters. The facility receives a tolerance profile of the sensor data consumer indicating a tolerable degree of deviation of the sensor data and scales a parameter of the sensor according to the tolerance profile. The scaling reduces a power dissipation level of the sensor.

Patent
02 Jun 2017
TL;DR: In this article, a communication system receives a binary sequence from a sensor, identifies a power consuming characteristic of the binary sequence, and determines an error component configured to reduce the power consuming characteristics of binary sequence.
Abstract: A communication system receives a binary sequence from a sensor, identifies a power consuming characteristic of the binary sequence, and determines an error component configured to reduce the power consuming characteristic of the binary sequence. The system compares the error component to an error tolerance deviation, and if the error component is below the error tolerance deviation, combines the error component with the binary sequence to produce an output sequence and transmits the output sequence via a serial interface to a receiver configured to receive the output sequence. The error threshold is based in part on an error tolerance characteristic of the receiver.