Effect-driven QuickChecking of compilers

How does one test a language implementation with QuickCheck (aka. property-based testing)? One approach is to generate programs following the grammar of the language. But in a statically-typed language such as OCaml too many of these candidate programs will be rejected as ill-typed by the type check...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:Proceedings of ACM on programming languages 2017-09, Vol.1 (ICFP), p.1-23
Hauptverfasser: Midtgaard, Jan, Justesen, Mathias Nygaard, Kasting, Patrick, Nielson, Flemming, Nielson, Hanne Riis
Format: Artikel
Sprache:eng
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 23
container_issue ICFP
container_start_page 1
container_title Proceedings of ACM on programming languages
container_volume 1
creator Midtgaard, Jan
Justesen, Mathias Nygaard
Kasting, Patrick
Nielson, Flemming
Nielson, Hanne Riis
description How does one test a language implementation with QuickCheck (aka. property-based testing)? One approach is to generate programs following the grammar of the language. But in a statically-typed language such as OCaml too many of these candidate programs will be rejected as ill-typed by the type checker. As a refinement Pałka et al. propose to generate programs in a goal-directed, bottom-up reading up of the typing relation. We have written such a generator. However many of the generated programs has output that depend on the evaluation order, which is commonly under-specified in languages such as OCaml, Scheme, C, C++, etc. In this paper we develop a type and effect system for conservatively detecting evaluation-order dependence and propose its goal-directed reading as a generator of programs that are independent of evaluation order. We illustrate the approach by generating programs to test OCaml's two compiler backends against each other and report on a number of bugs we have found doing so.
doi_str_mv 10.1145/3110259
format Article
fullrecord <record><control><sourceid>crossref</sourceid><recordid>TN_cdi_crossref_primary_10_1145_3110259</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>10_1145_3110259</sourcerecordid><originalsourceid>FETCH-LOGICAL-c258t-7e426239ecf63ef8d244200d3de602de2284d2f88c0dba0bf2768f692a01d1403</originalsourceid><addsrcrecordid>eNpNj01LAzEQQIMoWGrxL-xNL9GZSTabHGWpViiIoOdlm8zo2o8tSRX89yL24Om904On1CXCDaKtbw0iUB1O1IRsU2u0hKf__FzNSvkAAAzGehMm6nouwvGgUx6-eFc9fw5x3b5zXA-7t2qUKo7b_bDhXC7UmfSbwrMjp-r1fv7SLvTy6eGxvVvqSLU_6IYtOTKBozjD4hNZSwDJJHZAiYm8TSTeR0irHlZCjfPiAvWACS2Yqbr668Y8lpJZun0etn3-7hC638fu-Gh-AJVVQUc</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype></control><display><type>article</type><title>Effect-driven QuickChecking of compilers</title><source>ACM Digital Library Complete</source><source>EZB-FREE-00999 freely available EZB journals</source><creator>Midtgaard, Jan ; Justesen, Mathias Nygaard ; Kasting, Patrick ; Nielson, Flemming ; Nielson, Hanne Riis</creator><creatorcontrib>Midtgaard, Jan ; Justesen, Mathias Nygaard ; Kasting, Patrick ; Nielson, Flemming ; Nielson, Hanne Riis</creatorcontrib><description>How does one test a language implementation with QuickCheck (aka. property-based testing)? One approach is to generate programs following the grammar of the language. But in a statically-typed language such as OCaml too many of these candidate programs will be rejected as ill-typed by the type checker. As a refinement Pałka et al. propose to generate programs in a goal-directed, bottom-up reading up of the typing relation. We have written such a generator. However many of the generated programs has output that depend on the evaluation order, which is commonly under-specified in languages such as OCaml, Scheme, C, C++, etc. In this paper we develop a type and effect system for conservatively detecting evaluation-order dependence and propose its goal-directed reading as a generator of programs that are independent of evaluation order. We illustrate the approach by generating programs to test OCaml's two compiler backends against each other and report on a number of bugs we have found doing so.</description><identifier>ISSN: 2475-1421</identifier><identifier>EISSN: 2475-1421</identifier><identifier>DOI: 10.1145/3110259</identifier><language>eng</language><ispartof>Proceedings of ACM on programming languages, 2017-09, Vol.1 (ICFP), p.1-23</ispartof><lds50>peer_reviewed</lds50><oa>free_for_read</oa><woscitedreferencessubscribed>false</woscitedreferencessubscribed><citedby>FETCH-LOGICAL-c258t-7e426239ecf63ef8d244200d3de602de2284d2f88c0dba0bf2768f692a01d1403</citedby><cites>FETCH-LOGICAL-c258t-7e426239ecf63ef8d244200d3de602de2284d2f88c0dba0bf2768f692a01d1403</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>314,780,784,27924,27925</link.rule.ids></links><search><creatorcontrib>Midtgaard, Jan</creatorcontrib><creatorcontrib>Justesen, Mathias Nygaard</creatorcontrib><creatorcontrib>Kasting, Patrick</creatorcontrib><creatorcontrib>Nielson, Flemming</creatorcontrib><creatorcontrib>Nielson, Hanne Riis</creatorcontrib><title>Effect-driven QuickChecking of compilers</title><title>Proceedings of ACM on programming languages</title><description>How does one test a language implementation with QuickCheck (aka. property-based testing)? One approach is to generate programs following the grammar of the language. But in a statically-typed language such as OCaml too many of these candidate programs will be rejected as ill-typed by the type checker. As a refinement Pałka et al. propose to generate programs in a goal-directed, bottom-up reading up of the typing relation. We have written such a generator. However many of the generated programs has output that depend on the evaluation order, which is commonly under-specified in languages such as OCaml, Scheme, C, C++, etc. In this paper we develop a type and effect system for conservatively detecting evaluation-order dependence and propose its goal-directed reading as a generator of programs that are independent of evaluation order. We illustrate the approach by generating programs to test OCaml's two compiler backends against each other and report on a number of bugs we have found doing so.</description><issn>2475-1421</issn><issn>2475-1421</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2017</creationdate><recordtype>article</recordtype><recordid>eNpNj01LAzEQQIMoWGrxL-xNL9GZSTabHGWpViiIoOdlm8zo2o8tSRX89yL24Om904On1CXCDaKtbw0iUB1O1IRsU2u0hKf__FzNSvkAAAzGehMm6nouwvGgUx6-eFc9fw5x3b5zXA-7t2qUKo7b_bDhXC7UmfSbwrMjp-r1fv7SLvTy6eGxvVvqSLU_6IYtOTKBozjD4hNZSwDJJHZAiYm8TSTeR0irHlZCjfPiAvWACS2Yqbr668Y8lpJZun0etn3-7hC638fu-Gh-AJVVQUc</recordid><startdate>20170901</startdate><enddate>20170901</enddate><creator>Midtgaard, Jan</creator><creator>Justesen, Mathias Nygaard</creator><creator>Kasting, Patrick</creator><creator>Nielson, Flemming</creator><creator>Nielson, Hanne Riis</creator><scope>AAYXX</scope><scope>CITATION</scope></search><sort><creationdate>20170901</creationdate><title>Effect-driven QuickChecking of compilers</title><author>Midtgaard, Jan ; Justesen, Mathias Nygaard ; Kasting, Patrick ; Nielson, Flemming ; Nielson, Hanne Riis</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-LOGICAL-c258t-7e426239ecf63ef8d244200d3de602de2284d2f88c0dba0bf2768f692a01d1403</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2017</creationdate><toplevel>peer_reviewed</toplevel><toplevel>online_resources</toplevel><creatorcontrib>Midtgaard, Jan</creatorcontrib><creatorcontrib>Justesen, Mathias Nygaard</creatorcontrib><creatorcontrib>Kasting, Patrick</creatorcontrib><creatorcontrib>Nielson, Flemming</creatorcontrib><creatorcontrib>Nielson, Hanne Riis</creatorcontrib><collection>CrossRef</collection><jtitle>Proceedings of ACM on programming languages</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Midtgaard, Jan</au><au>Justesen, Mathias Nygaard</au><au>Kasting, Patrick</au><au>Nielson, Flemming</au><au>Nielson, Hanne Riis</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>Effect-driven QuickChecking of compilers</atitle><jtitle>Proceedings of ACM on programming languages</jtitle><date>2017-09-01</date><risdate>2017</risdate><volume>1</volume><issue>ICFP</issue><spage>1</spage><epage>23</epage><pages>1-23</pages><issn>2475-1421</issn><eissn>2475-1421</eissn><abstract>How does one test a language implementation with QuickCheck (aka. property-based testing)? One approach is to generate programs following the grammar of the language. But in a statically-typed language such as OCaml too many of these candidate programs will be rejected as ill-typed by the type checker. As a refinement Pałka et al. propose to generate programs in a goal-directed, bottom-up reading up of the typing relation. We have written such a generator. However many of the generated programs has output that depend on the evaluation order, which is commonly under-specified in languages such as OCaml, Scheme, C, C++, etc. In this paper we develop a type and effect system for conservatively detecting evaluation-order dependence and propose its goal-directed reading as a generator of programs that are independent of evaluation order. We illustrate the approach by generating programs to test OCaml's two compiler backends against each other and report on a number of bugs we have found doing so.</abstract><doi>10.1145/3110259</doi><tpages>23</tpages><oa>free_for_read</oa></addata></record>
fulltext fulltext
identifier ISSN: 2475-1421
ispartof Proceedings of ACM on programming languages, 2017-09, Vol.1 (ICFP), p.1-23
issn 2475-1421
2475-1421
language eng
recordid cdi_crossref_primary_10_1145_3110259
source ACM Digital Library Complete; EZB-FREE-00999 freely available EZB journals
title Effect-driven QuickChecking of compilers
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2024-12-26T12%3A40%3A48IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-crossref&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=Effect-driven%20QuickChecking%20of%20compilers&rft.jtitle=Proceedings%20of%20ACM%20on%20programming%20languages&rft.au=Midtgaard,%20Jan&rft.date=2017-09-01&rft.volume=1&rft.issue=ICFP&rft.spage=1&rft.epage=23&rft.pages=1-23&rft.issn=2475-1421&rft.eissn=2475-1421&rft_id=info:doi/10.1145/3110259&rft_dat=%3Ccrossref%3E10_1145_3110259%3C/crossref%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_id=info:pmid/&rfr_iscdi=true