A promise checked is a promise kept: Inspection Testing

03/19/2018
by   Joachim Breitner, et al.
0

Occasionally, developers need to ensure that the compiler treats their code in a specific way that is only visible by inspecting intermediate or final compilation artifacts. This is particularly common with carefully crafted compositional libraries, where certain usage patterns are expected to trigger an intricate sequence of compiler optimizations -- stream fusion is a well-known example. The developer of such a library has to manually inspect build artifacts and check for the expected properties. Because this is too tedious to do often, it will likely go unnoticed if the property is broken by a change to the library code, its dependencies or the compiler. The lack of automation has led to released versions of such libraries breaking their documented promises. This indicates that there is an unrecognized need for a new testing paradigm, inspection testing, where the programmer declaratively describes non-functional properties of an compilation artifact and the compiler checks these properties. We define inspection testing abstractly, implement it in the context of Haskell and show that it increases the quality of such libraries.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
03/19/2018

Beyond correct and fast: Inspection Testing

Occasionally, developers need to ensure that the compiler treats their c...
research
05/21/2018

The sufficiently smart compiler is a theorem prover

That the Haskell Compiler GHC is capable of proving non-trivial equaliti...
research
03/13/2019

The Emergence of Software Diversity in Maven Central

Maven artifacts are immutable: an artifact that is uploaded on Maven Cen...
research
11/13/2017

Souper: A Synthesizing Superoptimizer

If we can automatically derive compiler optimizations, we might be able ...
research
02/17/2022

Million.js: A Fast, Compiler-Augmented Virtual DOM for Performant JavaScript UI Libraries

The need for developing and delivering interactive web applications has ...
research
06/13/2019

A JIT Compiler for Neural Network Inference

This paper describes a C++ library that compiles neural network models a...
research
10/05/2018

Compiler Testing: A Systematic Literature Analysis

Compilers are widely-used infrastructures in accelerating the software d...

Please sign up or login with your details

Forgot password? Click here to reset