2018
DOI: 10.1145/3299711.3242748
|View full text |Cite
|
Sign up to set email alerts
|

A promise checked is a promise kept: inspection testing

Abstract: 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 i… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
1
1

Citation Types

0
2
0

Year Published

2018
2018
2020
2020

Publication Types

Select...
2
1

Relationship

1
2

Authors

Journals

citations
Cited by 3 publications
(2 citation statements)
references
References 19 publications
0
2
0
Order By: Relevance
“…One might worry that all the calls to reverse , reverseApp , (++) and assocP in the derivation will spoil the performance of the function, but because Haskell is a lazy language, in practice none of these calls are actually executed. And in fact (with optimizations turned on), the compiler completely removes them from the code and -as we confirmed using inspection testing [Breitner 2018] -both definitions of reverseApp optimize to identical intermediate code.…”
Section: == Reverse Xs ++ (X:ys) == Reverseapp Xs (X:ys)mentioning
confidence: 56%
“…One might worry that all the calls to reverse , reverseApp , (++) and assocP in the derivation will spoil the performance of the function, but because Haskell is a lazy language, in practice none of these calls are actually executed. And in fact (with optimizations turned on), the compiler completely removes them from the code and -as we confirmed using inspection testing [Breitner 2018] -both definitions of reverseApp optimize to identical intermediate code.…”
Section: == Reverse Xs ++ (X:ys) == Reverseapp Xs (X:ys)mentioning
confidence: 56%
“…Adapting these rules correctly required a few extra steps, which we discuss in the next two paragraphs. During development, the inspection-testing library by Breitner (2018) was a helpful tool to quickly test whether fusion was happening correctly.…”
Section: Remarks On Optimizationmentioning
confidence: 99%