{"id":{"repo_id":"etsu","oai_identifier":"oai:dc.etsu.edu:etd-2690"},"canonical_url":"https://search.dev.ndltd.org/etd/etsu/oai:dc.etsu.edu:etd-2690","repository":{"repo_id":"etsu","name":"East Tennessee State University","base_url":"https://dc.etsu.edu/do/oai/"},"display":{"title":"Connotational Subtyping and Runtime Class Mutability in Ruby","abstract":"<p>Connotational subtyping is an approach to typing that allows an object's type to change dynamically, following changes to the object's internal state. This allows for a more precise representation of a problem domain with logical objects that have variable behavior. Two approaches to supporting connotational subtyping in the Ruby programming language were implemented: a language-level implementation using pure Ruby and a modification to the Ruby 1.8.7 interpreter. While neither implementation was wholly successful the language level implementation created complications with reflective language features like <b>self</b> and <b>super</b> and, while Ruby 1.8.7 has been obsoleted by Ruby 1.9 (YARV), the results suggest that Chambers-style, predicate-based runtime type inference could be incorporated into Ruby with only some reduced interpreter performance.</p>","abstract_html":"&lt;p&gt;Connotational subtyping is an approach to typing that allows an object&#x27;s type to change dynamically, following changes to the object&#x27;s internal state. This allows for a more precise representation of a problem domain with logical objects that have variable behavior. Two approaches to supporting connotational subtyping in the Ruby programming language were implemented: a language-level implementation using pure Ruby and a modification to the Ruby 1.8.7 interpreter. While neither implementation was wholly successful the language level implementation created complications with reflective language features like &lt;b&gt;self&lt;/b&gt; and &lt;b&gt;super&lt;/b&gt; and, while Ruby 1.8.7 has been obsoleted by Ruby 1.9 (YARV), the results suggest that Chambers-style, predicate-based runtime type inference could be incorporated into Ruby with only some reduced interpreter performance.&lt;/p&gt;","abstract_has_math":false,"creators":["Dillon, Ian S"],"institution":null,"degree_name":"MS (Master of Science)","degree_level":"Thesis - unrestricted","degree_discipline":"Computer and Information Science","degree_department":null,"school":null,"contributors":[],"advisors":[],"committee_chairs":[],"committee_members":[],"year":2012,"date_issued":"2012-12-15T08:00:00Z","date_published":"2012-12-15T08:00:00Z","updated_at":"2026-07-24T02:20:42Z","subjects":["type systems","ruby","class mutability","Computer Sciences","Physical Sciences and Mathematics","Theory and Algorithms"],"languages":[],"rights":["Copyright by the authors."],"rights_urls":[],"identifier_entries":[]},"links":{"outbound_url":"https://dc.etsu.edu/etd/1497","outbound_label":"Repository record","outbound_source":"dc:identifier"},"metadata_groups":[{"id":"people","label":"People","entries":[{"key":"dc:creator","label":"Author","values":["Dillon, Ian S"]}]},{"id":"academic_context","label":"Academic Context","entries":[{"key":"dc:date.issued","label":"Date","values":["2012-12-15T08:00:00Z"]},{"key":"thesis:degree_discipline","label":"Discipline","values":["Computer and Information Science"]},{"key":"thesis:degree_level","label":"Degree Level","values":["Thesis - unrestricted"]},{"key":"thesis:degree_name","label":"Degree Name","values":["MS (Master of Science)"]}]},{"id":"subjects_keywords","label":"Subjects and Keywords","entries":[{"key":"dc:subject","label":"Dc Subject","values":["type systems","ruby","class mutability","Computer Sciences","Physical Sciences and Mathematics","Theory and Algorithms"]}]},{"id":"language_rights","label":"Language and Rights","entries":[{"key":"dc:rights","label":"Dc Rights","values":["Copyright by the authors."]}]},{"id":"identifiers","label":"Identifiers","entries":[{"key":"dc:identifier","label":"Identifier","values":["https://dc.etsu.edu/context/etd/article/2690/viewcontent/DillonI111612f.pdf","https://dc.etsu.edu/etd/1497"]}]},{"id":"additional","label":"Additional Metadata","entries":[{"key":"dc:description.abstract","label":"Abstract","values":["<p>Connotational subtyping is an approach to typing that allows an object's type to change dynamically, following changes to the object's internal state. This allows for a more precise representation of a problem domain with logical objects that have variable behavior. Two approaches to supporting connotational subtyping in the Ruby programming language were implemented: a language-level implementation using pure Ruby and a modification to the Ruby 1.8.7 interpreter. While neither implementation was wholly successful the language level implementation created complications with reflective language features like <b>self</b> and <b>super</b> and, while Ruby 1.8.7 has been obsoleted by Ruby 1.9 (YARV), the results suggest that Chambers-style, predicate-based runtime type inference could be incorporated into Ruby with only some reduced interpreter performance.</p>"]},{"key":"dc:title","label":"Title","values":["Connotational Subtyping and Runtime Class Mutability in Ruby"]}]}],"canonical_facts":{"dc:creator":["Dillon, Ian S"],"dc:date.issued":["2012-12-15T08:00:00Z"],"dc:description.abstract":["<p>Connotational subtyping is an approach to typing that allows an object's type to change dynamically, following changes to the object's internal state. This allows for a more precise representation of a problem domain with logical objects that have variable behavior. Two approaches to supporting connotational subtyping in the Ruby programming language were implemented: a language-level implementation using pure Ruby and a modification to the Ruby 1.8.7 interpreter. While neither implementation was wholly successful the language level implementation created complications with reflective language features like <b>self</b> and <b>super</b> and, while Ruby 1.8.7 has been obsoleted by Ruby 1.9 (YARV), the results suggest that Chambers-style, predicate-based runtime type inference could be incorporated into Ruby with only some reduced interpreter performance.</p>"],"dc:identifier":["https://dc.etsu.edu/context/etd/article/2690/viewcontent/DillonI111612f.pdf","https://dc.etsu.edu/etd/1497"],"dc:rights":["Copyright by the authors."],"dc:subject":["type systems","ruby","class mutability","Computer Sciences","Physical Sciences and Mathematics","Theory and Algorithms"],"dc:title":["Connotational Subtyping and Runtime Class Mutability in Ruby"],"thesis:degree_discipline":["Computer and Information Science"],"thesis:degree_level":["Thesis - unrestricted"],"thesis:degree_name":["MS (Master of Science)"]},"updated_at":"2026-07-24T02:20:42Z"}