From: Paul Klint To: Date: Wed, 14 Mar 2007 07:42:25 +0100 Subject: Two lectures by IBM researchers You are cordially inviated for the following two lectures: Frank Tip: Declarative Object Identity using Relation Types Robert Fuhrer: SAFARI: A Meta-Tooling Platform for Creating Language-Specific IDE's Date: Monday March 19, 2007 Time: 14:00-16:00 Venue: Centrum for Wiskunde en Informatica (CWI), Kruislaan 413, Amsterdam Room: Z009 Details can be found below. Regards, -- Paul Klint --------------------------------------------------------------------------- Declarative Object Identity using Relation Types Frank Tip, IBM T.J. Watson Research Center (joint work with Mandana Vaziri, Stephen Fink, and Julian Dolby) 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. Notably, equals() may refer to mutable state, which allows object identity to change during execution, breaking standard library invariants. We propose a programming model based on a relational view of the heap which defines identity declaratively, obviating the need for equals() and hashCode() methods. Each element in the heap (called a tuple) belongs to a relation type and relates an immutable identity to mutable state. The model entails a stricter contract: identity never changes during an execution. Objects, values, and singletons arise as special casesof tuples. 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. This work will be presented at ECOOP'07. ----------------------------------------------------------------------------