If it were me, I would use a socket for ipc and use the socket as the weak
map reference... Thus, when the socket was destroyed, and you get the
SIGPIPE, free the socket reference, and it's referenced object should be
cleared.  This should work, however if you have too many objects, then you
might have to tree it out or something.

I think the idea is a good one for library, I just don't think it's worth
polluting the spec with...  thoughts?

On Dec 31, 2016 11:20 AM, <[email protected]> wrote:

Send es-discuss mailing list submissions to
        [email protected]

To subscribe or unsubscribe via the World Wide Web, visit
        https://mail.mozilla.org/listinfo/es-discuss
or, via email, send a message with subject or body 'help' to
        [email protected]

You can reach the person managing the list at
        [email protected]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of es-discuss digest..."

Today's Topics:

   1. Re: Weak Reference proposal (Isiah Meadows)
   2. Re: Weak Reference proposal (Alexander Jones)
   3. Re: Resource management (Isiah Meadows)
   4. Re: Resource management (Isiah Meadows)
   5. Re: Weak Reference proposal (Isiah Meadows)


---------- Forwarded message ----------
From: Isiah Meadows <[email protected]>
To: Steve Fink <[email protected]>
Cc: "[email protected]" <[email protected]>
Date: Sat, 31 Dec 2016 08:48:19 -0500
Subject: Re: Weak Reference proposal
For my particular case, yes it is. Everything mirrored have globally
unique IDs assigned to them, managed independently of the child
process (in most cases), and the state is tied to the ID, not the
value, so I only need a weak reference to clear the backing ID and its
associated state. And reference cycles within the process are
mitigated by the existing mark-and-sweep derivatives engines already
use.
-----

Isiah Meadows
[email protected]


On Tue, Dec 27, 2016 at 4:34 PM, Steve Fink <[email protected]> wrote:
> On 12/27/2016 04:45 AM, Isiah Meadows wrote:
>
> The weak reference proposal hasn't seen a lot of activity, and I haven't
> found much news elsewhere on it. What's the status on it?
>
> Where I'm building a language-integrated process pool in Node.js, complete
> with shared "references" and async iterator support, I really badly need
> weak references to avoid otherwise inevitable memory leaks across multiple
> processes if the references aren't explicitly released. So far, my only
> option is to take a native dependency (I have no other dependencies), but
> that's very suboptimal, and it eliminates the possibility of porting to
> browsers. So I really badly need language-level weak references.
>
>
> Would weak references be enough to solve cross-process garbage collection?
> How would you recover a cycle of references among your processes?
>
>
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>



---------- Forwarded message ----------
From: Alexander Jones <[email protected]>
To: Isiah Meadows <[email protected]>
Cc: "[email protected]" <[email protected]>
Date: Sat, 31 Dec 2016 14:23:38 +0000
Subject: Re: Weak Reference proposal
Please correct me Isiah/Steve - but I think the problem Steve is talking
about is *cross-process* cycles. Without an inter-process protocol to
express the referencing graph, or otherwise negotiate cycles for GC, you'll
never have a way to reclaim them. Each side thinks the other side is still
needing the resource.

Cheers

On 31 December 2016 at 13:48, Isiah Meadows <[email protected]> wrote:

> For my particular case, yes it is. Everything mirrored have globally
> unique IDs assigned to them, managed independently of the child
> process (in most cases), and the state is tied to the ID, not the
> value, so I only need a weak reference to clear the backing ID and its
> associated state. And reference cycles within the process are
> mitigated by the existing mark-and-sweep derivatives engines already
> use.
> -----
>
> Isiah Meadows
> [email protected]
>
>
> On Tue, Dec 27, 2016 at 4:34 PM, Steve Fink <[email protected]> wrote:
> > On 12/27/2016 04:45 AM, Isiah Meadows wrote:
> >
> > The weak reference proposal hasn't seen a lot of activity, and I haven't
> > found much news elsewhere on it. What's the status on it?
> >
> > Where I'm building a language-integrated process pool in Node.js,
> complete
> > with shared "references" and async iterator support, I really badly need
> > weak references to avoid otherwise inevitable memory leaks across
> multiple
> > processes if the references aren't explicitly released. So far, my only
> > option is to take a native dependency (I have no other dependencies), but
> > that's very suboptimal, and it eliminates the possibility of porting to
> > browsers. So I really badly need language-level weak references.
> >
> >
> > Would weak references be enough to solve cross-process garbage
> collection?
> > How would you recover a cycle of references among your processes?
> >
> >
> > _______________________________________________
> > es-discuss mailing list
> > [email protected]
> > https://mail.mozilla.org/listinfo/es-discuss
> >
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
>



---------- Forwarded message ----------
From: Isiah Meadows <[email protected]>
To: Jamesernator <[email protected]>
Cc: "Raul-Sebastian Mihăilă" <[email protected]>, es-discuss <
[email protected]>
Date: Sat, 31 Dec 2016 10:46:28 -0500
Subject: Re: Resource management
Certainly not optimal, though, and I'd rather it *not* become the
primary idiom - it lacks the intent of a Python-like `with` statement.
Also, `next`/`return` doesn't exactly mirror `__enter__`/`__exit__`
from Python. What really happens with `for ... of` is closer to
`next`/`next`, where the first call reports `{done: false, value:
whatever}`, and the second `{done: true}`. It's more of a unusual pun
than anything, a theoretical equivalence providing an unintuitive
workaround.

I would welcome a strict-mode-only modification to `with` that allows
something like that, and adding `with await` for Promise-resolving
equivalents.
-----

Isiah Meadows
[email protected]


On Thu, Dec 29, 2016 at 11:05 PM, Jamesernator
<[email protected]> wrote:
> The `for` loop approach works for synchronous resources as well actually,
> there's nothing special about those `await`ed things e.g.
>
> ```js
> const fs = require('fs')
>
> function* open(file, opts) {
>     const fd = fs.openSync(file, opts)
>     try { yield fd } finally { fs.closeSync(fd) }
> }
>
> for (const fd of open("/path/to/file", {mode: "r+"})) {
>     const bit = fs.readSync(fd)
>     ...
> }
> ```
>
> I can definitely imagine a Python-esque `with` statement though (perhaps
> with `Symbol.open/Symbol.close`) then you just use something like Python's
> contextlib (https://docs.python.org/3.7/library/contextlib.html) utility
> functions for converting generator based resources to
> `Symbol.open/Symbol.close`.
>
> For now though the `for` loop approach is a relatively good workaround (as
> `next/return` effectively emulate Python's `__enter__/__exit__`).
>
>
>
> On 30/12/16 04:17, Isiah Meadows wrote:
>>
>> But keep in mind it still doesn't cover two key issues:
>>
>> 1. Synchronous resources do in fact exist (primarily in Node). You
>> need both for it to be effective.
>> 2. Your suggestion isn't composable at all (like nearly every other
>> callback-driven API), and it prevents returning from inside the block
>> without the use of exceptions.
>> -----
>>
>> Isiah Meadows
>> [email protected]
>>
>>
>> On Thu, Dec 29, 2016 at 9:05 AM, Raul-Sebastian Mihăilă
>> <[email protected]> wrote:
>>>
>>> I agree, but note that a resolved promise is not the same as a fulfilled
>>> promise (https://tc39.github.io/ecma262/#sec-promise-objects).
>>>
>>> On Thu, Dec 29, 2016 at 11:40 AM, Jordan Harband <[email protected]>
>>> wrote:
>>>>
>>>> You'd need to wrap the body of your `open` function in a try/finally,
>>>> and
>>>> do the `fsp.close` in the `finally` block - but otherwise that would
>>>> certainly work, provided that the promise returned from `func` did
>>>> actually
>>>> settle (resolve or reject).
>>>>
>>>
>>> _______________________________________________
>>> es-discuss mailing list
>>> [email protected]
>>> https://mail.mozilla.org/listinfo/es-discuss
>>>
>> _______________________________________________
>> es-discuss mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
>
>



---------- Forwarded message ----------
From: Isiah Meadows <[email protected]>
To: J Decker <[email protected]>
Cc: "Raul-Sebastian Mihăilă" <[email protected]>, es-discuss <
[email protected]>
Date: Sat, 31 Dec 2016 11:33:45 -0500
Subject: Re: Resource management
Not enough. Not looking for an `await` replacement, but something
closer to Python's `with` statement or Java's `try`-with-resources.
Or, if you want something

Python: http://preshing.com/20110920/the-python-with-statement-by-example/
Java: https://docs.oracle.com/javase/tutorial/essential/
exceptions/tryResourceClose.html

JavaScript's idioms tend towards Python, Java, C#, etc. in how
resources are handled, so things like Ruby's `begin`-`ensure` wouldn't
work as well (that was where I got my generator workaround from,
actually, and as you can see, it's not exactly very obvious).
-----

Isiah Meadows
[email protected]


On Fri, Dec 30, 2016 at 2:03 AM, J Decker <[email protected]> wrote:
> Just a shot; but something ilke deasync ?
> https://www.npmjs.com/package/deasync
>
> it's not so much about ordering wait in the current code, but the current
> code within outer code that's the issue somehow?



---------- Forwarded message ----------
From: Isiah Meadows <[email protected]>
To: Alexander Jones <[email protected]>
Cc: "[email protected]" <[email protected]>
Date: Sat, 31 Dec 2016 12:19:32 -0500
Subject: Re: Weak Reference proposal
That is a concern largely independent of my need for weak references
(despite the relation). I can still implement a basic tiered
mark-and-sweep without weak references, given I can already destroy
things manually with just the ID. All I want is a way to implicitly
call that destructor within the individual process.

-----

Isiah Meadows
[email protected]


On Sat, Dec 31, 2016 at 9:23 AM, Alexander Jones <[email protected]> wrote:
> Please correct me Isiah/Steve - but I think the problem Steve is talking
> about is *cross-process* cycles. Without an inter-process protocol to
> express the referencing graph, or otherwise negotiate cycles for GC,
you'll
> never have a way to reclaim them. Each side thinks the other side is still
> needing the resource.
>
> Cheers
>
> On 31 December 2016 at 13:48, Isiah Meadows <[email protected]>
wrote:
>>
>> For my particular case, yes it is. Everything mirrored have globally
>> unique IDs assigned to them, managed independently of the child
>> process (in most cases), and the state is tied to the ID, not the
>> value, so I only need a weak reference to clear the backing ID and its
>> associated state. And reference cycles within the process are
>> mitigated by the existing mark-and-sweep derivatives engines already
>> use.
>> -----
>>
>> Isiah Meadows
>> [email protected]
>>
>>
>> On Tue, Dec 27, 2016 at 4:34 PM, Steve Fink <[email protected]> wrote:
>> > On 12/27/2016 04:45 AM, Isiah Meadows wrote:
>> >
>> > The weak reference proposal hasn't seen a lot of activity, and I
haven't
>> > found much news elsewhere on it. What's the status on it?
>> >
>> > Where I'm building a language-integrated process pool in Node.js,
>> > complete
>> > with shared "references" and async iterator support, I really badly
need
>> > weak references to avoid otherwise inevitable memory leaks across
>> > multiple
>> > processes if the references aren't explicitly released. So far, my only
>> > option is to take a native dependency (I have no other dependencies),
>> > but
>> > that's very suboptimal, and it eliminates the possibility of porting to
>> > browsers. So I really badly need language-level weak references.
>> >
>> >
>> > Would weak references be enough to solve cross-process garbage
>> > collection?
>> > How would you recover a cycle of references among your processes?
>> >
>> >
>> > _______________________________________________
>> > es-discuss mailing list
>> > [email protected]
>> > https://mail.mozilla.org/listinfo/es-discuss
>> >
>> _______________________________________________
>> es-discuss mailing list
>> [email protected]
>> https://mail.mozilla.org/listinfo/es-discuss
>
>


_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to