Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Alex Potanin is active.

Publication


Featured researches published by Alex Potanin.


Communications of The ACM | 2005

Scale-free geometry in OO programs

Alex Potanin; James Noble; Marcus Frean; Robert Biddle

Though conventional OO design suggests programs should be built from many small objects, like Lego bricks, they are instead built from objects that are scale-free, like fractals, and unlike Lego bricks.


foundations of software engineering | 2007

Object and reference immutability using Java generics

Yoav Zibin; Alex Potanin; Mahmood Ali; Shay Artzi; Adam Kie|un; Michael D. Ernst

A compiler-checked immutability guarantee provides useful documentation, facilitates reasoning, and enables optimizations. This paper presents Immutability Generic Java (IGJ), a novel language extension that expresses immutability without changing Javas syntax by building upon Javas generics and annotation mechanisms. In IGJ, each class has one additional type parameter that is Immutable, Mutable, or ReadOnly. IGJ guarantees both reference immutability (only mutable references can mutate an object) and object immutability (an immutable reference points to an immutable object). IGJ is the first proposal for enforcing object immutability within Javas syntax and type system, and its reference immutability is more expressive than previous work. IGJ also permits covariant changes of type parameters in a type-safe manner, e.g., a readonly list of integers is a subtype of a readonly list of numbers. IGJ extends Javas type system with a few simple rules. We formalize this type system and prove it sound. Our IGJ compiler works by type-erasure and generates byte-code that can be executed on any JVM without runtime penalty.


conference on object-oriented programming systems, languages, and applications | 2008

Multiple dispatch in practice

Radu Muschevici; Alex Potanin; Ewan D. Tempero; James Noble

Multiple dispatch uses the run time types of more than one argument to a method call to determine which method body to run. While several languages over the last 20 years have provided multiple dispatch, most object-oriented languages still support only single dispatch forcing programmers to implement multiple dispatch manually when required. This paper presents an empirical study of the use of multiple dispatch in practice, considering six languages that support multiple dispatch, and also investigating the potential for multiple dispatch in Java programs. We hope that this study will help programmers understand the uses and abuses of multiple dispatch; virtual machine implementors optimise multiple dispatch; and language designers to evaluate the choice of providing multiple dispatch in new programming languages.


Concurrency and Computation: Practice and Experience | 2004

Checking ownership and confinement

Alex Potanin; James Noble; Robert Biddle

A number of proposals to manage aliasing in Java‐like programming languages have been advanced over the last five years. It is not clear how practical these proposals are, that is, how well they relate to the kinds of programs currently written in Java‐like languages. To address this problem, we analysed heap snapshots from a corpus of Java programs. Our results indicate that object‐oriented programs do in fact exhibit symptoms of encapsulation in practice, and that proposed models of uniqueness, ownership, and confinement can usefully describe the aliasing structures of object‐oriented programs. Understanding the kinds of aliasing present in programs should help us to design formalisms to make explicit the kinds of aliasing implicit in object‐oriented programs. Copyright


Journal of Functional Programming | 2006

Featherweight generic confinement

Alex Potanin; James Noble; Dave Clarke; Robert Biddle

Existing approaches to object encapsulation either rely on ad hoc syntactic restrictions or require the use of specialised type systems. Syntactic restrictions are difficult to scale and to prove correct, while specialised type systems require extensive changes to programming languages. We demonstrate that confinement can be enforced cheaply in Featherweight Generic Java, with no essential change to the underlying language or type system. This result demonstrates that polymorphic type parameters can simultaneously act as ownership parameters and should facilitate the adoption of confinement and ownership type systems in general-purpose programming languages.


australian software engineering conference | 2004

Snapshot query-based debugging

Alex Potanin; James Noble; Robert Biddle

Object-oriented programs, when executed, produce a complex webs of objects and references between them, generally referred to as object graphs. These object graphs are difficult to design correctly and even more difficult to debug if incorrect. Unfortunately, very subtle bugs in object-oriented programs are directly caused by object graph topologies. Snapshot query-based debuggers let programmers examine object graph snapshots of programs in detail using a specially designed query language. This provides users with an ability to debug and examine their programs in great detail at the time when the memory snapshot is taken.


european conference on object oriented programming | 2014

Safely Composable Type-Specific Languages

Cyrus Omar; Darya Kurilova; Ligia Nistor; Benjamin Chung; Alex Potanin; Jonathan Aldrich

Programming languages often include specialized syntax for common datatypes e.g. lists and some also build in support for specific specialized datatypes e.g. regular expressions, but user-defined types must use general-purpose syntax. Frustration with this causes developers to use strings, rather than structured data, with alarming frequency, leading to correctness, performance, security, and usability issues. Allowing library providers to modularly extend a language with new syntax could help address these issues. Unfortunately, prior mechanisms either limit expressiveness or are not safely composable: individually unambiguous extensions can still cause ambiguities when used together. We introduce type-specific languages TSLs: logic associated with a type that determines how the bodies of generic literals, able to contain arbitrary syntax, are parsed and elaborated, hygienically. The TSL for a type is invoked only when a literal appears where a term of that type is expected, guaranteeing non-interference. We give evidence supporting the applicability of this approach and formally specify it with a bidirectionally typed elaboration semantics for the Wyvern programming language.


compiler construction | 2008

Java bytecode verification for @NonNull types

Chris Male; David J. Pearce; Alex Potanin; Constantine Dymnikov

Javas annotation mechanism allows us to extend its type system with non-null types. However, checking such types cannot be done using the existing bytecode verification algorithm. We extend this algorithm to verify nonnull types using a novel technique that identifies aliasing relationships between local variables and stack locations in the JVM. We formalise this for a subset of Java Bytecode and report on experiences using our implementation.


formal techniques for java-like programs | 2012

Encoding Featherweight Java with assignment and immutability using the Coq proof assistant

Julian Mackay; Hannes Mehnert; Alex Potanin; Lindsay Groves; Nicholas Robert Cameron

We develop a mechanized proof of Featherweight Java with Assignment and Immutability in the Coq proof assistant. This is a step towards more machine-checked proofs of a non-trivial type system. We used object immutability close to that of IGJ [9]. We describe the challenges of the mechanisation and the encoding we used inside of Coq.


Proceedings of the 5th Workshop on MechAnisms for SPEcialization, Generalization and inHerItance | 2013

Wyvern: a simple, typed, and pure object-oriented language

Ligia Nistor; Darya Kurilova; Stephanie Balzer; Benjamin Chung; Alex Potanin; Jonathan Aldrich

The simplest and purest practical object-oriented language designs today are seen in dynamically-typed languages, such as Smalltalk and Self. Static types, however, have potential benefits for productivity, security, and reasoning about programs. In this paper, we describe the design of Wyvern, a statically typed, pure object-oriented language that attempts to retain much of the simplicity and expressiveness of these iconic designs. Our goals lead us to combine pure object-oriented and functional abstractions in a simple, typed setting. We present a foundational object-based language that we believe to be as close as one can get to simple typed lambda calculus while keeping object-orientation. We show how this foundational language can be translated to the typed lambda calculus via standard encodings. We then define a simple extension to this language that introduces classes and show that classes are no more than sugar for the foundational object-based language. Our future intention is to demonstrate that modules and other object-oriented features can be added to our language as not more than such syntactical extensions while keeping the object-oriented core as pure as possible. The design of Wyvern closely follows both historical and modern ideas about the essence of object-orientation, suggesting a new way to think about a minimal, practical, typed core language for objects.

Collaboration


Dive into the Alex Potanin's collaboration.

Top Co-Authors

Avatar

James Noble

Victoria University of Wellington

View shared research outputs
Top Co-Authors

Avatar

Jonathan Aldrich

Carnegie Mellon University

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Darya Kurilova

Carnegie Mellon University

View shared research outputs
Top Co-Authors

Avatar

David J. Pearce

Victoria University of Wellington

View shared research outputs
Top Co-Authors

Avatar

Benjamin Chung

Carnegie Mellon University

View shared research outputs
Top Co-Authors

Avatar

Cyrus Omar

Carnegie Mellon University

View shared research outputs
Top Co-Authors

Avatar

Lindsay Groves

Victoria University of Wellington

View shared research outputs
Top Co-Authors

Avatar

Darya Melicher

Carnegie Mellon University

View shared research outputs
Top Co-Authors

Avatar

Ligia Nistor

Carnegie Mellon University

View shared research outputs
Researchain Logo
Decentralizing Knowledge