<efrbr:recordSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:efrbr="http://vfrbr.info/efrbr/1.1" xmlns:efrbr-work="http://vfrbr.info/efrbr/1.1/work" xmlns:efrbr-expression="http://vfrbr.info/efrbr/1.1/expression" xmlns:efrbr-manifestation="http://vfrbr.info/efrbr/1.1/manifestation" xmlns:efrbr-person="http://vfrbr.info/efrbr/1.1/person" xmlns:efrbr-corporateBody="http://vfrbr.info/efrbr/1.1/corporateBody" xmlns:efrbr-concept="http://vfrbr.info/efrbr/1.1/concept" xmlns:efrbr-structure="http://vfrbr.info/efrbr/1.1/structure" xmlns:efrbr-responsible="http://vfrbr.info/efrbr/1.1/responsible" xmlns:efrbr-subject="http://vfrbr.info/efrbr/1.1/subject" xmlns:efrbr-other="http://vfrbr.info/efrbr/1.1/other" xsi:schemaLocation="http://vfrbr.info/efrbr/1.1 http://vfrbr.info/schemas/1.1/efrbr.xsd"><efrbr:entities><efrbr-work:work identifier="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA"><efrbr-work:titleOfTheWork>Well-typed programs can go wrong: a study of typing-related bugs in JVM compilers</efrbr-work:titleOfTheWork></efrbr-work:work><efrbr-expression:expression identifier="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA"><efrbr-expression:titleOfTheExpression>Well-typed programs can go wrong: a study of typing-related bugs in JVM compilers</efrbr-expression:titleOfTheExpression><efrbr-expression:formOfExpression vocabulary="DIAS:TYPES">
            Peer-Reviewed Journal Publication
            Δημοσίευση σε Περιοδικό με Κριτές
         </efrbr-expression:formOfExpression><efrbr-expression:dateOfExpression type="issued">2023-06-13</efrbr-expression:dateOfExpression><efrbr-expression:dateOfExpression type="published">2021</efrbr-expression:dateOfExpression><efrbr-expression:languageOfExpression vocabulary="iso639-1">en</efrbr-expression:languageOfExpression><efrbr-expression:otherDistinguishingCharacteristic>This work has received funding from the European Union’s Horizon 2020 research and innovation programme under grant agreement No. 825328. (FASTEN - Fine-Grained Analysis of Software Ecosystems as Networks)</efrbr-expression:otherDistinguishingCharacteristic><efrbr-expression:summarizationOfContent>Despite the substantial progress in compiler testing, research endeavors have mainly focused on detecting compiler crashes and subtle miscompilations caused by bugs in the implementation of compiler optimizations. Surprisingly, this growing body of work neglects other compiler components, most notably the front-end. In statically-typed programming languages with rich and expressive type systems and modern features, such as type inference or a mix of object-oriented with functional programming features, the process of static typing in compiler front-ends is complicated by a high-density of bugs. Such bugs can lead to the acceptance of incorrect programs (breaking code portability or the type system's soundness), the rejection of correct (e.g. well-typed) programs, and the reporting of misleading errors and warnings.
We conduct, what is to the best of our knowledge, the first empirical study for understanding and characterizing typing-related compiler bugs. To do so, we manually study 320 typing-related bugs (along with their fixes and test cases) that are randomly sampled from four mainstream JVM languages, namely Java, Scala, Kotlin, and Groovy. We evaluate each bug in terms of several aspects, including their symptom, root cause, bug fix's size, and the characteristics of the bug-revealing test cases. Some representative observations indicate that: (1) more than half of the typing-related bugs manifest as unexpected compile-time errors: the buggy compiler wrongly rejects semantically correct programs, (2) the majority of typing-related bugs lie in the implementations of the underlying type systems and in other core components related to operations on types, (3) parametric polymorphism is the most pervasive feature in the corresponding test cases, (4) one third of typing-related bugs are triggered by non-compilable programs.
We believe that our study opens up a new research direction by driving future researchers to build appropriate methods and techniques for a more holistic testing of compilers.</efrbr-expression:summarizationOfContent><efrbr-expression:useRestrictionsOnTheExpression type="creative-commons">http://creativecommons.org/licenses/by/4.0/</efrbr-expression:useRestrictionsOnTheExpression><efrbr-expression:note type="journal name">Proceedings of the ACM on Programming Languages</efrbr-expression:note><efrbr-expression:note type="journal volume">5</efrbr-expression:note><efrbr-expression:note type="journal number">OOPSLA</efrbr-expression:note></efrbr-expression:expression><efrbr-manifestation:manifestation identifier="https://dias.library.tuc.gr/view/96132"><efrbr-manifestation:titleOfTheManifestation>Chaliasos_et_al_Proc. ACM Program. Lang._5(OOPSLA)_2021.pdf</efrbr-manifestation:titleOfTheManifestation><efrbr-manifestation:publicationDistribution><efrbr-manifestation:placeOfPublicationDistribution type="distribution">Chania [Greece]</efrbr-manifestation:placeOfPublicationDistribution><efrbr-manifestation:publisherDistributor type="distributor">Library of TUC</efrbr-manifestation:publisherDistributor><efrbr-manifestation:dateOfPublicationDistribution>2023-06-13</efrbr-manifestation:dateOfPublicationDistribution></efrbr-manifestation:publicationDistribution><efrbr-manifestation:formOfCarrier>application/pdf</efrbr-manifestation:formOfCarrier><efrbr-manifestation:extentOfTheCarrier>869.1 kB</efrbr-manifestation:extentOfTheCarrier><efrbr-manifestation:accessRestrictionsOnTheManifestation>free</efrbr-manifestation:accessRestrictionsOnTheManifestation></efrbr-manifestation:manifestation><efrbr-person:person identifier="A5F7339C-6308-47A9-AB49-714036B4594B"><efrbr-person:nameOfPerson vocabulary="">
            Chaliasos Stefanos
         </efrbr-person:nameOfPerson></efrbr-person:person><efrbr-person:person identifier="D09002D1-42DE-480F-8F0B-6E546DFBFCC6"><efrbr-person:nameOfPerson vocabulary="">
            Sotiropoulos Thodoris
         </efrbr-person:nameOfPerson></efrbr-person:person><efrbr-person:person identifier="DBE5C542-96A4-4B14-9A98-8B3883DB9737"><efrbr-person:nameOfPerson vocabulary="">
            Drosos Georgios-Petros
         </efrbr-person:nameOfPerson></efrbr-person:person><efrbr-person:person identifier="http://users.isc.tuc.gr/~cmitropoulos"><efrbr-person:nameOfPerson vocabulary="TUC:LDAP">
            Mitropoulos Charalampos-Ioannis
            Μητροπουλος Χαραλαμπος-Ιωαννης
         </efrbr-person:nameOfPerson></efrbr-person:person><efrbr-person:person identifier="A97AF696-A54F-427A-8438-32A45E293B92"><efrbr-person:nameOfPerson vocabulary="">
            Mitropoulos Dimitris
         </efrbr-person:nameOfPerson></efrbr-person:person><efrbr-person:person identifier="https://viaf.org/viaf/75684161"><efrbr-person:nameOfPerson vocabulary="VIAF">
            Spinellis, Diomidis
         </efrbr-person:nameOfPerson></efrbr-person:person><efrbr-corporateBody:corporateBody identifier="https://v2.sherpa.ac.uk/id/publisher/21"><efrbr-corporateBody:nameOfTheCorporateBody vocabulary="S/R:PUBLISHERS">
            Association for Computing Machinery (ACM)
         </efrbr-corporateBody:nameOfTheCorporateBody></efrbr-corporateBody:corporateBody><efrbr-concept:concept identifier="B20BF78F-5579-4704-87FF-699C231A0335"><efrbr-concept:termForTheConcept>
            Compiler testing
         </efrbr-concept:termForTheConcept></efrbr-concept:concept><efrbr-concept:concept identifier="45B45017-ED55-4B48-907A-29EE9ECE46C7"><efrbr-concept:termForTheConcept>
            Java
         </efrbr-concept:termForTheConcept></efrbr-concept:concept><efrbr-concept:concept identifier="638C328A-A549-475B-A3AD-94ABAEBE0BDF"><efrbr-concept:termForTheConcept>
            Scala
         </efrbr-concept:termForTheConcept></efrbr-concept:concept><efrbr-concept:concept identifier="210EBC9F-4198-49FA-BBF3-6B406EE4E931"><efrbr-concept:termForTheConcept>
            Groovy
         </efrbr-concept:termForTheConcept></efrbr-concept:concept><efrbr-concept:concept identifier="5EF589E5-5D9E-4D19-B713-6217DACA2352"><efrbr-concept:termForTheConcept>
            Static typing
         </efrbr-concept:termForTheConcept></efrbr-concept:concept><efrbr-concept:concept identifier="7EC1B9D3-F4EF-47BD-8EA9-0590010C9ECB"><efrbr-concept:termForTheConcept>
            Kotlin
         </efrbr-concept:termForTheConcept></efrbr-concept:concept><efrbr-concept:concept identifier="C321FE92-B115-4C65-B9AB-8258B85563CF"><efrbr-concept:termForTheConcept>
            Compiler bugs
         </efrbr-concept:termForTheConcept></efrbr-concept:concept></efrbr:entities><efrbr:relationships><efrbr-structure:structureRelations><efrbr-structure:realizedThrough sourceEntity="work" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="expression" targetURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA"/><efrbr-structure:embodiedIn sourceEntity="expression" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="manifestation" targetURI="http://purl.tuc.gr/dl/dias/C92CA220-B942-425B-A34E-3AF3ED0C4E0B"/></efrbr-structure:structureRelations><efrbr-responsible:responsibleRelations><efrbr-responsible:createdBy sourceEntity="work" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="person" targetURI="A5F7339C-6308-47A9-AB49-714036B4594B"/><efrbr-responsible:realizedBy sourceEntity="expression" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="person" targetURI="A5F7339C-6308-47A9-AB49-714036B4594B" role="author"/><efrbr-responsible:realizedBy sourceEntity="expression" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="person" targetURI="D09002D1-42DE-480F-8F0B-6E546DFBFCC6" role="author"/><efrbr-responsible:realizedBy sourceEntity="expression" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="person" targetURI="DBE5C542-96A4-4B14-9A98-8B3883DB9737" role="author"/><efrbr-responsible:realizedBy sourceEntity="expression" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="person" targetURI="http://users.isc.tuc.gr/~cmitropoulos" role="author"/><efrbr-responsible:realizedBy sourceEntity="expression" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="person" targetURI="A97AF696-A54F-427A-8438-32A45E293B92" role="author"/><efrbr-responsible:realizedBy sourceEntity="expression" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="person" targetURI="https://viaf.org/viaf/75684161" role="author"/><efrbr-responsible:realizedBy sourceEntity="expression" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="person" targetURI="https://v2.sherpa.ac.uk/id/publisher/21" role="publisher"/></efrbr-responsible:responsibleRelations><efrbr-subject:subjectRelations><efrbr-subject:hasSubject sourceEntity="work" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="concept" targetURI="B20BF78F-5579-4704-87FF-699C231A0335"/><efrbr-subject:hasSubject sourceEntity="work" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="concept" targetURI="45B45017-ED55-4B48-907A-29EE9ECE46C7"/><efrbr-subject:hasSubject sourceEntity="work" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="concept" targetURI="638C328A-A549-475B-A3AD-94ABAEBE0BDF"/><efrbr-subject:hasSubject sourceEntity="work" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="concept" targetURI="210EBC9F-4198-49FA-BBF3-6B406EE4E931"/><efrbr-subject:hasSubject sourceEntity="work" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="concept" targetURI="5EF589E5-5D9E-4D19-B713-6217DACA2352"/><efrbr-subject:hasSubject sourceEntity="work" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="concept" targetURI="7EC1B9D3-F4EF-47BD-8EA9-0590010C9ECB"/><efrbr-subject:hasSubject sourceEntity="work" sourceURI="http://purl.tuc.gr/dl/dias/516DD474-FCD4-49E7-A38E-FFCB5748E6DA" targetEntity="concept" targetURI="C321FE92-B115-4C65-B9AB-8258B85563CF"/></efrbr-subject:subjectRelations><efrbr-other:otherRelations/></efrbr:relationships></efrbr:recordSet>