2014-05-22 20:37 GMT+02:00 Esteban A. Maringolo <emaring...@gmail.com>:

> 2014-05-22 13:06 GMT-03:00 Camille Teruel <camille.ter...@gmail.com>:
> >
> > On 22 mai 2014, at 11:54, stepharo <steph...@free.fr> wrote:
> >
> >>
> >>> In general, we should think about if is would make sense that the
> language comes with
> >>> a good proxy model by default.
> >>
> >> + 1
> >> We should do that with Camille.
> >
> > Yes.
> > Now the problem is to agree on what is a "good model".
> > There is many use cases for proxies and they come with their own models
> and problems.
> > Here are some requirements I can think of:
> >
> > - Uniformity: all objects can be wrapped, even special ones (it's a
> technicality but it's still important)
> > - Interception of all message: currently we cannot intercept #== and
> optimized control-flow messages like #ifTrue:ifFalse #to:do:, #whileTrue:,
> etc...
>
> > - Encapsulation (a.k.a the self problem): avoid leaking of references to
> the target. E.g. "aProxy yourself" should return the proxy not the target.
>
> Funny thing is that Glorp proxies materialize the referenced object
> when they receive #yourself
>
> > - Behavioral intercession: Not everything is a message send. What other
> events do we want to intercept? IV access is a must-have for me.
> > - Composition: Wrapping a proxy with another one should work as
> expected, i.e. applying both policies in order.
> > - Performances: intercepting message sends is slow, intercepting iv
> accesses is even worse (relying on code instrumentation). We would need VM
> support.
> > - Security: It shouldn't be possible to by-pass or corrupt a proxy
> policy.
>
> > - Delimited replacement: Ensure that a proxy is always used in place of
> its target throughout the processing of a message send, no matter the alias
> used (that is not necessarily "self"). Think about a read-only proxy for
> example.
>
> One thing is a Proxy that ALWAYS sits in between the real object and
> its consumer forwarding messages or doing any other instrumentation,
> and a different thing is a Stub which once materialized replaces all
> references to the proxy with references to the new object
> (#becomeForward:) and then vanishes (GCed).
>
> Having proxies in hashed collections can get very tricky if the hash
> of the proxy/stub is different from the hash of the materialized
> object.
>

yes exactly
That is why in Ghost, you can choose what to intercept
because it is application dependent

Luc


>
>
> Esteban A. Maringolo
>
>

Reply via email to