on the benefits of adding modes on owners
play

On the Benefits of Adding Modes on Owners a work in progress - PowerPoint PPT Presentation

On the Benefits of Adding Modes on Owners a work in progress Ownership, Uniqueness and Immutability Johan stlund Tobias Wrigstad Dave Clarke Beatrice kerblom Imagine a linked list with students at some university Imagine a


  1. On the Benefits of Adding Modes on Owners — a work in progress — Ownership, Uniqueness and Immutability Johan Östlund Tobias Wrigstad Dave Clarke Beatrice Åkerblom

  2. Imagine a linked list with students at some university

  3. Imagine a linked list with students at some university We want the administrator to see who is registered

  4. Imagine a linked list with students at some university We want the administrator to see who is registered and we want the TAs to be able to mark the students

  5. Read-Only Fails to do Both Shallow Deep (e.g., const) Stud Stud Stud Stud ent ent ent ent List List Node Node Node Node Mark students as passed on a course Check what students are registered But removing a student is also possible But cannot fix duplicate registrations

  6. Read-Only Fails to do Both Shallow Deep (e.g., const) Stud Stud Stud Stud ent ent ent ent List List Node Node Node Node — too restrictive Mark students as passed on a course Check what students are registered But removing a student is also possible But cannot fix duplicate registrations

  7. Read-Only Fails to do Both Shallow Deep (e.g., const) Stud Stud Stud Stud ent ent ent ent List List Node Node Node Node — too permissive — too restrictive Mark students as passed on a course Check what students are registered But removing a student is also possible But cannot fix duplicate registrations

  8. Read-Only Fails to do Both Shallow Deep (e.g., const) Stud Stud Stud Stud ent ent ent ent List List Node Node Node Node — too permissive — too restrictive Mark students as passed on a course Check what students are registered But removing a student is also possible But cannot fix duplicate registrations Ad hoc — can be misused [Tschantz & Ernst 05]

  9. Design Goals • Partial read-only in a non ad-hoc fashion • Multiple simultaneous views of a single object in terms of modifiability • One class for all views • Not possible to circumvent read-only • Co-existing read-only and immutability • Fractional permissions-style immutables

  10. Immutability [Noble, Vitek & Potter 98, Joline Kniesel & Thiesen 99, Boyland, Noble & Retert 01, [Clarke & Wrigstad 03] Skoglund & Wrigstad 01, Tschantz & Ernst 05, Haack et al 07, Müller & Rudich 07, …] Joe Read-only 3 Joe 1 [Clarke & Drossopoulou 02] Fractional Permissions [Boyland 03]

  11. A Linked List in Joline [Clarke & Wrigstad 03] class List<data outside owner> { this:Node<data> first; } class Node<data outside owner> { data:Object stuff; owner:Node<data> next; Stud Stud } ent ent // a and world are owners List a:List<world> l; Node Node invalid reference

  12. A Linked List in Joline [Clarke & Wrigstad 03] class List<data outside owner> { this:Node<data> first; } class Node<data outside owner> { data:Object stuff; owner:Node<data> next; Stud Stud } ent ent // a and world are owners List a:List<world> l; Node Node invalid reference

  13. A Linked List in Joline [Clarke & Wrigstad 03] class List<data outside owner> { this:Node<data> first; } class Node<data outside owner> { data:Object stuff; owner:Node<data> next; Stud Stud } ent ent // a and world are owners List a:List<world> l; Node Node invalid reference

  14. A Linked List in Joline [Clarke & Wrigstad 03] class List<data outside owner> { this:Node<data> first; } class Node<data outside owner> { data:Object stuff; owner:Node<data> next; Stud Stud } ent ent // a and world are owners List a:List<world> l; Node Node invalid reference

  15. A Linked List in Joline [Clarke & Wrigstad 03] class List<data outside owner> { this:Node<data> first; } class Node<data outside owner> { data:Object stuff; owner:Node<data> next; Stud Stud } ent ent // a and world are owners List a:List<world> l; Node Node invalid reference

  16. A Linked List in Joline [Clarke & Wrigstad 03] class List<data outside owner> { this:Node<data> first; } class Node<data outside owner> { data:Object stuff; owner:Node<data> next; Stud Stud } ent ent // a and world are owners List a:List<world> l; Node Node invalid reference

  17. Modes in Joe 3 class List<data - outside owner> { // owner + this + this:Node<data> first; } class Node<data - outside owner> { // owner + this + data:Object stuff; owner:Node<data> next; Stud Stud } ent ent l // Type controls usage // a - and b + are owners List a:List<b> l; Node Node

  18. a :List< b > — check what students are registered (deep) a :List< b > — Mark students as passed on a course (partial) a :List< b > — Register and deregister students (partial) a :List< b > — Your regular reference Stud Stud ent ent List Node Node List is owned by a Stuff is owned by b

  19. a :List< b > — check what students are registered (deep) a :List< b > — Mark students as passed on a course (partial) a :List< b > — Register and deregister students (partial) a :List< b > — Your regular reference Stud Stud ent ent List Node Node List is owned by a Stuff is owned by b

  20. a :List< b > — check what students are registered (deep) a :List< b > — Mark students as passed on a course (partial) a :List< b > — Register and deregister students (partial) a :List< b > — Your regular reference Stud Stud ent ent List Node Node List is owned by a Stuff is owned by b

  21. a :List< b > — check what students are registered (deep) a :List< b > — Mark students as passed on a course (partial) a :List< b > — Register and deregister students (partial) a :List< b > — Your regular reference Stud Stud ent ent List Node Node List is owned by a Stuff is owned by b

  22. Multiple Views Stud Stud Teacher ent ent a :List< b > List Admin a :List< b > Node Node Bad: Observational exposure [Boyland 03] Good: Context-based read-only

  23. Immutability & the * Mode <a * inside world, b * outside a> int averageMark(a:List<b> students) { ... } • Immutable can trivially be achieved by read-only plus unique — but the information is lost • The * -mode captures immutability in Joe3 • Only unique pointers can achieve * -dom • Nice staged initialisation

  24. ~Fractional Permissions unique :List<d> l; borrow l as x*:temp in { // temp : x:List<d> for duration of block ... } • Borrowing allows unique variables to be treated as immutable for the duration of a scope • Temporarily nullifies the source variable • Automagic confinement through temporary owner • Essentially Boyland’s [03] Fractional Permissions

  25. Joe ’s Static Semantics 3 • Trivial extension to Joline’s static semantics • Modes added to owners in type environment • Trivial changes to four rules to check that the modes on a receiver is respected by method calls, field updates and borrowing • Revoke clause added to enable finer granularity void method() revoke this {...} void method(x:Object) revoke x {...}

  26. Modes & Inheritance (not in the paper) • Subclassing must preserve immutable modes • Subclassing to narrow permissions is straight-forward • Subclassing to widen permissions is possible • Overriding methods must always obey the most restrictive modes of any super class • Modification only possible in new, non-overriding methods

  27. Future Work • Prove soundness by extending Joline’s proofs • Properly formulate the guarantees of our constructs • Explore Universes-style owner-as-modifier • Modes on types, not just owner declarations class Ex { owner+:Object rep; owner-:Object getRep() { return rep; } void setRep(owner+:Object o) { rep = o; } }

  28. Thank You! Questions?

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend