Proxies are the swiss army knifes of object adaptation. They introduce a level of indirection to intercept select operations on a target object and divert them as method calls to a handler. Proxies are often used as wrappers to implement access control via membranes or to enforce adherence to a contract.
One important question in the design of a proxy API is whether a proxy object has its own identity. For some applications, in particular those related to security, this choice is advantageous whereas other applications, in particular contract systems, require transparency, that is, proxies that compare equal to their target objects.
We examine the issue with transparency in detail, consider various use cases for proxies, discuss different approaches to obtain transparency, and propose two designs that cannot be bypassed by the programmer but that require modest modifications in the JavaScript engine.
Our evaluation shows that these modifications of the JavaScript interpreter and bytecode compiler have no statistically significant impact on the benchmark performance of the JavaScript engine. Furthermore, it demonstrates that contract systems implemented with non-transparent proxies can interfere with program execution in realistic setting.
Wed 8 JulDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
15:30 - 17:00 | |||
15:30 30mTalk | A Theory of Tagged Objects Research Track Joseph Lee Carnegie Mellon University, Jonathan Aldrich Carnegie Mellon University, Troy Shaw Victoria University of Wellington, Alex Potanin Victoria University of Wellington | ||
16:00 30mTalk | Brand Objects for Nominal Typing Research Track Timothy Jones Victoria University of Wellington, Michael Homer Victoria University of Wellington, James Noble Victoria University of Wellington | ||
16:30 30mTalk | Transparent Object Proxies in JavaScript Research Track |