[e-lang] Defining DeepPassByCopy
Kevin Reid
kpreid at mac.com
Wed Feb 28 20:07:01 CST 2007
On Feb 28, 2007, at 19:39, Mark Miller wrote:
> On 2/27/07, Kevin Reid <kpreid at mac.com> wrote:
>> ? e`a` :DeepPassByCopy
>> # value: e`a`
>>
>> ? e`a`.__optUncall()[0] :DeepPassByCopy
>> # problem: Not audited by DeepPassByCopy
>>
>> ? e`a`.__optUncall()[0] :PassByCopy
>> # problem: Not audited by PassByCopy
>>
>> Is this simply a bug?
>
> Yes. All Java classes in E-on-Java which implements
> JOSSPassByConstruction should be reexamined to see if it should
> also be considered pbc, PassByCopy, or DeepPassByCopy. The offender
> relevant to the present bug are safe instances of StaticMaker,
> where safe means importable using <import>.
>
> Once StaticMaker is fixed, we must then deal with the curious issue
> of the ImportLoader (the class whose instances are bound in E to
> "<import>"). ImportLoaders should be handled as a Data-E graph
> exit, which is distinct from being itself DeepPassByCopy.
What I conclude from this is that the property which is interesting
for boot-comm purposes is not DeepPassByCopy, but rather "deeply
either PassByCopy or a graph exit". Defining this, and making the
notion of "is a graph exit, for a comm system obeying the usual
rules" reified in a guard/named property, will solve my current problem.
I had previously written in this message a section about how
StaticMakers are not really PassByCopy because their definition is
provided by the receiving system, but after further thought I have
concluded that this is not really a concrete difference:
*everything*'s definition is (at some remove) provided by invoking
something which is a graph exit.
As a separate issue, please recall
http://www.eros-os.org/pipermail/e-lang/2007-January/011771.html
; in it I suggest making not <import>, but a slightly different
loader, be the one which is PBC.
> [out of order]
>> If not, what is the precise definition of DeepPassByCopy such that
>> an object being DPBC but one of its components (the maker) not
>> being is consistent? Is the maker position only required to be
>> PassByConstruction?
>
> To the extent that the answer to the above question is "yes", all
> the components of a DeepPassByCopy should themselves be
> DeepPassByCopy. The current behavior is buggy. Thanks for catching
> this.
>
> I'm unclear how to deal with the above <import> issue. What does E-
> on-CL do?
E-on-CL has not had much use for DeepPassByCopy as yet. The issue for
which I started this thread didn't come up until I was working on an
intraprocess comm system for E-on-CL.
--
Kevin Reid <http://homepage.mac.com/kpreid/>
More information about the e-lang
mailing list