Subject: PEM Talks Frank Tip, Friday 12 June 2009 From: "H.J.S. Basten" To: pem-list, sen-list Date: Mon, 08 Jun 2009 16:03:22 +0200 Dear all, You are hereby cordially invited for our next PEM talks on Friday 12 June 2009. We are very pleased to introduce Frank Tip, who is visiting us from IBM Research. He will give the following two talks: 1. Refactoring using Type Constraints (joint work with Robert Fuhrer, Adam Kiezun, Michael Ernst, Ittai Balaban, and Bjorn De Sutter) Type constraints express subtype-relationships between the types of program expressions that are required for type-correctness, and were originally proposed as a convenient framework for solving type checking and type inference problems. In this paper, we show how type constraints can be used as the basis for practical refactoring tools. In our approach, a set of type constraints is derived from a type-correct program P. The main insight behind our work is the fact that P constitutes just one solution to this constraint system, and that alternative solutions may exist that correspond to refactored versions of P. We show how a number of refactorings for manipulating types and class hierarchies can be expressed naturally using type constraints. Several refactorings in the standard distribution of Eclipse are based on our results. [skip] Date: Friday 12 June 2009 Time: 15:30 - 17:00 Room: M367, CWI Afterwards we'll visit the nearby cafe-restaurant Polder for some drinks. We're looking forward to your attendence. Best regards, Bas Basten Subject: PEM Talks by Frank Tip, Friday 12 June 2009, *subject changed* From: "H.J.S. Basten" To: pem-list, sen-list Date: Wed, 10 Jun 2009 16:37:14 +0200 Dear all, The subject of the second talk by Frank Tip is changed into "Declarative Object Identity using Relation Types". See the updated invitation below: Dear all, You are hereby cordially invited for our next PEM talks on Friday 12 June 2009. We are very pleased to introduce Frank Tip, who is visiting us from IBM Research. He will give the following two talks: 1. Refactoring using Type Constraints (joint work with Robert Fuhrer, Adam Kiezun, Michael Ernst, Ittai Balaban, and Bjorn De Sutter) Type constraints express subtype-relationships between the types of program expressions that are required for type-correctness, and were originally proposed as a convenient framework for solving type checking and type inference problems. In this paper, we show how type constraints can be used as the basis for practical refactoring tools. In our approach, a set of type constraints is derived from a type-correct program P. The main insight behind our work is the fact that P constitutes just one solution to this constraint system, and that alternative solutions may exist that correspond to refactored versions of P. We show how a number of refactorings for manipulating types and class hierarchies can be expressed naturally using type constraints. Several refactorings in the standard distribution of Eclipse are based on our results. 2. Declarative Object Identity using Relation Types (joint work with Mandana Vaziri, Julian Dolby, and Stephen Fink) Object-oriented languages define the identity of an object to be an address-based object identifier. The programmer may customize the notion of object identity by overriding the equals() and hashCode() methods following a specified contract. This customization often introduces latent errors, since the contract is unenforced and at times impossible to satisfy, and its implementation requires tedious and error-prone boilerplate code. Relation types are a programming model in which object identity is defined declaratively, obviating the need for equals() and hashCode() methods. This entails a stricter contract: identity never changes during an execution. We formalize the model as an adaptation of Featherweight Java, and implement it by extending Java with relation types. Experiments on a set of Java programs show that the majority of classes that override equals() can be refactored into relation types, and that most of the remainder are buggy or fragile. Date: Friday 12 June 2009 Time: 15:30 - 17:00 Room: M367, CWI Afterwards we'll visit the nearby cafe-restaurant Polder for some drinks. We're looking forward to your attendence. Best regards, Bas Basten