Smalltalk-80: the language and its implementation
Smalltalk-80: the language and its implementation
Using prototypical objects to implement shared behavior in object-oriented systems
OOPLSA '86 Conference proceedings on Object-oriented programming systems, languages and applications
Type evolution in an object-oriented database
Research directions in object-oriented programming
Semantics and implementation of schema evolution in object-oriented databases
SIGMOD '87 Proceedings of the 1987 ACM SIGMOD international conference on Management of data
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Proceedings of the fifth international conference on Mathematical foundations of programming semantics
Organizing programs without classes
Lisp and Symbolic Computation
The revised report on the syntactic theories of sequential control and state
Theoretical Computer Science
The design and implementation of the self compiler, an optimizing compiler for object-oriented programming languages
Delegation versus concatenation or cloning is inheritance too
ACM SIGPLAN OOPS Messenger
Lua—an extensible extension language
Software—Practice & Experience
The pragmatic programmer: from journeyman to master
The pragmatic programmer: from journeyman to master
Classes versus prototypes in object-oriented languages
ACM '86 Proceedings of 1986 ACM Fall joint computer conference
Measuring computer performance: a practitioner's guide
Measuring computer performance: a practitioner's guide
Dhrystone: a synthetic systems programming benchmark
Communications of the ACM
Featherweight Java: a minimal core calculus for Java and GJ
ACM Transactions on Programming Languages and Systems (TOPLAS)
A Theory of Objects
The Art of the Metaobject Protocol
The Art of the Metaobject Protocol
From Classes to Objects via Subtyping
ESOP '98 Proceedings of the 7th European Symposium on Programming: Programming Languages and Systems
ECOOP '99 Proceedings of the 13th European Conference on Object-Oriented Programming
Load-Time Structural Reflection in Java
ECOOP '00 Proceedings of the 14th European Conference on Object-Oriented Programming
Fickle: Dynamic Object Re-classification
ECOOP '01 Proceedings of the 15th European Conference on Object-Oriented Programming
MetaJava - A Platform for Adaptable Operating-System Mechanisms
ECOOP '97 Proceedings of the Workshops on Object-Oriented Technology
Definition of a Reflective Kernel for a Prototype-Based Language
Proceedings of the First JSSST International Symposium on Object Technologies for Advanced Software
Jumping to the Meta Level: Behavioral Reflection Can Be Fast and Flexible
Reflection '99 Proceedings of the Second International Conference on Meta-Level Architectures and Reflection
Efficient implementation of the smalltalk-80 system
POPL '84 Proceedings of the 11th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
MetaJava: an efficient run-time meta architecture for Java/sup TM/
IWOOOS '96 Proceedings of the 5th International Workshop on Object Orientation in Operating Systems (IWOOOS '96)
JVM versus CLR: a comparative study
PPPJ '03 Proceedings of the 2nd international conference on Principles and practice of programming in Java
Dynamic adaptation of application aspects
Journal of Systems and Software - Special issue: Computer systems
Ajax in Action
Traits: A mechanism for fine-grained reuse
ACM Transactions on Programming Languages and Systems (TOPLAS)
A machine-checked model for a Java-like language, virtual machine, and compiler
ACM Transactions on Programming Languages and Systems (TOPLAS)
Agile Web Development with Rails
Agile Web Development with Rails
Statistically rigorous java performance evaluation
Proceedings of the 22nd annual ACM SIGPLAN conference on Object-oriented programming systems and applications
Visual Zero: A persistent and interactive object-oriented programming environment
Journal of Visual Languages and Computing
ECOOP '07 Proceedings of the 21st European conference on ECOOP 2007: Object-Oriented Programming
Tracing the meta-level: PyPy's tracing JIT compiler
Proceedings of the 4th workshop on the Implementation, Compilation, Optimization of Object-Oriented Languages and Programming Systems
Efficient virtual machine support of runtime structural reflection
Science of Computer Programming
Semantics Engineering with PLT Redex
Semantics Engineering with PLT Redex
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Union and intersection types to support both dynamic and static typing
Information Processing Letters
The Python Language Reference Manual
The Python Language Reference Manual
Type Inference to Optimize a Hybrid Statically and Dynamically Typed Language
The Computer Journal
Dependent types for JavaScript
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Efficient support of dynamic inheritance for class- and prototype-based languages
Journal of Systems and Software
Hi-index | 0.00 |
Context: Dynamic languages have turned out to be suitable for developing specific applications where runtime adaptability is an important issue. Although .Net and Java platforms have gradually incorporated features to improve their support of dynamic languages, they do not provide intercession for every object or class. This limitation is mainly caused by the rigid class-based object model these platforms implement, in contrast to the flexible prototype-based model used by most dynamic languages. Objective: Our approach is to provide intercession for any object or class by defining a hybrid class- and prototype-based object model that efficiently incorporates structural intercession into the object model implemented by the widespread .Net and Java platforms. Method: In a previous work, we developed and evaluated an extension of a shared-source implementation of the .Net platform. In this work, we define the formal semantics of the proposed reflective model, and modify the existing implementation to include the hybrid model. Finally, we assess its runtime performance and memory consumption, comparing it to existing approaches. Results: Our platform shows a competitive runtime performance compared to 9 widespread systems. On average, it performs 73% and 61% better than the second fastest system for short- and long-running applications, respectively. Besides, it is the JIT-compiler approach that consumes less average memory. The proposed approach of including a hybrid object-model into the virtual machine involves a 444% performance improvement (and 65% less memory consumption) compared to the existing alternative of creating an extra software layer (the DLR). When none of the new features are used, our platform requires 12% more execution time and 13% more memory than the original .Net implementation. Conclusion: Our proposed hybrid class- and prototype-based object model supports structural intercession for any object or class. It can be included in existing JIT-compiler class-based platforms to support common dynamic languages, providing competitive runtime performance and low memory consumption.