European Conference on Object-Oriented Programming最新文献

筛选
英文 中文
Low-Level Bi-Abduction 低电平双向感应
European Conference on Object-Oriented Programming Pub Date : 2022-05-05 DOI: 10.48550/arXiv.2205.02590
L. Holík, Petr Peringer, Adam Rogalewicz, Veronika Soková, Tomáš Vojnar, Florian Zuleger
{"title":"Low-Level Bi-Abduction","authors":"L. Holík, Petr Peringer, Adam Rogalewicz, Veronika Soková, Tomáš Vojnar, Florian Zuleger","doi":"10.48550/arXiv.2205.02590","DOIUrl":"https://doi.org/10.48550/arXiv.2205.02590","url":null,"abstract":"The paper proposes a new static analysis designed to handle open programs, i.e., fragments of programs, with dynamic pointer-linked data structures - in particular, various kinds of lists - that employ advanced low-level pointer operations. The goal is to allow such programs be analysed without a need of writing analysis harnesses that would first initialise the structures being handled. The approach builds on a special flavour of separation logic and the approach of bi-abduction. The code of interest is analyzed along the call tree, starting from its leaves, with each function analysed just once without any call context, leading to a set of contracts summarizing the behaviour of the analysed functions. In order to handle the considered programs, methods of abduction existing in the literature are significantly modified and extended in the paper. The proposed approach has been implemented in a tool prototype and successfully evaluated on not large but complex programs.","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"40 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126220971","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}
引用次数: 1
Slicing of Probabilistic Programs based on Specifications 基于规范的概率程序切片
European Conference on Object-Oriented Programming Pub Date : 2022-05-01 DOI: 10.48550/arXiv.2205.03707
Marcelo Navarro, Federico Olmedo
{"title":"Slicing of Probabilistic Programs based on Specifications","authors":"Marcelo Navarro, Federico Olmedo","doi":"10.48550/arXiv.2205.03707","DOIUrl":"https://doi.org/10.48550/arXiv.2205.03707","url":null,"abstract":"This paper presents the first slicing approach for probabilistic programs based on specifications. We show that when probabilistic programs are accompanied by their specifications in the form of pre- and post-condition, we can exploit this semantic information to produce specification-preserving slices strictly more precise than slices yielded by conventional techniques based on data/control dependency. To achieve this goal, our technique is based on the backward propagation of post-conditions via the greatest pre-expectation transformer -- the probabilistic counterpart of Dijkstra weakest pre-condition transformer. The technique is termination-sensitive, allowing to preserve the partial as well as the total correctness of probabilistic programs w.r.t. their specifications. It is modular, featuring a local reasoning principle, and is formally proved correct. As fundamental technical ingredients of our technique, we design and prove sound verification condition generators for establishing the partial and total correctness of probabilistic programs, which are of interest on their own and can be exploited elsewhere for other purposes. On the practical side, we demonstrate the applicability of our approach by means of a few illustrative examples and a case study from the probabilistic modelling field. We also describe an algorithm for computing least slices among the space of slices derived by our technique.","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-05-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115244275","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}
引用次数: 0
Stay Safe under Panic: Affine Rust Programming with Multiparty Session Types 在恐慌下保持安全:使用多方会话类型的仿射Rust编程
European Conference on Object-Oriented Programming Pub Date : 2022-04-28 DOI: 10.48550/arXiv.2204.13464
Nicolas Lagaillardie, R. Neykova, N. Yoshida
{"title":"Stay Safe under Panic: Affine Rust Programming with Multiparty Session Types","authors":"Nicolas Lagaillardie, R. Neykova, N. Yoshida","doi":"10.48550/arXiv.2204.13464","DOIUrl":"https://doi.org/10.48550/arXiv.2204.13464","url":null,"abstract":"Communicating systems comprise diverse software components across networks. To ensure their robustness, modern programming languages such as Rust provide both strongly typed channels, whose usage is guaranteed to be affine (at most once), and cancellation operations over binary channels. For coordinating components to correctly communicate and synchronise with each other, we use the structuring mechanism from multiparty session types, extending it with affine communication channels and implicit/explicit cancellation mechanisms. This new typing discipline, affine multiparty session types (AMPST), ensures cancellation termination of multiple, independently running components and guarantees that communication will not get stuck due to error or abrupt termination. Guided by AMPST, we implemented an automated generation tool (MultiCrusty) of Rust APIs associated with cancellation termination algorithms, by which the Rust compiler auto-detects unsafe programs. Our evaluation shows that MultiCrusty provides an efficient mechanism for communication, synchronisation and propagation of the notifications of cancellation for arbitrary processes. We have implemented several usecases, including popular application protocols (OAuth, SMTP), and protocols with exception handling patterns (circuit breaker, distributed logging).","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2022-04-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128668731","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}
引用次数: 10
NWGraph: A Library of Generic Graph Algorithms and Data Structures in C++20 NWGraph:通用图算法和数据结构库
European Conference on Object-Oriented Programming Pub Date : 2021-09-24 DOI: 10.4230/LIPIcs.ECOOP.2022.31
A. Lumsdaine, Luke D'Alessandro, Kevin Deweese, J. Firoz, Tony Liu, Scott McMillan, John Phillip Ratzloff, Marcin Zalewski
{"title":"NWGraph: A Library of Generic Graph Algorithms and Data Structures in C++20","authors":"A. Lumsdaine, Luke D'Alessandro, Kevin Deweese, J. Firoz, Tony Liu, Scott McMillan, John Phillip Ratzloff, Marcin Zalewski","doi":"10.4230/LIPIcs.ECOOP.2022.31","DOIUrl":"https://doi.org/10.4230/LIPIcs.ECOOP.2022.31","url":null,"abstract":"The C++ Standard Library is a valuable collection of generic algorithms and data structures that improves the usability and reliability of C++ software. Graph algorithms and data structures are notably absent from the standard library, and previous attempts to fill this gap have not gained widespread adoption. In this paper we show that the richness of graph algorithms and data structures can in fact be captured by straightforward composition of existing C++ mechanisms. Generic programming is algorithm-oriented. Accordingly, we apply a systematic approach to analyzing a broad set of graph algorithms, “lift” unnecessary constraints from them, and organize the resulting set of minimal common type requirements , i.e., concepts, for defining their interfaces. By using the newly available ranges and concepts in C++20, the type requirements for generic graph algorithms can be succinctly expressed. The generic algorithms and data structures resulting from our analysis are realized in NWGraph, a modern, composable, and extensible C++ library.","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"28 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-09-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124629982","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}
引用次数: 1
Dealing with Variability in API Misuse Specification 处理API误用规范中的可变性
European Conference on Object-Oriented Programming Pub Date : 2021-05-11 DOI: 10.4230/LIPIcs.ECOOP.2021.19
R. Bonifácio, Stefan Krüger, Krishna Narasimhan, E. Bodden, M. Mezini
{"title":"Dealing with Variability in API Misuse Specification","authors":"R. Bonifácio, Stefan Krüger, Krishna Narasimhan, E. Bodden, M. Mezini","doi":"10.4230/LIPIcs.ECOOP.2021.19","DOIUrl":"https://doi.org/10.4230/LIPIcs.ECOOP.2021.19","url":null,"abstract":"APIs are the primary mechanism for developers to gain access to externally defined services and tools. However, previous research has revealed API misuses that violate the contract of APIs to be prevalent. Such misuses can have harmful consequences, especially in the context of cryptographic libraries. Various API misuse detectors have been proposed to address this issue including CogniCrypt, one of the most versatile of such detectors and that uses a language CrySL to specify cryptographic API usage contracts. Nonetheless, existing approaches to detect API misuse had not been designed for systematic reuse, ignoring the fact that different versions of a library, different versions of a platform, and different recommendations or guidelines might introduce variability in the correct usage of an API. Yet, little is known about how such variability impacts the specification of the correct API usage. This paper investigates this question by analyzing the impact of various sources of variability on widely used Java cryptographic libraries including JCA, Bouncy Castle, and Google Tink. The results of our investigation show that sources of variability like new versions of the API and security standards significantly impact the specifications. We then use the insights gained from our investigation to motivate an extension to the CrySL language named MetaCrySL, which builds on meta programming concepts. We evaluate MetaCrySL by specifying usage rules for a family of Android versions and illustrate that MetaCrySL can model all forms of variability we identified and drastically reduce the size of a family of specifications for the correct usage of cryptographic APIs","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"23 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-05-11","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123549038","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}
引用次数: 3
Refinements of Futures Past: Higher-Order Specification with Implicit Refinement Types (Extended Version) 期货过去的改进:具有隐式改进类型的高阶规范(扩展版)
European Conference on Object-Oriented Programming Pub Date : 2021-05-05 DOI: 10.4230/LIPIcs.ECOOP.2021.18
Anish Tondwalkar, Matthew Kolosick, Ranjit Jhala
{"title":"Refinements of Futures Past: Higher-Order Specification with Implicit Refinement Types (Extended Version)","authors":"Anish Tondwalkar, Matthew Kolosick, Ranjit Jhala","doi":"10.4230/LIPIcs.ECOOP.2021.18","DOIUrl":"https://doi.org/10.4230/LIPIcs.ECOOP.2021.18","url":null,"abstract":"Refinement types decorate types with assertions that enable automatic verification. Like assertions, refinements are limited to binders that are in scope, and hence, cannot express higher-order specifications. Ghost variables circumvent this limitation but are prohibitively tedious to use as the programmer must divine and explicate their values at all call-sites. We introduce Implicit Refinement Types which turn ghost variables into implicit pair and function types, in a way that lets the refinement typechecker automatically synthesize their values at compile time. Implicit Refinement Types further take advantage of refinement type information, allowing them to be used as a lightweight verification tool, rather than merely as a technique to automate programming tasks. We evaluate the utility of Implicit Refinement Types by showing how they enable the modular specification and automatic verification of various higher-order examples including stateful protocols, access control, and resource usage. 2012 ACM Subject Classification Theory of computation → Program constructs; Theory of computation → Program specifications; Theory of computation → Program verification","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"81 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2021-05-05","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132080567","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}
引用次数: 1
Static Type Analysis by Abstract Interpretation of Python Programs 通过抽象解释 Python 程序进行静态类型分析
European Conference on Object-Oriented Programming Pub Date : 2020-11-15 DOI: 10.4230/LIPIcs.ECOOP.2020.17
Raphaël Monat, Abdelraouf Ouadjaout, A. Miné
{"title":"Static Type Analysis by Abstract Interpretation of Python Programs","authors":"Raphaël Monat, Abdelraouf Ouadjaout, A. Miné","doi":"10.4230/LIPIcs.ECOOP.2020.17","DOIUrl":"https://doi.org/10.4230/LIPIcs.ECOOP.2020.17","url":null,"abstract":"Python is an increasingly popular dynamic programming language, particularly used in the scientific community and well-known for its powerful and permissive high-level syntax. Our work aims at detecting statically and automatically type errors. As these type errors are exceptions that can be caught later on, we precisely track all exceptions (raised or caught). We designed a static analysis by abstract interpretation able to infer the possible types of variables, taking into account the full control-flow. It handles both typing paradigms used in Python, nominal and structural, supports Python's object model, introspection operators allowing dynamic type testing, dynamic attribute addition, as well as exception handling. We present a flow-and context-sensitive analysis with special domains to support containers (such as lists) and infer type equalities (allowing it to express parametric polymorphism). The analysis is soundly derived by abstract interpretation from a concrete semantics of Python developed by Fromherz et al. Our analysis is designed in a modular way as a set of domains abstracting a concrete collecting semantics. It has been implemented into the MOPSA analysis framework, and leverages external type annotations from the Typeshed project to support the vast standard library. We show that it scales to benchmarks a few thousand lines long, and preliminary results show it is able to analyze a small real-life command-line utility called PathPicker. Compared to previous work, it is sound, while it keeps similar efficiency and precision.","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"118 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-11-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128189963","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}
引用次数: 20
A Trusted Infrastructure for Symbolic Analysis of Event-Driven Web Applications 事件驱动Web应用程序符号分析的可信基础结构
European Conference on Object-Oriented Programming Pub Date : 2020-06-10 DOI: 10.4230/LIPICS.ECOOP.2020.28
Gabriela Sampaio, J. Santos, P. Maksimovic, Philippa Gardner
{"title":"A Trusted Infrastructure for Symbolic Analysis of Event-Driven Web Applications","authors":"Gabriela Sampaio, J. Santos, P. Maksimovic, Philippa Gardner","doi":"10.4230/LIPICS.ECOOP.2020.28","DOIUrl":"https://doi.org/10.4230/LIPICS.ECOOP.2020.28","url":null,"abstract":"We introduce a trusted infrastructure for the symbolic analysis of modern event-driven Web applications. This infrastructure consists of reference implementations of the DOM Core Level 1, DOM UI Events, JavaScript Promises and the JavaScript async/await APIs, all underpinned by a simple Core Event Semantics which is sufficiently expressive to describe the event models underlying these APIs. Our reference implementations are trustworthy in that three follow the appropriate standards line-by-line and all are thoroughly tested against the official test-suites, passing all the applicable tests. Using the Core Event Semantics and the reference implementations, we develop JaVerT.Click, a symbolic execution tool for JavaScript that, for the first time, supports reasoning about JavaScript programs that use multiple event-related APIs. We demonstrate the viability of JaVerT.Click by proving both the presence and absence of bugs in real-world JavaScript code. 2012 ACM Subject Classification Software and its engineering → Formal software verification; Software and its engineering → Software testing and debugging","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-06-10","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131221274","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}
引用次数: 3
Designing with Static Capabilities and Effects: Use, Mention, and Invariants 使用静态能力和效果进行设计:使用、提及和不变量
European Conference on Object-Oriented Programming Pub Date : 2020-05-23 DOI: 10.4230/LIPIcs.ECOOP.2020.10
Colin S. Gordon
{"title":"Designing with Static Capabilities and Effects: Use, Mention, and Invariants","authors":"Colin S. Gordon","doi":"10.4230/LIPIcs.ECOOP.2020.10","DOIUrl":"https://doi.org/10.4230/LIPIcs.ECOOP.2020.10","url":null,"abstract":"Capabilities (whether object or reference capabilities) are fundamentally tools to restrict effects. Thus static capabilities (object or reference) and effect systems take different technical machinery to the same core problem of statically restricting or reasoning about effects in programs. Any time two approaches can in principle address the same sets of problems, it becomes important to understand the trade-offs between the approaches, how these trade-offs might interact with the problem at hand. \u0000Experts who have worked in these areas tend to find the trade-offs somewhat obvious, having considered them in context before. However, this kind of design discussion is often written down only implicitly as comparison between two approaches for a specific program reasoning problem, rather than as a discussion of general trade-offs between general classes of techniques. As a result, it is not uncommon to set out to solve a problem with one technique, only to find the other better-suited. \u0000We discuss the trade-offs between static capabilities (specifically reference capabilities) and effect systems, articulating the challenges each approach tends to have in isolation, and how these are sometimes mitigated. We also put our discussion in context, by appealing to examples of how these trade-offs were considered in the course of developing prior systems in the area. Along the way, we highlight how seemingly-minor aspects of type systems -- weakening/framing and the mere existence of type contexts -- play a subtle role in the efficacy of these systems.","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-05-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130342449","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}
引用次数: 11
Semantic Patches for Java Program Transformation (Experience Report) Java程序转换的语义补丁(体验报告)
European Conference on Object-Oriented Programming Pub Date : 2019-07-15 DOI: 10.4230/LIPIcs.ECOOP.2019.22
Hong Jin Kang, Ferdian Thung, J. Lawall, Gilles Muller, Lingxiao Jiang, D. Lo
{"title":"Semantic Patches for Java Program Transformation (Experience Report)","authors":"Hong Jin Kang, Ferdian Thung, J. Lawall, Gilles Muller, Lingxiao Jiang, D. Lo","doi":"10.4230/LIPIcs.ECOOP.2019.22","DOIUrl":"https://doi.org/10.4230/LIPIcs.ECOOP.2019.22","url":null,"abstract":"Developing software often requires code changes that are widespread and applied to multiple locations. There are tools for Java that allow developers to specify patterns for program matching and source-to-source transformation. However, to our knowledge, none allows for transforming code based on its control-flow context. We prototype Coccinelle4J, an extension to Coccinelle, which is a program transformation tool designed for widespread changes in C code, in order to work on Java source code. We adapt Coccinelle to be able to apply scripts written in the Semantic Patch Language (SmPL), a language provided by Coccinelle, to Java source files. As a case study, we demonstrate the utility of Coccinelle4J with the task of API migration. We show 6 semantic patches to migrate from deprecated Android API methods on several open source Android projects. We describe how SmPL can be used to express several API migrations and justify several of our design decisions.","PeriodicalId":172012,"journal":{"name":"European Conference on Object-Oriented Programming","volume":"32 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2019-07-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123728460","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}
引用次数: 12
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
相关产品
×
本文献相关产品
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:604180095
Book学术官方微信