11 papers · ranked by Valyu relevance
Marc Shapiro, Annette Bieniusa, Peter Zeller, Gustavo Petri
Referential integrity (RI) is an important correctness property of a shared, distributed object storage system. It is sometimes thought that enforcing RI requires a strong form of consistency. In this paper, we argue that causal consistency suffices to maintain RI. We support this argument with pseudocode for a…
Sam Blackshear, John Mitchell, Todd Nowacki, Shaz Qadeer
The Move language provides abstractions for programming with digital assets via a mix of value semantics and reference semantics. Ensuring memory safety in programs with references that access a shared, mutable global ledger is difficult, yet essential for the use-cases targeted by Move. The language meets this…
Edward A. Lee, Ondřej Lhoták
Reference immutability is a type based technique for taming mutation that has long been studied in the context of object-oriented languages, like Java. Recently, though, languages like Scala have blurred the lines between functional programming languages and object oriented programming languages. We explore how…
Alexandr Savinov
For the past several decades, programmers have been modeling things in the world with trees using hierarchies of classes and object-oriented programming (OOP) languages. In this paper, we describe a novel approach to programming, called conceptoriented programming (COP), which generalizes classes and inheritance by…
Victor Chen, Ayden Coughlin, Michael D. Bond
Automatically translating system software from C to Rust is an appealing but challenging problem, as it requires whole-program reasoning to satisfy Rust's ownership and borrowing discipline. A key enabling step in whole-program translation is interface translation, which produces Rust declarations for the C program's…
Ulysse Beaugnon, Basile Clément, Nicolas Tollenaere, Albert Cohen
Traditional optimizing compilers rely on rewrite rules to iteratively apply program transformations. This iterative approach hides optimization opportunities behind intermediate transformation steps. For instance, vectorization can only be applied to the innermost loop in a nest: one must first perform a loop…
Hiun Kim
Modularity is the fundamental aspect of modern software engineering, however many advanced modularity techniques requires prospective technologies as part of development and operation process. In this paper, we present Refinable Function, an object-oriented approach to advanced languagebased, symmetric modularity…
Nico Lehmann, Adam Geller, Gilles Barthe, Niki Vazou + 1 more
We introduce Flux, which shows how logical refinements can work hand in glove with Rust's ownership mechanisms to yield ergonomic type-based verification of low-level pointer manipulating programs. First, we design a novel refined type system for Rust that indexes mutable locations, with pure (immutable) values that…
Yegor Bugayenko
C++, Java, C#, Python, Ruby, JavaScript are the most powerful object-oriented programming languages, if language power would be defined as the number of features available for a programmer. EO, on the other hand, is an object-oriented programming language with a reduced set of features: it has nothing by objects and…
Gerald Baumgartner, Konstantin Läufer, Vincent F. Russo
Design patterns are distilled from many real systems to catalog common programming practice. However, some object-oriented design patterns are distorted or overly complicated because of the lack of supporting programming language constructs or mechanisms. For this paper, we have analyzed several published design…
Julien Cohen, Rémi Douence, Akram Ajouli
Evolvability is a major criteria of quality for enterprise software. Evolvability is directly impacted by the design choices on the software architectures [1]. However, it is generally impossible to find software architectures that are evolvable with respect to all concerns. So, one of these concerns has to be…