Asumu Takikawa, Daniel Feltey, Earl Dean, M. Flatt, R. Findler, Sam Tobin-Hochstadt, M. Felleisen
{"title":"Towards Practical Gradual Typing","authors":"Asumu Takikawa, Daniel Feltey, Earl Dean, M. Flatt, R. Findler, Sam Tobin-Hochstadt, M. Felleisen","doi":"10.4230/LIPIcs.ECOOP.2015.4","DOIUrl":"https://doi.org/10.4230/LIPIcs.ECOOP.2015.4","url":null,"abstract":"Over the past 20 years, programmers have embraced dynamically-typed programming languages. By now, they have also come to realize that programs in these languages lack reliable type information for software engineering purposes. Gradual typing addresses this problem; it empowers programmers to annotate an existing system with sound type information on a piecemeal basis. This paper presents an implementation of a gradual type system for a full-featured class-based language as well as a novel performance evaluation framework for gradual typing.","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134378667","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Flávio M. Medeiros, Christian Kästner, Márcio Ribeiro, Sarah Nadi, Rohit Gheyi
{"title":"The Love/Hate Relationship with the C Preprocessor: An Interview Study","authors":"Flávio M. Medeiros, Christian Kästner, Márcio Ribeiro, Sarah Nadi, Rohit Gheyi","doi":"10.4230/LIPIcs.ECOOP.2015.495","DOIUrl":"https://doi.org/10.4230/LIPIcs.ECOOP.2015.495","url":null,"abstract":"The C preprocessor has received strong criticism in academia, among others regarding separation of concerns, error proneness, and code obfuscation, but is widely used in practice. Many (mostly academic) alternatives to the preprocessor exist, but have not been adopted in practice. Since developers continue to use the preprocessor despite all criticism and research, we ask how practitioners perceive the C preprocessor. We performed interviews with 40 developers, used grounded theory to analyze the data, and cross-validated the results with data from a survey among 202 developers, repository mining, and results from previous studies. In particular, we investigated four research questions related to why the preprocessor is still widely used in practice, common problems, alternatives, and the impact of undisciplined annotations. Our study shows that developers are aware of the criticism the C preprocessor receives, but use it nonetheless, mainly for portability and variability. Many developers indicate that they regularly face preprocessor-related problems and preprocessor-related bugs. The majority of our interviewees do not see any current C-native technologies that can entirely replace the C preprocessor. However, developers tend to mitigate problems with guidelines, even though those guidelines are not enforced consistently. We report the key insights gained from our study and discuss implications for practitioners and researchers on how to better use the C preprocessor to minimize its negative impact.","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"63 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116299981","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Optimization Coaching for JavaScript","authors":"Vincent St-Amour, Shu-yu Guo","doi":"10.4230/LIPIcs.ECOOP.2015.271","DOIUrl":"https://doi.org/10.4230/LIPIcs.ECOOP.2015.271","url":null,"abstract":"The performance of dynamic object-oriented programming languages such as JavaScript depends heavily on highly optimizing just-in-time compilers. Such compilers, like all compilers, can silently fall back to generating conservative, low-performance code during optimization. As a result, programmers may inadvertently cause performance issues on users’ systems by making seemingly inoensive changes to programs. This paper shows how to solve the problem of silent optimization failures. It specifically explains how to create a so-called optimization coach for an object-oriented just-in-time-compiled programming language. The development and evaluation build on the SpiderMonkey JavaScript engine, but the results should generalize to a variety of similar platforms.","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"24 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-07-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133974953","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
M. Keil, Sankha Narayan Guria, Andreas Schlegel, Manuel Geffken, Peter Thiemann
{"title":"Transparent Object Proxies in JavaScript","authors":"M. Keil, Sankha Narayan Guria, Andreas Schlegel, Manuel Geffken, Peter Thiemann","doi":"10.4230/LIPIcs.ECOOP.2015.149","DOIUrl":"https://doi.org/10.4230/LIPIcs.ECOOP.2015.149","url":null,"abstract":"Proxies are the swiss army knives of object adaptation. They introduce a level of indirection to intercept select operations on a target object and divert them as method calls to a handler. Proxies have many uses like implementing access control, enforcing contracts, virtualizing resources. \u0000One important question in the design of a proxy API is whether a proxy object should inherit the identity of its target. Apparently proxies should have their own identity for security-related applications whereas other applications, in particular contract systems, require transparent proxies that compare equal to their target objects. \u0000We examine the issue with transparency in various use cases for proxies, discuss different approaches to obtain transparency, and propose two designs that require modest modifications in the JavaScript engine and cannot be bypassed by the programmer. \u0000We implement our designs in the SpiderMonkey JavaScript interpreter and bytecode compiler. Our evaluation shows that these modifications of have no statistically significant impact on the benchmark performance of the JavaScript engine. Furthermore, we demonstrate that contract systems based on wrappers require transparent proxies to avoid interference with program execution in realistic settings.","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"5 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-04-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125208220","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Trust, but Verify: Two-Phase Typing for Dynamic Languages","authors":"Panagiotis Vekris, B. Cosman, Ranjit Jhala","doi":"10.4230/LIPIcs.ECOOP.2015.52","DOIUrl":"https://doi.org/10.4230/LIPIcs.ECOOP.2015.52","url":null,"abstract":"A key challenge when statically typing so-called dynamic languages is the ubiquity of value-based overloading, where a given function can dynamically reflect upon and behave according to the types of its arguments. Thus, to establish basic types, the analysis must reason precisely about values, but in the presence of higher-order functions and polymorphism, this reasoning itself can require basic types. In this paper we address this chicken-and-egg problem by introducing the framework of two-phased typing. The first “trust” phase performs classical, i.e. flow-, path- and value-insensitive type checking to assign basic types to various program expressions. When the check inevitably runs into “errors” due to value-insensitivity, it wraps problematic expressions with DEAD-casts, which explicate the trust obligations that must be discharged by the second phase. The second phase uses refinement typing, a flow- and path-sensitive analysis, that decorates the first phase’s types with logical predicates to track value relationships and thereby verify the casts and establish other correctness properties for dynamically typed languages.","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"34 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-04-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117307062","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Capture-Avoiding and Hygienic Program Transformations","authors":"Sebastian Erdweg, T. Storm, Yi Dai","doi":"10.1007/978-3-662-44202-9_20","DOIUrl":"https://doi.org/10.1007/978-3-662-44202-9_20","url":null,"abstract":"","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"299 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121454132","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"An Executable Formal Semantics of PHP","authors":"Daniele Filaretti, S. Maffeis","doi":"10.1007/978-3-662-44202-9_23","DOIUrl":"https://doi.org/10.1007/978-3-662-44202-9_23","url":null,"abstract":"","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"65 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114921803","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Sound and Complete Subtyping between Coinductive Types for Object-Oriented Languages","authors":"D. Ancona, A. Corradi","doi":"10.1007/978-3-662-44202-9_12","DOIUrl":"https://doi.org/10.1007/978-3-662-44202-9_12","url":null,"abstract":"","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"114 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115815387","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
Cyrus Omar, Darya Kurilova, L. Nistor, Benjamin Chung, A. Potanin, Jonathan Aldrich
{"title":"Safely Composable Type-Specific Languages","authors":"Cyrus Omar, Darya Kurilova, L. Nistor, Benjamin Chung, A. Potanin, Jonathan Aldrich","doi":"10.1007/978-3-662-44202-9_5","DOIUrl":"https://doi.org/10.1007/978-3-662-44202-9_5","url":null,"abstract":"","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"98 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116542634","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}